1、二级 C语言机试-67 及答案解析(总分:100.00,做题时间:90 分钟)一、填空题(总题数:1,分数:33.00)1.请补充函数 fun(),该函数的功能是判断一个数的个位数字和百位数字之和是否等于其十位上的数字,是则返回“yes!”,否则返回“no!”。注意:部分源程序给出如下。请勿改动主函数 main和其他函数中的任何内容,仅在函数 fun()的横线上填入所编写的若干表达式或语句。试题程序:#include stdioh#include conlohchar *fun(int n)int g,s,b;g=n%l0;s=n/10%10;b= 【1】 ;if(g+b)=s)return
2、【2】 ;elsereturn 【3】 ;main()int num=0;clrscr();printf(“*Input data*/n“);scanf(“%d“,jn-1;j+); 正确:for(j=0;jn-1;j+)(2) 错误:ap=t 正确:aj=t;)解析:解析 错误 1:根据 C语言语法,for 循环中循环条件后不加分号,除非做空操作。错误 2:将两数进行交换的常用语句,借助第三个变量。三、编程题(总题数:1,分数:34.00)3.下列程序定义了 NXN的二维数组,并在主函数中赋值。请编写函数 fun(),函数的功能是求出数组周边元素的平方和并作为函数值返回给主函数中的 s。例如
3、:若 a数组中的值为a=0 1 2 7 91 11 21 5 52 21 6 11 19 7 9 10 25 4 1 4 1 则返回主程序后 s的值应为 310。注意:部分源程序给出如下。请勿改动主函数 main和其他函数中的任何内容,仅在函数 fun的花括号中填入所编写的若干语句。试题程序:#include stdioh#includeconioh#includestdlibh#define N 5int fun (int wN)main()int aNN=0,1,2,7,9,1,11,21,5,5,2, 21,6,11,1,9,7,9,10,2,5,4,1,4,1;int i,j;int
4、s;clrscr();printf(“*The array*+*/n“);for (i=0;iN;i+)for(j=0;jN;i+)printf(“%4d“,aij);printf(“/n“);s=fun(a);printf(“*THE RESULT*/n“);printf(“The sum is:%d/n“,s);(分数:34.00)_正确答案:(int fun(int w)N) int i,j,k=0;int s=0;for(i=0;iN;i+)for(j=0;jN;j+)if(i=0|i=N-1|j=0|j=N-1) /*只要下标中有一个为 0或 N-1,则它一定是周边元素*/s=s+wij*wij; /*将周边元素求平方和*/return s; /*返回周边元素的平方和*/)解析:解析 该题采用逐一判断的方式,周边元素的下标一定有一个是 0或 N-1,且只要下标中有一个为 0或 N-1,则它一定是周边元素。