1、国家二级 C语言机试(操作题)模拟试卷 292及答案与解析 一、程序填空题 1 给定程序中,函数 fun的功能是:将形参 s所指字符串中所有 ASCII码值小于 97的字符存入形参 t所指字符数组中,形成一个新串,并统计出符合条件的字符个数作为函数值返回。 例如,形参 s所指的字符串为: Abe1x56*,程序执行后 t所指字符数组中的字符串应为: A156*。 注意:部分源程序在文件 BLANK1 C中。 不得增行或删行,也不得更改程序的结构 ! 试题程序: #include stdio h int fun(char*S, char*t) int n=0; while(*s) if(*s 9
2、7) *found* *(t+n)=【 1】 ; n+; *found* 【 2】 ; *(t+n)=0; *found* return【 3】 ; main() char s81, t81; int n ; printf(“ nEnter a string: n“); gets(s); n=fun(s, t); printf(“ nTher are d letter which ASCII code is less than 97: s n“, n, t); 二、程序修改题 2 下列给定程序中,函数 fun的功能是:根据形参 m的值 (2m9),在 m行 m列的二维数组中存放如下所示规律的数
3、据,由 main函数输出。请改正程序中的错误,使它能得出正确的结果。注意:部分源程序在文件 MODI1 C中,不要改动 main函数,不得增行或删行,也不得更 改程序的结构 !试题程序: #include conio h #include stdio h#define M 10int aMM=0; *found* void fun(int *a, int m)int j, k; for(j=0; j m; j+) for(k=0; k m; k+)*found* ajk=k*j; main() int i, j, n; printf(“Enter n:“); scanf(“ d“, n); f
4、un(a, n); for(i=0; i n; i+) for(j=0; j n; j+) printf(“ 4d“, aij); printf(“ n“); 三、程序设计题 3 请编写一个函数 fun,它的功能是:将 SS所指字符串中所有下标为奇数位置的字母转换为大写 (若该位置上不是字母,则不转换 )。 例如,若输入 “abc4Efg“,则应输出 “aBc4EFg“。 注意:部分源程序在文件 PROGl C中。 请勿改动主函数 main和其他函数中的任何内容,仅在函数 fun的花括号中填入你编写的若干语句。 试题程序: #include conio h #include Stdio h #
5、include string h #include Stdlib h void fun(char*ss) void main() FILE*wf; char tt81, s81=“abc4Efg“; system(“CLS“); printf(“ nPlease enter an string within 80 characters: n“); gets(tt); printf(“ n nAfter changing, the string n s“, tt); fun(tt); printf(“ nbecomes n s n“, tt); * wf=fopen(“out dat“, “W“
6、); fun(s); fprintf(wf, “ s“, s); fclose(wf); * 国家二级 C语言机试(操作题)模拟试卷 292答案与解析 一、程序填空题 1 【正确答案】 (1)*s (2)s+ (3)n 【试题解析】 填空 1:判断 s所指向的字符串中的字符符合条件时,将当前字符存放到 t指向的字符串中,所以应填 *s。 填空 2:判断完一个字符之后,将字符串的指针移到下一个位置,所以应填 s+。 填空 3:题目要求函数要返回符合条件的字符个数 n,所以应填 n。 二、程序修改题 2 【正确答案】 (1)void fun(int aM, int m) (2)ajk=(k+1)*
7、(j+1); 【试题解析】 (1)在函数体 fun中可知, a是一个二维整型数组变量,设置实参时,用 *a表示是错误的,所以应改为 void fun(int aM, int m)。 (2)根据输出的结果可知,应改为 ajk=(k+1)*(j+1);。 三、程序设计题 3 【正确答案】 void fun(char*ss) int i; for(i=0; ssi!= 0; i+) *将 ss所指字符串中所有下标为奇数位置的字母转换为大写 * if(i 2=1 ssi =a ssi =z) ssi=ssi一 32; 【试题解析】 该题要求将给定字符串中奇数位置的字母转换为大写,需要先判断奇数位置以及是否是小写字母,如果是再通过其转换方法进行转换。 从 C语言的学习中知道,只要将小写字母减去 32即转成大写字母,将大写字母加上 32即转成小写字母。本程序用 if语句实现转换功能。
copyright@ 2008-2019 麦多课文库(www.mydoc123.com)网站版权所有
备案/许可证编号:苏ICP备17064731号-1