Loading...
  所在位置:论坛首页 -> 计算机科学与技术 -> 程序设计 -> c语言习题答案(第6章,新版第7章)(潭浩强,清华出版社)
回复

c语言习题答案(第6章,新版第7章)(潭浩强,清华出版社)

作者:pp 时间:2007-12-15 14:39:56 收藏 编辑

第六章  数组
6.1
 #include <math.h>
 #define N 101
 main()
 { int i,j,line,a[N];
  for (i=2;i<N;i++)  a[i]=i;
  for (i=2;i<sqrt(N);i++)
    for (j=i+1;j<N;j++)
      {if(a[i]!=0 && a[j]!=0)
         if (a[j]%a[i]==0)
            a[j]=0;      }
  printf("\n");
  for (i=2,line=0;i<N;i++)
  {  if(a[i]!=0)
       {  printf("%5d",a[i]);
          line++;  }
     if(line==10)
       {  printf("\n");
          line=0;  }
   }
}

6.2
#define N 10
main()
{int i,j,min,temp,a[N];
 for(i=0;i<N;i++)
   scanf("%d",&a[i]);
 for(i=0;i<N-1;i++)
   {min=i;
    for(j=i+1;j<N;j++)
      if(a[min]>a[j])min=j;
    temp=a[i];
    a[i]=a[min];
    a[min]=temp;
    }
 for(i=0;i<N;i++)
   printf("%5d",a[i]);
}
 
6.3
main()
{float a[3][3],sum;
 int i,j;
 for(i=0;i<3;i++)
   for(j=0;j<3;j++)
     {scanf("%f",&sum);
      a[i][j]=sum;
     }
 for(i=0;i<3;i++)
   sum=sum+a[i][i];
 printf("sum=%f",sum);
}

6.4
main()
{int a[11]={1,4,6,9,13,16,19,28,40,100};
 int temp1,temp2,number, end,i,j;
 scanf("%d",&number);
 end=a[9];
 if(number>end) a[10]=number;
 else
   {for(i=0;i<10;i++)
      {if(a[i]>number)
        {temp1=a[i];
         a[i]=number;
         for(j=i+1;j<11;j++)
           {temp2=a[j];
            a[j]=temp1;
            temp1=temp2;
           }
         break;
         }
       }
     }
 for(i=0;i<11;i++)
   printf("%6d",a[i]);
}

6.5
#define N 5
main()
{int a[N]={8,6,5,4,1},i,temp;
 for(i=0;i<N/2;i++)
   {temp=a[i];
    a[i]=a[N-i-1];
    a[N-i-1]=temp;
    }
 for(i=0;i<N;i++)
   printf("%4d",a[i]);
}

6.6
#define N 11
main()
{int i,j,a[N][N];
 for(i=1;i<N;i++)
   {a[i][i]=1;
    a[i][1]=1;
   }
 for(i=3;i<N;i++)
   for(j=2;j<i;j++)
     a[i][j]=a[i-1][j-1]+a[i-1][j];
 for(i=1;i<N;i++)
   {for(j=1;j<=i;j++)
      printf("%6d",a[i][j]);
    printf("\n");
   }
}

6.7
main()
{int a[16][16],i,j,k,p,m,n;
 p=1;
 while(p==1)
   {scanf("%d",&n);
    if((n!=0)&&(n<=15)&&(n%2!=0))p=0;
   }
 for(i=1;i<=n;i++)
   for(j=1;j<=n;j++)
     a[i][j]=0;
 j=n/2+1;
 a[1][j]=1;
 for(k=2;k<=n*n;k++)
   {i=i-1;
    j=j+1;
    if((i<1)&&(j>n))
      {i=i+2;
       j=j-1;
      }
    else
      {if(i<1)i=n;
       if(j>n)j=1;
      }
    if(a[i][j]==0)a[i][j]=k;
    else
      {i=i+2;
       j=j-1;
       a[i][j]=k;
      }
    }
 for(i=1;i<=n;i++)
   {for(j=1;j<=n;j++)
      printf("%3d",a[i][j]);
    printf("\n");
   }
}

6.8
#define N 10
#define M 10
main()
{int i,j,k,m,n,flag1,flag2,a[N][M],max,maxi,maxj;
 scanf("%d,%d",&n,&m);
 for(i=0;i<n;i++)
   for(j=0;j<m;j++)
     scanf("%d",&a[i][j]);
 flag2=0;
 for(i=0;i<n;i++)
   {max=a[i][0];
    for(j=0;j<m;j++)
      if(max<a[i][j])
        {max=a[i][j];
         maxj=j;
        }
    for(k=0,flag1=1;k<n&&flag1;k++)
      if(max>a[k][maxj])flag1=0;
    if(flag1)
      { printf("\na[%d][%d]=%d\n",i,maxj,max);
        flag2=1;
      }
    }
 if(!flag2) printf("NOT");
}

6.9
#include<stdio.h>
#define N 15
main()
{int i,j,number,top,bott,min,loca,a[N],flag;
 char c;
 for(i=0;i<=N;i++)
   scanf("%d",&a[i]);
 flag=1;
 while(flag)
   {scanf("%d",&number);
    loca=0;
    top=0;
    bott=N-1;
    if((number<a[0])||(number>a[N-1]))
      loca=-1;
    while((loca==0)&&(top<=bott))
      {min=(bott+top)/2;
       if(number==a[min])
         {loca=min;
          printf("number=%d,loca=%d\n",number,loca+1);
         }
       else if(number<a[min])
         bott=min-1;
       else
         top=min+1;
       }
     if(loca==0||loca==-1)
       printf("%d not in table\n",number);
     printf("continue Y/N or y/n\n");
     c=getchar();
     if(c=='N'||c=='n')flag=0;
    }
}

高级回复

操作选项: 评分 加精 解精 奖惩 设专题 设公告 解公告 固顶 总固顶 解固顶 结帖 解结帖 锁帖 解锁 移帖 删帖
  首页
Copyright 2006-2012 HistoryCreator.com Powered By: BBSGood 5
吉ICP备06005902号