下列给定程序中,函数fun()的功能是:输出M行N列整数方阵,然后求两条对角线上的各元素之和,返回此

题目

下列给定程序中,函数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));

}

参考答案和解析
正确答案:(1)错误: int fun(iht nintxx[][]) 正确: int ltm(iht mint r.x[][M]) (2)错误: printf("%4ff'xx[i]fj]); 正确: printf("%4d"xx[i][j]);
(1)错误: 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位小数。
如果没有搜索结果或未解决您的问题,请直接 联系老师 获取答案。
相似问题和答案

第1题:

给定程序MODll.C中函数fun的功能是:求出以下分数序列的前n项之和。和值通过函数值返回到main函数。

例如,若n=5,则应输出:8.391667。

请改正程序中的错误,使它能计算出正确的结果。

注意:不要改动main函数,不得增行或删行,也不得更改程序的结构!


正确答案:(1)double fun(int n) (2)s=s+(double)a/b;
(1)double fun(int n) (2)s=s+(double)a/b; 解析:本题中函数的功能是求出分数序列的前n项之和。首先根据题干中给出的公式推出每一项之间的关系,求出每一项的表达式,然后求得数列的和。每一项的分母是前一项的分子,分子是前一项分子和分母的和。

第2题:

下列给定程序中,函数proc()的功能是:先从键盘上输入一个3行3列的矩阵的各个元素的值,然后输出主对角线元素之积。 请修改函数proc()中的错误,使它能得出正确的结果。 注意:不要改动main()函数,不得增行或删行,也不得更改程序的结构。 试题程序:


正确答案:
(1)错误:for(i=0;j<3;j++)

第3题:

下列给定程序中,函数proc()的功能是:判断一个整数m是否是素数,若是返回1,否则返回0。在main()函数中,若proc()返回1,则输出″YES″;若proc()返回0,则输出″NO″!

请修改程序中的错误,使它能得出正确的结果。

注意:不要改动main)函数,不得增行或删行,也不得,t更改程序的结构。

试题程序:


正确答案:

(1)错误:k++
正确:k++;
(2)错误:if(m=k)
正确:if(m==k)
【解析】根据C语言的语法规则,每一条语句都要以分号结束,因此,要在语句“k++”之后加上分号。判断变量m与变量k是否相等应该用符号“==”,符号“=”为赋值符号,因此,“if(m=k)”应改为“if(m==k)”。

第4题:

下列给定程序中,函数fun()的功能是:判断一个整数m是否是素数,若是返回l,否则返回0。在main()函数中,若fun()返回1则输出YES,若fun()返回0则输出NO!

请改正程序中的错误,使它能得出正确的结果。

注意:不要改动main函数,不得增行或删行,也不得更改程序的结构.

试题程序:

include <conio.h>

include <stdio.h>

int fun(int m)

{ int k=2;

while (k<=m&&(m%k))

/*************found*********************/

k++

/*************found*********************/

if(m=k)

return 1;

else return O;

}

main ( )

{ iht n;

clrscr ();

printf("\nPlease enter n: ");

scanf ("%d", &n);

if (fun (n)) printf ("YES\n");

else printf ("NO! \n");

}


正确答案:(1)错误:k++ 正确:k++ (2)错误:if(m=k) 正确:if(m==k)
(1)错误:k++ 正确:k++ (2)错误:if(m=k) 正确:if(m==k) 解析:函数fun()的功能是判断m是否为素数:m从2开始作为除数,并对m取余,若不存在一个数使得余数为0,则m为素数,程序的错误在于if(m=k)语句中的逻辑表达式写成了赋值表达式。

第5题:

给定程序中,函数fun的功能是:判定形参a所指的NxN(规定N为奇数)的矩阵是否是“幻方”,若是,函数返回值为1: 不是,函数返回值为O。“幻方”的判定条件是:矩阵每行、每列、主对角线及反对角线上元素之和都相等。

例如,以下3×3的矩阵就是一个“幻方”:

4 9 2

3 5 7

8 1 6

请在程序的下划线处填入正确的内容并把下划线删除,使程序得出正确的结果。

注意:源程序存放在考生文件夹下的BLANKl.C中。

不得增行或删行,也不得更改程序的结构!


正确答案:(1)0 (2)11 (3)1
(1)0 (2)11 (3)1 解析:本题中函数fun的功能是判定形参a所指的N×N的矩阵是否是”幻方”,“幻方"的判定条件是:矩阵每行、每列、主对角线及反对角线上元素之和都相等,因此判断“幻方”对先求每行、每列、主对角及反对角元素和,然后判断是否都相等,都相等则是幻方,否则不是幻方。

第6题:

给定程序MODll.C中fun函数的功能是:求出以下分数序列的前n项之和。

和值通过函数值返回main函数。

例如,若n=5,则应输出:8.391667。

请改正程序中的错误,使它能得出正确的结果。

注意:不要改动main函数,不得增行或删行,也不得更改程序的结构!


正确答案:(1)double fun(int n)(2)c=a;a+=b;b=c;
(1)double fun(int n)(2)c=a;a+=b;b=c; 解析:本题中函数的功能是求出分数序列的前n项之和。首先根据题干中给出的公式推出每一项之间的关系,求出每一项的表达式,然后求得数列的和。每一项的分母是前一项的分子,分子是前一项分子和分母的和。

第7题:

给定程序MODllC中函数fun的功能是:输出M行M列整数方阵,然后求两条对角线上各元素之和,返回此和数。

inClude<coMo.h>

inClude<stdio.h>

dehne M 5

/************fOUnd************/

int fun(int n,int xx[][])

{int i,j,sum=0;

printf("\n The%dx%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( )

{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("\n The sum Of all elements On 2 diagnals is %d."fun(M,aa));

}


正确答案:int fun(int nint xx[][]) 改为 int fun(int nint xx[][M)) printf("%fxx[i][j]); 改为 printf("%d"xx[i][j]);
int fun(int n,int xx[][]) 改为 int fun(int n,int xx[][M)) printf("%f,xx[i][j]); 改为 printf("%d,"xx[i][j]); 解析:二维数组作为函数形参时,二维长度不可缺省,只能省略一维的长度。在格式输出函数中,血型数据输出时对应的控制符是%d.

第8题:

下列给定程序中,函数fun()的功能是:找出一个大于给定整数m且紧随m的素数,并作为函数值返回。

请改正程序中的错误,使它能得出正确的结果。

注意:不要改动main函数,不得增行或删行,也不得更改程序的结构.

试题程序:

include <conio.h>

include <stdio.h>

int fun( int m)

{ int i,k;

for (i=m+1; ;i++)

{ for (k=2;k<i;k++)

/*************found**************/

if (i%k!=0)

break;

/*************found**************/

if (k<i)

return(i);

}

}

main()

{ int n;

clrscr ();

printf("\nPlease enter n: ");

scanf ("%d", &n);

printf ("%d\n",fun(n));

}


正确答案:(1)错误: if(i%k!=0) 正确: if(i%k=0) (2)错误: if(ki) 正确: if(k>=i)
(1)错误: if(i%k!=0) 正确: if(i%k=0) (2)错误: if(ki) 正确: if(k>=i) 解析:也许刚接触C语言的学习者对素数的概念不清楚,在这里说明一下,素数就是质数,本题的任务是随便输入一个整数m,然后在m的后面寻找紧跟m的一个质数,作为函数值返回。
for (i=m+1; ;i++){
是从m后面的一位开始循环,将m后面一位的值赋予i。然后;我们依次判断m后面的一位是否为素数。
for (k=2;ki;k++)
if (i%k==0)
是一个简单的数学判断问题,判断i被赋予的值与k的余数是否为零。

第9题:

下列给定程序中,函数fun()的功能是:输出M行N列整数方阵,然后求两条对角线上的各元素的平方和,返回此和数。

请改正程序中的错误,使它能得到正确结果。

注意:不要改动main函数,不得增行或删行,也不得更改程序的结构。

试题程序:

include <conio.h>

include <stdio.h>

define M 5

int fun(int n,int XX[][M])

{

int i,j,sum=O;

printf("\nThe %d x %d matrix:\n",M,M);

for(i=0;i<N;i++)

{

for(j=0;j<M;j++)

/*************found*************/

printf("%4d",XX[i j]);

/*************found*************/

printf('\n');

}

for(i=0;i<n;i++)

sum+=xx[i][i]*XX[i][i]+XX[i][n-i-1]

*XX[i][n-i-1];

return(sum);

}

main()

{

int aa[M][M)={{3,12,4,24,35},

{11,3, 3,7, 56},{61,27,58,49,24},

{17,28,7,36,85},{15,33,5,24,9}};

clrscr();

printf("\nThe result of all elements on 2

diagnals iS%d",fun(M,aa));

}


正确答案:(1)错误:printf("%4d"xx[ij]); 正确:printf("%4d"xx[i][j]): (2) 错误:printf('\n'); 正确:printr("\n");
(1)错误:printf("%4d",xx[ij]); 正确:printf("%4d",xx[i][j]): (2) 错误:printf('\n'); 正确:printr("\n"); 解析:错误1:此处考查的是对二维数组的引用方法。错误2:此处考查的是输出语句的语法,括号中应该用双引号,而不是单引号。