1、国家二级 C语言程序设计机试(程序修改题)模拟试卷 3及答案与解析 一、程序修改题 1 下列给定程序中,函数 fun的功能是:读入一个字符串 (长度 #include void fun(ehar t) char c; int i, j; *found* for(i=strlen(t); i; i一一 ) for(j=0; j #include #include fun(char*P) int i, t; char c80; *found* For(i=0, t=0; Pi; i+) if(!isspace(*(P+i) ct+=Pi; *found* ct=“ 0”; strepy(p, c)
2、; main() char c, s80; int i=0; prinff(“Input a string: ”); c=getchar(); while(c!=#) si=c; i+; c=getehar(); 8i= 0; fun(s); puts(s); 3 下列给定程序中,函数 fun的功能是:将 m(1m10)个字符串连接起来,组成一个新串,放入 pt所指存储区中。例如:把三个串 “abe”“CD”“EF”连接起来,结果是 ”abc-CDEF”。 请改正程序中的错误,使它能得出正确的结果。 注意:不要改动 main函数,不得增行或删行,也不得更 改程序的结构 ! 试题程序: #inc
3、lude #include void fun(char str10, int m, char*pt) *found* Int k, q, i; for(k=0; k #include #include void fun(char*s) int i, j; for(i=0, j=0; si1= 0; i+) if(si=0&si0; i一一 ) (2)if(tjtj+1) 【试题解析】 (1)本题是利用选择法对数组元素进行比较排序。所谓选择法,是依次用当前取得的元素和其后面的元素进行比较,在第一个元素和其后面的元素顺次比较时,可以借助中间变量来对两个数进行交换,要保证第一个元 素始终存放数组中的
4、最大数,以后依次挑选出次大数,这样最终的数组就是有序的。 strlen函数所求得的字符串长度包括字符串结束符,所以要减 1。 (2)这里是一个分析逻辑错误,题中要求按升序排序,所以应改为 if(tjtj+1)。 2 【正确答案】 (1)for(i=0, t=0; pi; i+) (2)ct= 0; 【试题解析】 本题考查: C语言关键字;字符串结束标识 0。 该题目考查 C语言关键字的书写, C语言中关键字是区分大小写的。另外为字符串结尾添加结束符时应书写为 0,而 非 ” 0”, 0表示一个字符串。该程序的if条件中应用了 isspace函数,该函数的功能是检查 ch是否空格、跳格符 (制表
5、符 )或换行符。 3 【正确答案】 (1)int k, q, i; (2)pti=strki; 【试题解析】 本题考查: C语言的书写和语法性错误,这类错误比较简单,只要编译程序,根据错误提示修改即可。 (1)关键字书写错误,定义整型变量的关键字应使用 int,而非 Int。 (2)数组元素表示错误,表示二维数组元素,应使用方括号将行坐标和列坐标分别括起来,即 strk, i应改为 strki。 4 【正确答案】 (1)sj+=si; (2)sj= 0; 【试题解析】 题目要求依次取出字符串中所有的数字字符,因此将元素 si存入sj后要使 j加 1,为下次存储做准备。 sj=“ 0”;是一个语法错误。