1、国家二级 C语言机试(操作题)模拟试卷 322及答案解析(总分:6.00,做题时间:90 分钟)一、程序填空题(总题数:1,分数:2.00)1.围绕山顶一圈有 N个山洞,编号为 0、1、2、3、N1,有一只狐狸和一只兔子在洞中居住。狐狸总想找到兔子并吃掉它,它的寻找方法是先到第一个洞(即编号为 0的洞)中找;再隔 1个洞,即到编号为 2的个洞中找;再隔 2个洞,即到编号为 5的洞中找;下次再隔 3个洞;即到编号为 9的洞中找;。若狐狸找一圈,请为兔子指出所有不安全的洞号。程序中用 a数组元素模拟一个洞,数组元素的下标即为洞号,数组元素中的值为 0时,表示该洞安全,为 1时表示该洞不安全。若形参
2、 n的值为 30时,不安全的洞号是 0、2、5、9、14、20、27。 请在程序的下划线处填入正确的内容并把下划线删除,使程序得出正确的结果。 注意:源程序存放在考生文件夹下的 BLANK1C 中。不得增行或删行,也不得更改程序的结构! 试题程序: #includestdioh #define N 100 void fun(int*a,int n) int i,t; for(i=0;in;i+) *found* ai= 【1】 ; i=0; *found* 【2】 =1; while(in) ai=1; t+; *found* i= 【3】 ; main() int aN,i,n=30; fu
3、n(a,n); for(i=0;in;i+) if(ai=1) printf(“不安全的洞号是:dn“,i); (分数:2.00)_二、程序修改题(总题数:1,分数:2.00)2.下列给定程序的功能是:读入一个英文文本行,将其中每个单词的第一个字母改成大写,然后输出此文本行(这里”单词”是指由空格隔开的字符串)。例如,若输入“I am a student to takethe examination“,则应输出“I Am A Student To TakeThe Examination“。请改正程序中的错误,使程序能得出正确的结果。注意:部分源程序在文件 MODI1C 中,不要改动 main函
4、数,不得增行或删行,也不得更改程序的结构!试题程序:1 #includestdlibh2 #includestringh3 #includeconioh4 #includectypeh5 #includestdioh6 #includestringh7 *found*8 void upfst(char P)9 10 int k=0;11 for(;*P;P+)12 if(k)13 14 if(*P=)15 k=0;16 17 else18 19 if(*P!=)20 21 k=1;22 *P=toupper(*P);23 24 25 26 void main()27 28 char chrst
5、r81j29 System(“CLS“);30 printf(“nPlease enter an English text;lihe:“);31 gets(chrstr);32 printf(“nBofore changing:ns“,chrstr);33 upfst(chrstr);34 printf(“nAfter changing:nsn“,chrstr);35 (分数:2.00)_三、程序设计题(总题数:1,分数:2.00)3.请编写函数 fun,其功能是:计算并输出下列多项式的值。 (分数:2.00)_国家二级 C语言机试(操作题)模拟试卷 322答案解析(总分:6.00,做题时间:
6、90 分钟)一、程序填空题(总题数:1,分数:2.00)1.围绕山顶一圈有 N个山洞,编号为 0、1、2、3、N1,有一只狐狸和一只兔子在洞中居住。狐狸总想找到兔子并吃掉它,它的寻找方法是先到第一个洞(即编号为 0的洞)中找;再隔 1个洞,即到编号为 2的个洞中找;再隔 2个洞,即到编号为 5的洞中找;下次再隔 3个洞;即到编号为 9的洞中找;。若狐狸找一圈,请为兔子指出所有不安全的洞号。程序中用 a数组元素模拟一个洞,数组元素的下标即为洞号,数组元素中的值为 0时,表示该洞安全,为 1时表示该洞不安全。若形参 n的值为 30时,不安全的洞号是 0、2、5、9、14、20、27。 请在程序的下
7、划线处填入正确的内容并把下划线删除,使程序得出正确的结果。 注意:源程序存放在考生文件夹下的 BLANK1C 中。不得增行或删行,也不得更改程序的结构! 试题程序: #includestdioh #define N 100 void fun(int*a,int n) int i,t; for(i=0;in;i+) *found* ai= 【1】 ; i=0; *found* 【2】 =1; while(in) ai=1; t+; *found* i= 【3】 ; main() int aN,i,n=30; fun(a,n); for(i=0;in;i+) if(ai=1) printf(“不安
8、全的洞号是:dn“,i); (分数:2.00)_正确答案:(正确答案:(1)0 (2)t (3)i+t)解析:解析:首先为数组所有元素赋初值 0,利用循环为符合条件的数组赋值为 1,并计算下一个数据的下标。设置一个变量存放间隔数,每次循环间隔数加 1。本次下标加间隔数加 1为下一个下标。 填空 1:利用循环为数组所有元素赋值为 0。 填空 2:变量 t为间隔数,在循环过程中每次加 1,设定初始值为11。 填空 3:下一个数组下标为本次的下标加间隔数加 1的值。二、程序修改题(总题数:1,分数:2.00)2.下列给定程序的功能是:读入一个英文文本行,将其中每个单词的第一个字母改成大写,然后输出此
9、文本行(这里”单词”是指由空格隔开的字符串)。例如,若输入“I am a student to takethe examination“,则应输出“I Am A Student To TakeThe Examination“。请改正程序中的错误,使程序能得出正确的结果。注意:部分源程序在文件 MODI1C 中,不要改动 main函数,不得增行或删行,也不得更改程序的结构!试题程序:1 #includestdlibh2 #includestringh3 #includeconioh4 #includectypeh5 #includestdioh6 #includestringh7 *found*
10、8 void upfst(char P)9 10 int k=0;11 for(;*P;P+)12 if(k)13 14 if(*P=)15 k=0;16 17 else18 19 if(*P!=)20 21 k=1;22 *P=toupper(*P);23 24 25 26 void main()27 28 char chrstr81j29 System(“CLS“);30 printf(“nPlease enter an English text;lihe:“);31 gets(chrstr);32 printf(“nBofore changing:ns“,chrstr);33 upfst
11、(chrstr);34 printf(“nAfter changing:nsn“,chrstr);35 (分数:2.00)_正确答案:(正确答案:void upfst(char*p)解析:解析:主函数中 fun函数的调用方式说明函数 fun的参数应为指针类型。三、程序设计题(总题数:1,分数:2.00)3.请编写函数 fun,其功能是:计算并输出下列多项式的值。 (分数:2.00)_正确答案:(正确答案:double fun(int n) int i; double s=00; for(i=1;i=n;i+) s=s+10(i*(i+1);*求级数的和* return S; )解析:解析:本题要求级数的和,由多项式的形式可知,应使用循环语句实现,循环的通项为 1n(n+1)。本程序首先定义了和变量及循环变量,然后运用一个 for语句求出级数的和,最后将和变量 s返回。