1、二级 C 语言机试 7 及答案解析(总分:100.00,做题时间:90 分钟)一、B填空题/B(总题数:1,分数:30.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 1000 int fun(int xx,int bb,int num) int i,n=0; int g,b; for(i=0;inum;i+) g=U 【1】 /U; b=xxi/100; if(g=b) U【2】 /U; returnU 【3】 /U; main() int xx8=135,787,232,222,424,333, 141,541; int YYN; int num=0,n=0,i=0; num=8; clrscr(); printf(“*
3、 original data */n“); for(i=0;inum;i+) printf(“%u“,xxi); printf(“/n/n/n“); n=fun(xx,yy,num); printf(“/nyy=“); for(i=0;in;i+) printf(“%u“,YYi); (分数:30.00)填空项 1:_二、B改错题/B(总题数:1,分数:30.00)2.下列给定程序中函数 fun()的功能是计算 1/n!的值。 例如:给 n 输入 5,则输出 0.0083330 请改正程序中的错误,使它能得到正确结果。 注意:不要改动 main 函数,不得增行或删行,也不得更改程序的结构。 试
4、题程序: #include stdio.h #include conio.h /*+*found*/ 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=0 s=sqrt(s); /*对 s 求平方根*/ return s; 解析本题的解题思路是逐个取得从。0-n 之间的所有数,对每次取得的数进行条件判断,条件是既能被 5 整除同时又能被 11 整除,注意:这两个条件要求同时成立,因此用到了“&”运算符。满足条件,该数就被累加到 s 中去,求出所有符合条件的数后,用 sqrt()函数(包含于头文件math.h中)对 s 求平方根。