填空题
给定程序MODI1.C中函数fun的功能是:输出M行M列整数方阵,然后求两条对角线上元素之和,返回此和数。
请改正程序中的错误,使它能得出正确的结果。
注意:不要改动main函数,不得增行或删行,也不得更改程序的结构!
给定源程序:
#include<stdio.h>
#define M 5
/**********found**********/
int fun(int n, int xx[][])
{ int i, j, sum=0;
printf("/nThe %d x %d matrix:/n", M, M);
for(i=0; i<M; i++)
{ for(j=0; j<M; j++)
/**********found**********/
printf("%f", xx[i][j]);
printf("/n");
}
for(i=0; i<n; i++)
sum+=xx[i][i]+xx[i][n-i-1];
return(sum);
}
main 1
{ int aa[M][M]={{1, 2, 3, 4, 5}, {4, 3, 2, 1, 0},
{6, 7, 8, 9, 0}, {9, 8, 7, 6, 5}, {3, 4, 5, 6, 7}};
printf("/nThe sum of all elements on 2 diagnals is %d.", fun(M, aa));
}
【正确答案】
【答案解析】(1)int fun(int n, int xx[][M])
(2)printf("%d", xx[i][j]);
答案考生文件夹 [解析] (1)当用数组作为函数的形参时,可以不定义数组的行数,但一定要定义数组的列数。
(2)该处错误比较隐蔽,一般C语言上机考试很少涉及printf函数中的错误,此处只要明白"d"和"f"的区别就可以了。格式字符d表示以带符号的十进制形式输出整数(正整数不输出符号);格式字符f表示以小数形式输出单精度、双精度数据,隐含输出6位小数。