下列给定程序中,函数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 2
diagnals is %d",fun(M, aa));
参考答案:错误: int fun(iht n,intxx[][]) 正确: int ltm(iht mint r.x[][M])
(B)错误: printf("%Df,f’,xx[i]fj]); 正确: printf("%Dd",xx[i][j]);
解析: 该题错误比较隐蔽,一般的C语言上机考试很少涉及printf顺数中的错误,在这里,我们只要明白“d”和“f”的区别就OK了。格式字符d表示:以带符号的十进制形式输出整数(正整数不输出符号);格式字符f表示;以小数形式输出单、双精度,隐含输出6位小数。