1、国家二级 C语言机试(操作题)模拟试卷 153及答案与解析 一、程序填空题 1 给定程序中,函数 fun的功能是:将 s所指字符串中的所有数字字符移到所有非数字字符之后,并保持数字字符串和非数字字符串原有的先后次序。例如,形参 s所指的字符串为: def35adh3kjsdf7。执行结果为: defadhkjsdf3537。 请在程序的下划线处填入正确的内容并把下划线删除,使程序得出正确的结果。 注意:源程序存放在考生文件夹下的 BLANK1 C中。 不得增行或删行,也不得更改程序的结构 ! #include void fun(char *s) int i, j=0, k=0; char t1
2、80, t280; for(i=0; si!= 0; i+) if(si=0 si #include #define MAXLINE 20 fun (char *pstr6) int i, j; char *P; for(i=0; i0) p=*(pstr+i); *found* *(pstr+i)=pstr+j; *(pstr+j)=p; main() int i; char *pstr6, str6NAXLTNE; for(i=0; i #include #define M 81 int fun(char *ss, ohar c) main() char aM, ch; void NONO
3、(); printf(“ nPlease enter a string: “); gets(a); printf(“ nPlease enter a char: “); ch=getchar(); printf(“ nThe number of the char is: d n“, fun(a, ch); NONO (); void NONO() *本函数用于打开文件,输入测试数据,调用 fun函数,输出数据,关闭文件。* int i; FILE *rf, *wf; char aM, bM, ch; rf=fopen(“in dat“, “r“); wf=fopen(“out dat“, “w
4、“); for(i=0 ; i10; i+) fscanf(rf, “ s“, a); fscanf(rf, “ s“, b); ch=*b; fprintf(wf, “ c= d n“, ch, fun(a ch); fclose(rf); fclose(wf); 国家二级 C语言机试(操作题)模拟试卷 153答案与解析 一、程序填空题 1 【正确答案】 (1)j+ (2)si=t1i (3)j 【试题解析】 函数 fun的功能是将 s所指字符串中的所有数字字符移到所有非数字字符之后。 第一空:如果 si是数字字符,则将 si保存在 t2数组中,同时变量 i自增,准备下次保存数字字符,故第一
5、空处应为 “j+”。 第二空:语句 “for(i=0; ik; i+)”i从 0开始,说明将非数字字符存储到 s字符串的前面,非数 字字符保存在 t1数组中,因此第二空处应为 “si=t1i”。 第三空:循环 “for(i=0; i_3_; i+)”是将数字字符保存在 s字符串的后面,数字字符的个数为 j,因此这里是将 j个数字字符保存在 s字符串的后面,故第三空处应为 “j”。 二、程序修改题 2 【正确答案】 (1)for(j=i+1; j6; j+) (2)*(pstr+i)=*(pstr+j); 【试题解析】 函数的功能是用冒泡法对 6个字符串按由小到大的顺序进行排序。 (1)C语言中
6、, for语句形式是: for(表达式 1;表达式 2:表达式 3)循环体语句。因此第一个标识下, for使用错误,应该为 “for(j=i+1; j6; j+)”。 (2)if语句后的复合语句的功能是把 “*(pstr+i)”中和 “*(pstr+j)”中的内容进行交换,而 “*(pstr+i)=pstr+j; ”中 “pstr+j; ”是字符串地址,并不是字符串的元素内容,所以第二个标识下 “*(pstr+i)=pstr+j; ”改为 “*(pstr+i)=*(pstr+j); ”。 三、程序设计题 3 【正确答案】 int cnt=0; char *p=ss; while(*p) if(*p=c)cnt+; p+; return cnt; 【试题解析】 该程序功能是统计字符串中指定字符的个数。解题思路是在循环过程中,对字符进行判断,如果符合题干要求,对其个数进行统计。
copyright@ 2008-2019 麦多课文库(www.mydoc123.com)网站版权所有
备案/许可证编号:苏ICP备17064731号-1