填空题 1.  下列给定程序中,函数fun的功能是:输出M×M整数方阵,然后求两条对角线上元素之和,并作为函数值返回。
    请改正程序中的错误,使它能得出正确的结果。
    注意:不要改动main函数,不得增行或删行,也不得更改程序的结构!
    试题程序:
    #include<stdlib.h>
    #include<conio.h>
    #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);
    }
    void main()
    {
    int aa[M][M]=f{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}};
    system("CLS");
    printf("\nThe sum of all elements on 2 diagnals is %d",fun(M,aa));
    }
  • 1、
【正确答案】 1、(1)int fun(int n,int xx[][M])
   (2)printf("%d","[i][j]);    
【答案解析】[考点]
   本题考查:函数定义形式;printf格式输出函数,注意其函数形式。
   
   (1)当用数组作为函数的形参时,可以不定义数组的行数,但一定要定义数组的列数。
   (2)该处错误比较隐蔽,一般C语言上机考试很少涉及printf函数中的错误,此处只要明白“d”和“f”的区别就可以了。格式字符d表示以带符号的十进制形式输出整数(正整数不输出符号);格式字符f表示以小数形式输出单精度、双精度数据,隐含输出6位小数。
   printf函数,其一般形式为:printf(“格式控制字符串”,输出表列),其中格式控制字符串用于指定输出格式。格式控制字符串是以%开头的字符串,在%后面跟有各种格式字符,以说明输出数据的类型、形式、长度、小数位数等。
   例如:
   “%d”表示按十进制整型输出;
   “%ld”表示按十进制长整型输出;
   “%f”表示以小数形式输出;
   “%c”表示按字符型输出等。
   非格式字符串在输出时原样输出,在显示中起提示作用。