1、国家二级 C语言机试(操作题)模拟试卷 168及答案与解析 一、程序填空题 1 给定程序中,函数 fun的功能是:统计形参 s所指字符串中数字字符出现的次数,并存放在形参 t所指的变量中,最后在主函数中输出。例如,形参 s所指的字符串为: abcdef35adgh3kjsdf7。输出结果为: 4。 请在程序的下划线处填入正确的内容并把下划线删除,使程序得出正确的结果。 注意:源程序存放在考生文件夹下的 BLANKl C中。 不得增行或删行,也不得更改程序的结构 ! #include void fun(char*s, int*t) int i, n ; n=0; *found* for(i=0;
2、 _1_!=0; i+) *found* if(si=0 si #include typedef struct aa int data ; struct aa *next; NODE; int fun(NODE*h) int max=一 1; NODE*p; *found* p=h; while(P) if(p-datamax) max=p-data; *found* p=h-next ; return max; outresult(int s, FILEpf) fprintf(pf, “ nThe max in link: d n“, s); ) NODE*creatlink(int n,
3、int m) NODE*h, *p, *s; int i; h=p=(NODE*)malloc(sizeof(NODE); h-data=9999; for(i=i; idata=rand() m; s-next=p- next; p-next=s ; p=p-next; p-next=NULL; return h; outlink(NODE*h, FTLE*pf) NODE*p; p=h-next; fprintf(pf, “ nTHE LTST: n n HEAD“); while(p) fprintf(pf, ”- d”, P-data); p=p-next ; fprintf(pf,
4、“ n“); main() NODE*head; int m; head=creatlink(12, 100); outlink(head, stdout); m=fun(head); printf(“ nTHE RESULT: n“); outresult(m, stdout); 三、程序设计题 3 请编写函数 fun,该函数的功能是: 统计一行字符串中单词的个数,作为函数值返回。字符串在主函数中输入,规定所有单词由小写字母组成,单词之间有若干个空格隔开,一行的开始没有空格。 注意:部分源程序在文件 PROGl C中。 请勿改动 main函数和其他函数中的任何内容,仅在函数 fun的花括号中
5、填入所编写的若干语句。 试题程序: #include #include #define N 80 int fun(char*s) void main() FILE*wf; char lineN; int num=0; printf(“Enter a string: n“); gets(line); num=fun(lihe); printf(“The number of word is: d n n“, num); *found* wf=fopen(“out dat“, “w“); fprintf(wf, “ d“, fun(“a big car“); fclose(wf); *found*
6、国家二级 C语言机试(操作题)模拟试卷 168答案与解析 一、程序填空题 1 【正确答案】 (1)si (2)9 (3)*t=n 【试题解析】 第一空:循环终止条件是达到了字符串的尾部,字符串以 “ 0”(或NULL)结束,故第一空处应为 si。 第二空:数字字符的判断是 si=0且 sinext; (2)p=p-next; 【试题解析】 (1)根据题干中求得除了头结点之外的结点数据域中的最大值,头指针 h,工作指针 p指向头结点的下一个结点,所以第一个标识下的 “p=h; ”指向头结点应该改为指向下一个结点 “p=h=-next; ”。 (2)工作指针 p,利用 p实现对链表的遍历, p表示
7、指向链表的当前结点,所以指向下一个结点应该是 “p=p-next; ”。 三、程序设计题 3 【正确答案】 Int tun(cnar*s) int i, j=0; for(i=0; si!= 0; i+) if(si!=&(si+1= si+1= 0) *如果一个字母的下一个字符为空格或者结束标记,则表示一个单词结束 * j+; return j; *返回单词个数 * 【试题解析】 要判断单词的个数,首先想到的是程序怎样识别出一个单词,如果一个字母的下一个字符为空格或者结束标记,则表示一个单词结束,因此程序使用 for循环语句遍历整个字 符串,用 if条件语句判断当前字符是否表示一个单词的结束,如果当前字符表示一个单词结束,则存放单词个数的变量加 1,最后返回单词的个数。
copyright@ 2008-2019 麦多课文库(www.mydoc123.com)网站版权所有
备案/许可证编号:苏ICP备17064731号-1