2、下列程序的功能是计算矩阵A的主对角线上的元素之和并输出.该程序有三处错误,请指出错误并修改正确.
main()
{ int a[4][4]={1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16},i,j;
int sum=0;
for (i=1;i<=4;i++)
for (j=0;j<4;j++);
if (i==j)
sum=a[j];
printf(“sum=%d\n”,sum);
}
错误1: 将第 4 行 for (i=1;i<=4;i++) 修改为 for (i=0;i<4;i++)
错误2: 将第 5 行 for (j=0;j<4;j++); 修改为 for (j=0;j<4;j++)
错误3: 将第 7 行 sum=a[j]; 修改为 sum+=a[ i ][ j ];
3、下面的程序用来求1—100中所有奇数之和,结果放入变量sum中,请找出并修改其中的三处错误.
main()
{
int i, sum;
sum=1;
for (i=0;i<100;i+=2)
sum+=i;
printf("sum=%f\n",sum);
}
错误1: 将第4行 sum=1;修改为sum=0;
错误2: 将第5行for (i=0;i<100;i+=2)修改为 for (i=1;i<100;i+=2)或for (i=1;i<=99;i+=2)
错误3: 将第7行printf("sum=%f\n",sum);修改为printf("sum=%d\n",sum);
4、下面程序的功能是输入100个整数,存入一维数组a[100]中,并将其中的元素按降序排序输出,请指出其中的三处错误并修改正确。
main()
{
int a[100],i,j,t;
for(i=0;i<=100;i++)
scanf("%d",a);。。。。。。。。。。。。。。。。。。。。。。。。。scanf("%d",a[ i ]);
for (i=0;i<99;i++)
for(j=i+1;j<100;j++)
if (a<a[j])。。。。。。。。。。。。。。。。。。。。。。。。。。。。if (a[ i ]<a[j])
{
t=a;。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。t=a[ i ] ;
a[j]=a;。。。。。。。。。。。。。。。。。。。。。。。。。。。。。a[j]=a[ i ];
a[j]=t;
}
for (i=0;i<100;i++)
printf("%d ",a);。。。。。。。。。。。。。。。。。。。。。。。。。printf("%d ",a[ i ]);
}
错误1: 将第 4 行 for(i=0;i<=100;i++) 修改为 for(i=0;i<100;i++) 或 for(i=0;i<=99;i++)
错误2: 将第 5 行 scanf("%d",a); 修改为 scanf("%d",&a[ i ]);
错误3: 将第 11 行 a[j]=a; 修改为 a[ i ]=a[j];
我怀疑你是不是打掉了所有的[ i ]
5、以下程序的功能是输出Fibonacci数列(这个数列的第一项和第二项都为1,从第三项开始,以后每一项都是它前面两项的和)的前20项。请找出其中的三处错误,并修改正确。
main()
{
int f[20]={1,1};
for(i=0;i<20;i++)
f=f[i-2]+f[i-1]; 。。。。。。。。。。。。。。。。。。。。。。。 f[ i ]=f[i-2]+f[i-1];
for(i=0;i<20;i++);
printf("%9d",f);。。。。。。。。。。。。。。。。。。。。。printf("%9d",f[ i ]);
}
6、下列程序的功能是计算矩阵A的主对角线上的元素之和并输出。该程序有三处错误,请指出错误并修改正确。
main()
{
int a[3][3]={1,3,5,7,9,11,13,15,17},i,j;
int sum=0;
for (i=1;i<=3;i++)
for (j=1;j<3;j++)
if (i==j)
sum=a[j];
printf(“sum=%d\n”,sum);
}
错误1: 将第 5 行 for (i=1;i<=3;i++) 修改为 for (i=0;i<3;i++)
错误2: 将第 6 行 for (j=1;j<3;j++) 修改为 for (j=0;j<3;j++)
错误3: 将第 8 行 sum=a[j]; 修改为 sum+=a[ i ][ j ];
7、比赛有7个评委给每一位参赛者打分,去掉一个最高分和去掉一个最低分,得到该参赛者的平均分。以下程序的功能是求参赛选手的平均分,请找出其中的三处错误,并修改正确。
main()
{
int i;
float a[7],max, min, aver=0;
for (i=0;i<7;i++)
scanf("%f", a);
max=min=aver=a[0];
for (i=1;i<7;i++);
{
if (max<a) max=a;
if (min>a) min=a;
aver=a;
}
aver=(aver-max-min)/5;
printf("Mark=%.2f\n",aver);
}
错误1: 将第 6 行 scanf("%f", a); 修改为 scanf("%f", &a[ i ]);
错误2: 将第 12 行 aver=a; 修改为 aver+=a[ i ];
错误3: 将第 8 行 for (i=1;i<7;i++); 修改为 for (i=1;i<7;i++)