所在位置:论坛首页 -> 计算机科学与技术 -> 程序设计 -> c语言习题答案(第6章,新版第7章)(潭浩强,清华出版社) |
第六章 数组
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;
}
}
操作选项: 评分 加精 解精 奖惩 设专题 设公告 解公告 固顶 总固顶 解固顶 结帖 解结帖 锁帖 解锁 移帖 删帖 |
|