1、二级 C 语言机试-104 及答案解析(总分:100.00,做题时间:90 分钟)一、填空题(总题数:1,分数:33.00)1.数组 xxN保存着一组 3 位数的无符号正整数,其元素的个数通过变量 num 传入函数 fun()。请补充函数 fun(),该函数的功能是:从数组 xx 中找出个位和百位的数字相等的所有无符号整数,结果保存在数组 yy 中,其个数由函数 fun()返回。例如:当 xx8=135,78,72,32,222,424,333,141,541 时, bb6=787,232,222,424,333,141。注意:部分源程序给出如下。请勿改动主函数 main 和其他函数中的任何内
2、容,仅在函数 fun()的横线上填入所编写的若干表达式或语句。试题程序:#include conio.h#define N 1000int fun(int xx,int bb,int num)int i,n=0;int g,b;for(i=0;inum;i+)g= 【1】 ;b=xxi/100;if(g=b)【2】 ;return 【3】 ;main()int xx8=135,787,232,222,424,333,141,541;int YYN;int num=0,n=0,i=0;num=8;clrscr();printf(“* original data */n“);for(i=0;inu
3、m;i+)printf(“%u“,xxi);printf(“/n/n/n“);n=fun(xx,yy,num);printf(“/nyy=“);for(i=0;in;i+)printf(“%u“,YYi);(分数:33.00)填空项 1:_二、改错题(总题数:1,分数:33.00)2.下列给定程序中函数 fun()的功能是计算 1/n!的值。例如:给 n 输入 5,则输出 0.0083330请改正程序中的错误,使它能得到正确结果。注意:不要改动 main 函数,不得增行或删行,也不得更改程序的结构。试题程序:#include stdio.h#include conio.h/*+*found*/
4、int fun(int n)double result=1.0;if(n=0)return 1.0;while(n1 int i;for(i=0;in;i+) /*从 0n 中找到既能被 5 整除同时又能被 11 整除的数,并将这些数求和*/if(i%5=0s=sqrt(s); /*对 s 求平方根*/return s;)解析:解析本题的解题思路是逐个取得从。0-n 之间的所有数,对每次取得的数进行条件判断,条件是既能被 5 整除同时又能被 11 整除,注意:这两个条件要求同时成立,因此用到了“&”运算符。满足条件,该数就被累加到 s 中去,求出所有符合条件的数后,用 sqrt()函数(包含于头文件math.h中)对s 求平方根。