1、国家二级 C语言机试(操作题)模拟试卷 325及答案与解析 一、程序填空题 1 下列给定程序中,函数 fun的功能是:把形参 a所指数组中的最大值放在 a0中,接着求出 a所指数组中的最小值放在 a1中,再把 a所指数组元素中的次大值放在 a2中,把 a数组元素中的次小值放在 a3中,依此类推。 例如,若 a所指数组中的数据最初排列为: 1、 4、 2、 3、 9、 6、 5、 8、 7,按规则移动后,数据排列为: 9、 1、 8、 2、 7、 3、 6、 4、 5。形参 n中存放 a所指数组中数据的个数。 请在程序的下画线处填入正确的内容并将下画 线删除,使程序得出正确的结果。 注意:部分源
2、程序给出如下。 不得增行或删行,也不得更改程序的结构 ! 试题程序: #include stdio n #define N 9 *found* void fun(int 【 1】 , int n) int i, j, max, min, px, pn, t; *found* for(i=0; i n一 1; i+=【 2】 ) max=min=ai; px=pn=i; *found* for(j=【 3】 ; j n; j+) if(max aj) max=aj; px=j; if(min aj) min=aj; pn=j; ) if(px!=i) t=ai; ai=max; apx=t; i
3、f(pn=i)pn=px; if(pn!=i+1) t=ai+1; ai+1=min; apn=t; ) main() int bN=1, 4, 2, 3, 9, 6, 5, 8, 7), i; printf(“ nThe original data: n“); for(i=0; i N; i+) printf(“ 4 d“, bi); printf(“ n“); fun(b, N); printf(“ nThe data after moving: n“); for(i=0; i N; i+) printf(“ 4 d“, bi); printf(“ n“); 二、程序修改题 2 下列给定函
4、数中,函数 fun的功能是:统计字符串中各元音字母 (即 A、 E、 I、O、 U)的个数。注意:字母不分大小写。 例如,输入 ”THIs is a boot”,则应输出是 1 0 2 2 0。 请改正程序中的错误,使它能得出正确的结果。 注意:部分源程序在文件 MODI1 C中,不要改动 main函数,不得增行或删行,也不得更改程序的结构 ! 试题程序: 1 #include stdlib h 2 #include conio h 3 #include stdio h 4 *found* 5 fun(char*s, int num5) 6 int k, i=5; 7 for(k=0; k i
5、; k+) 8 *found* 9 numi=0; 10 for(; *s; s+) 11 i= 1; 12 *found* 13 switch(s) 14 casea: caseA: 15 i=0; break; 16 casee: caseE: 17 i=1; break; 18 casei: caseI: 19 i=2; break; 20 caseo: caseO: 21 i=3; break; 22 caseu: caseU: 23 i=4; break; ) 24 25 if(i =0) 26 numi+; 27 28 29 void main() 30 char sl81; nt
6、 numl5, i; 31 system(”CLS”); 31 printf(“ nPlease enter a string: “); 32 gets(s1); 33 fun(s1, num1); 34 for(i=0; i 5; i+) 35 printf(“ d“, num1i); 36 printf(“ n“); 37 三、程序设计题 3 编写函数 fun,它的功能是:求小于形参 n同时能被 3与 7整除的所有自然数之和的平方根,并作为函数值返回。 例如,若 n为 1000时,程序输出应为: s=153 909064。 注意:部分源程序在文件 PROG1 C中。 请勿改动主函数 mai
7、n和其他函数中的任何内容,仅在函数 fun的花括号中填入你编写的若干语句。 试题程序: #include math h #include stdio h double fun(int n) main() *主函数 * void NONO()j printf(“S= f n“, fun(1000); NONO(); void NONO() *本函数用于打开文件,输入数据,调用函数,输出数据,关闭文件。 * FILE*fp, *wf; int i, n ; double s; fp=fopen(“in dat“, “r“); wf=fopen(“out dat“, “W“); for(i=0; i
8、 10; i+) fscanf(fp, “ d“, n); s=fun(n); fprintf(wf, “ f n“, s); fclose(fp); fclose(wf); 国家二级 C语言机试(操作题)模拟试卷 325答案与解析 一、程序填空题 1 【正确答案】 (1)a (2)2 (3)i+1 【试题解析】 填空 1:由 main中的函数调用语句确定函数定义的形式参数。 填空 2: for循环语句中,循环变 量增值为 2。 填空 3:确定 for语句循环变量的初值。 二、程序修改题 2 【正确答案】 (1)void fun(char*s, int num5) (2)numk=0; (3)
9、switch(*s) 【试题解析】 switch语句说明如下: (1)switch后的表达式,可以是整型或字符型,也可以是枚举类型。在新的 ANSIC标准中允许表达式的类型为任何类型。 (2)每个 case后的常量表达式只能是由常量组成的表达式,当 switch后表达式的值与某一个常量表达式的值一致时,程序就转到此 case后的语句开始执行。如果没有一个常量表达式的值与 switch后的值一致,就执行 default后的语句。 (3)各个 case后的常量表达式的值必须互不相同。 (4)各个 case的次序不影响执行结果,一般情况下,尽量将出现概率大的 case放在前面。 (5)在执行完一个 case后面的语句后,程序会转到下一个 case后的语句开始执行,因而必须使用 break语句才能跳出。 三、程序设计题 3 【正确答案】 double fun(int n) double sum=0 0; int i; for(i=21; i =n; i+) if(i 3=0) (i 7=0) sum+=i ; return sqrt(sum); 【试题解析】 本题考查算术运算的算法,首先利用一个 for循环判断小于 n且能同时被 3和 7整除的整数,并将满足条件的整数累加到 sum,之后调用 sqrt函数计算 sum的平方根,并作为函数的返回值。
copyright@ 2008-2019 麦多课文库(www.mydoc123.com)网站版权所有
备案/许可证编号:苏ICP备17064731号-1