下列给定程序中,函数fun()的功能是:输出M行N列整数方阵,然后求两条对角线上的各元素之和,返回此和数。 请改正程序中的错误,使它能得出正确的结果。 注意:不要改动main函数,不得增行或删行,也不得更改程序的结构. 试题程序: #include <conio.h> #include <stdio.h> #define M 5 /**********************************/ iht 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++) /**********************************/ printf("%4f",xx[i][j]); printf("\n"); } for(i=0;i<n;i++) sum+=xx[i][i]+xx[i][n-i-1]; return(sum);}main (){ 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}};clrscr();printf("\nThe sum of all elements on 2diagnals is %d",fun(M, aa));}
参考答案:错误: int fun(iht n,intxx[][]) 正确: int ltm(iht mint r.x[][M])
解析:(2)错误: printf("%4f,f’,xx[i]fj]); 正确: printf("%4d",xx[i][j]); 该题错误比较隐蔽,一般的C语言上机考试很少涉及printf顺数中的错误,在这里,我们只要明白“d”和“f”的区别就OK了。格式字符d表示:以带符号的十进制形式输出整数(正整数不输出符号);格式字符f表示;以小数形式输出单、双精度,隐含输出6位小数。