使用VC++2010打开考生文件夹下modi1中的解决方案。此解决方案的项目中包含一个源程序文件modi1.c。在此程序中,函数fun的功能是:输出M×M整数方阵,然后求两条对角线上元素之和,并作为函数值返回。 请改正程序中的错误,使它能得出正确的

admin2020-06-02  26

问题 使用VC++2010打开考生文件夹下modi1中的解决方案。此解决方案的项目中包含一个源程序文件modi1.c。在此程序中,函数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%dx%d matrix:\n",M,M);
    for(i=0;i<M;i++)
    {
    for(j=0;j<M;j++)
/*********found*********/
    printf("%f",xx[j]);
    printf("\n");
    }
    for(i=0;i<n;i++)
    sum+=xx+xx[n-i-1],
    return(sum);
}
void 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}};
    system("CLS");
    printf("\nThe sum of all elements On 2 diagnals is%ld",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位小数。
转载请注明原文地址:https://jikaoti.com/ti/23G0FFFM
0

最新回复(0)