1、国家二级( C语言)机试模拟试卷 381及答案与解析 一、程序填空题( 30分) 1 请补充函数 fun(),该函数的功能是将字符串 tt中的大写字母都改为对应的小写字母,其他字符不变。例如,若输入 “Are you come from Sichuan?”,则输入 “are you come from sichuan?”。 注意:部分源程序给出如下。 请勿改动主函数 main和其他函数中的任何内容,仅在函数 fun()的横线上填入所编写的若干表达式或语句。 试题程序: #include stdio.h #include string.h #include conio.h char *fun(c
2、har tt) int i; for(i=0;tti;i+) if(tti =A) return (【 】 ) ; main() char tt81; printf(“nPlease enter a string:“); gets(tt); printf(“nThe result string is: n%s“, fun(tt); 二、程序修改题( 30分) 2 下列给定程序中,函数 fun()的功能是:计算整数 n的阶乘。 请改正程序中的错误,使它能得出正确的结果。 注意:不要改动 main函数,不得增行或删行,也不得更改程序的结构。 试题程序: #include stdio.h doubl
3、e fun(int n) double result=l.0; whil (n l /*found*/ return; main() int. n; clrscr(); printf(“Enter an integer: “); scanf(“%d“, printf(“nn%d!=%lgnn “,n, fun(n); 三、程序设计题( 40分) 3 请编写函数 fun(),该函数的功能是:将 s所指字符串中 ASCII值为偶数的字符删除,串中剩余字符形成一个新串放在 t所指的数组中。 例如,若 s所指字符串中的内容为 ABCDEFGl2345,其中字符 B的 ASC 码值为偶数、 、字符 2的
4、 ASC 码值为偶数、 ,都应当删除,其他依次类推。最后 t所指的数组中的内容应是 ACEGl35。 注定:部分源程序给出如下。 请勿改动主函数 main和其他函数中的任何内容,仅在函数 fun的花括号中填入所编写的若干语句。 试题程序; #include stdio. h #include string.h #include conio. h void fun(char *s, char t) main ( ) char s100,t 100; clrscr (); printf (,nPlease enter string S: “); scanf (“%s“, s); fun(s,t);
5、 printf (“nThe result is :%sn“,t); 国家二级( C语言)机试模拟试卷 381答案与解析 一、程序填空题( 30分) 1 【正 确答案】 tti =Z tti+=32 tt 【试题解析】 第一空;此处考查判断大写字母的方法,如果字符的 ASCII码大于字符 A的 ASCII码,并且小于字符 Z的 ASCII码,则此字符为大写字母。第二空;考生必须掌握,大写字母转换为小写字母的方法,小写字母的 ASCII码比大写字母的 ASCII码大 32。第三空:函数 fun的返回值为字符型指针,而字符型的数组名就是字符型指针,所以返回 tt。 二、程序修改题( 30分) 2
6、【正确答案】 (1)错误: result*=-n; 正确: result*=n-; (2)错误: return; 正确: return result; 【试题解析】 该题采用循环语句计算 n的阶乘。当 n大于 1且小于 170时,令result与 n相乘,同时 n自动减 1,循环至 n=2(n=1时无需相乘 ):注意: o和 1的阶乘都等于 1,可用条件语句和循环语句实现上述功能。 三、程序设计题( 40分) 3 【正确答案】 void fun(char *s, char t) int i=0; for (;*s!=0 ;s+) /*找出 ASCII值为奇数的字符依次存入数组 t中 */ if (*s%2=1) t i+ =*s; ti=0; /*在字符串的末尾口上串结束符 */ 【试题解析】 要删除 ASCH值为偶数的字符,也就是要留下 ASCH值为奇数的字符,由于最终是要求求出剩余字符 (BPASC 值为奇数 )形 成的新串,所以本题程序的算法是从原字符串的头到尾扫描并找出 ASC 值为奇数的字符依次存入数组冲。此外,还要注意数组 t的下标变化和下标的初值 (初值必须为 0,即 i=0),ti+州的作用是先使用 ti然后再使自增 1。任何字符串的末尾都要有串结束符。这种算法在很多题中都要用到,学习者可以举一反三地找一些其他相关习题练习一下。