1、国家二级( C语言)机试模拟试卷 299及答案与解析 一、程序填空题( 30分) 1 给定程序中,函数 fun的功能是:找出 100 999之间 (含 100和 999)所有整数中各位上数字之和为 x(x为一正整数 )的整数,然后输出;符合条件的整数个数作为函数值返回。 例如,当 x值为 5时, 100 999之间各位上数字之和为 5的整数有: 104、 113、122、 131、 140、 203、 212、 221、 230、 302、 311、 320、 401、 410、 500。共有 15个。当 x值为 27时,各位数字之和为 27的整数是: 999。只有 1个。 请在程序的下划线处
2、填入正确的内容并把下划线删除,使程序得出正确的结果。 注意:源程序存放在考生文件夹下的 BLANK1 C中。 不得增行或删行,也不得更改程序的结构 ! #include int fun(int x) int n, s1, s2, s3, t; n=0; t=100; *found* while(t0); “); scanf(“ d“, &x); printf(“ nThe result is: d n“, fun(x); 二、程序修改题( 30分) 2 给定程序 MODll C的功能是:读入一个英文文本行,将其中每个单词的第一个字母改成大写,然后输出此文本行 (这里的 “单词 “是指由空格隔开
3、的字符串 )。 例如,若输入: I am student to take the examination,则应输出: I Am A Student To Take The Examination。 请改正程序中的错误,使程序能得出正确的结果。 注意:不 要改动 main函数,不得增行或删行,也不得更改程序的结构 ! #include #include *found* include *found* upfst(char p) int k=0; for(; *p; p+) if(k) if(*p=) k=0; else if(*p !=) k=1; *p=toupper(*p); main()
4、char chrstr81; printf(“ nPlease enter an English text line: “); gets(chrstr); printf(“ ninBefore changing: n s“, chrstr); upfst(chrstr); printf(“inAfter changing: n sn“, chrstr); 三、程序设计题( 40分) 3 请编写函数 fun,函数的功能是:移动字符串中的内容,移动的规则如下:把第1到第 m个字符,平移到字符串的最后,把第 m+1到最后的字符移到字符串的前部。 例如,字符串中原有的内容为: ABCDEFGHIJK,
5、 m的值为 3,则移动后,字符串中的内容应该是: DEFGHl脚 C。 注意:部分源程序在文件 PROGI C中。 请勿改动主函数 main和其他函数中的任何内容,仅在函数 fun的花括号中填入你编写的若干语句。 #include #include #define N 80 void funl(char*w) *本函数的功能 是将字符串中字符循环左移一个位置 * int i; char t; t=w0; for(i=0; i (2)upfst(char*p) 【试题解析】 (1)第一标识下 “include“是将头文件 “stdio h“包含进来,包含头文件应使用 “#include“,故第一标识下应改成 “#includc“。 (2)在主函数内,函数调用 “upfst(chrstr); “,而 chrstr是数组名,表示的是数组的首地址,故 upfst函数的参数是指针,第二标识下应改成 “upfst(char*p)“。 三、程序设计题( 40分) 3 【正确答案】 int i; for(i=0; im; i+)fun1(w); 【试题解析】 函数 fun1的功能是将字符串中字符循环左移一个位置, m次调用该函数循环左移 m个字符,因此在 fun函数中循环调用 fun1函数就可以完成 m个字符的移动。