1、国家二级 C语言机试(操作题)模拟试卷 290及答案与解析 一、程序填空题 1 下列给定程序中,函数 fun的功能是:找出 100 x(x999)之间各位上的数字之和为 15的所有整数,并在屏幕输出;将符合条件的整数的个数作为函数值返回。 例如,当 n值为 500时,各位数字之和为 15的整数有: 159、 168、 177、 186、195、 249、 258、 267、 276、 285、 294、 339、 348、 357、 366、 375、 384、 393、429、 438、 447、 456、 465、 474、 483、 492,共有 26个。 请在程序的下画线处填入正确的内
2、容并将下画线删除,使程序得出正确的结果。 注意:部分源程序给出如下。 不得增行或删行,也不得更改程序的结构 ! 试题程序: #include stdio h int fun(int x) int n, s1, s2, s3, t ; *found* n=【 1】 ; t=100; *found* while(t =【 2】 ) s1=t 10; s2=(t 10) 10; s3=t 100; if(s1+s2+s3=15) printf(“ d“, t); n+; *found* 【 3】 ; return n; main() int x= 1; while(x 999x 0) printf(
3、“Please input(0 x =999): “); scanf(“ d“, x); printf(“ nThe result is: d n“, fun(x); 二、程序修改题 2 给定程序 MODI1 C中,函数 fun的功能是求矩阵 (二维数组 )aNN中每行的最小值,结果存放到数组 b中。假如:若 a= 则结果应为 1, 5, 9,13,请改正函数 fun中指定部位的错误,使它能得出正确的结果。注意:不要改动main函数,不得增行或删行,也不得更改程序的结构。试题程序: #includestdio h #define N 4void fun(int aN, int b) int i
4、, j; for(i=0; i N; i+) *found* bi=a00; *found* for(j=l; j N 1; j+) *found* if(bi aij) bi=aij, main()int aNN=1, 4, 3, 2, 8, 6, 5, 7), 11, 10, 12,9, 13, 1 6, 14, 15), bN; int i; fun(a, b); for(i=0; i N; i+) printf(“d, “, bi); printf(“ n“); 三、程序设计题 3 编写函数 fun,其功能是:根据以下公式求 P的值,结果由函数值带回。 m与 n为两个正整数且要求 m
5、n。 例如: m=12, n=8时,运行结果为495 000000。注意:部分源程序在文件 PROG1 C中。请勿改动主函数 main和其他函数中的任何内容,仅在函数 fun的花括号中填入你编写的若干语句。试题程序: #include stdio h float fun(int m, int n)main() *主函数 * void NONO(); printf(“P= f n“, fun(12, 8); NONO(); void NONO() *本函数用于打开文件,输入数据,调用函数,输出数据,关闭文件。 * FILE *fp, *wf; int i, m, n; float s; fp=f
6、open(“in dat“, “r“); wf=fopen(“out dat“, “w“); for(i=0 ; i 10; i+) fscanf(fP, “ d, d“, m, n); s=fun(m, n); fprintf(wf, “ f n“, s); fclose(fp); fclose(wf); 国家二级 C语言机试(操作题)模拟试卷 290答案与解析 一、程序填空题 1 【正确答案】 (1)0 (2)x (3)t+ 【试 题解析】 填空 1:变量 n用于存放符合条件的整数的个数,应赋初值为 0。 填空 2:根据题目要求,确定循环变量 t的取值范围为 t =x。 填空 3:循环变量
7、 t自增 1操作。 二、程序修改题 2 【正确答案】 (1)bi=ai0; (2)for(j=1; j N; j+) (3)if(bi aij) 【试题解析】 数组 b存放每行的最小值,针对二维数组使用二层循环,在第一层循环的开始将每行的第 1个数赋给数组 b相应的元素,在第二层循环中,数组 b中的元素依次与本行中的每个元素进行比较,找到一行 中的最小值存入数组 b。 (1)bi存放二级数组 a每一行中第 1个元素值,表示为 ai0。 (2)每行元素的第 1个值要和这一行中的每个元素进行比较,条件 j N可使 aij取到最后元素,而条件 j N 1使 aij最终取得倒数第 2个元素。 (3)因
8、为是找最小值,所以当 bi大于其后的数值时说明它不是最小,要把比较中较大的值赋给它。 三、程序设计题 3 【正确答案】 long jc(int m) long s=1 ; int i; for(i=1; i =m; i+)s=s*i; return s; float fun(int m, int n) float p; p=1 0*jc(m) jc(n) jc(m n); return p; 【试题解析】 本题考查算术运算的算法,先建立一个 jc函数来计算 m的阶乘,函数中使用一个 for循环来计算 m的阶乘,并将计算结果作为函数的返回值。在fun函数中调用 jc函数,来计算三个阶乘的除法。
copyright@ 2008-2019 麦多课文库(www.mydoc123.com)网站版权所有
备案/许可证编号:苏ICP备17064731号-1