1、国家二级 C语言机试(操作题)模拟试卷 298及答案解析(总分:6.00,做题时间:90 分钟)一、程序填空题(总题数:1,分数:2.00)1.下列给定程序中,函数 fun的功能是:将自然数 1一 10及其平方根写到名为 myfile3txt 的文本文件中,然后再顺序读出显示在屏幕上。 请在程序下画线处填入正确的内容并把下画线删除,使程序得出正确的结果。 注意:部分源程序给出如下。 不得增行或删行,也不得更改程序的结构! 试题程序: #includemathh #includestdioh int fun(char*fname) FILE*fp;int i,n;float x; if (fp=
2、fopen(fname,“w“) =NULL) return 0, for(i=1;i=10;i+) *found* fprintf( 【1】 ,“dfn“,i,sqrt(double)i); printf(“nSucceed!n“); *found* 【2】 ; printf(“nThe data in file:n“); *found* if(fp=fopen( 【3】 ,“r“)= NULL) return 0; fscanf(fp,“df“,n,x); while(!feof(fp) printf(“dfn“,n,x); fscanf(fp,“df“,n,x);) fclose(fp)
3、; return 1; main() char fname=“myfile3txt“; fun(fname); (分数:2.00)_二、程序修改题(总题数:1,分数:2.00)2.下列给定程序中,函数 fun的功能是:比较两个字符串,将长的字符串的首地址作为函数值返回。请改正程序中的错误,使它能得出正确的结果。注意:部分源程序在文件 MODI1C 中,不要改动 main函数,不得增行或删行,也不得更改程序的结构!试题程序:#includeconioh#includestclioh*found*double fun(char*s,char*t) int s1=0,t1=0; char*ss,*t
4、t; ss=s; tt=t; while(*ss) s1+;*found* (*ss)+; while(*tt) t1+;*found* (*tt)+; if(t1s1) return t; else return s; void main() char a80,b80; printf(“nEnter a string:“); gets(a); printf(“nEnter a string again:“); gets(b); printf(“nThe longer is:n nSn“,fun(a,b);(分数:2.00)_三、程序设计题(总题数:1,分数:2.00)3.请编写函数 fun,
5、该函数的功能是:统计一行字符串中单词的个数,作为函数值返回。字符串在主函数中输入,规定所有单词由小写字母组成,单词之间有若干个空格隔开,一行的开始没有空格。注意:部分源程序在文件 PROG1C 中。请勿改动 main函数和其他函数中的任何内容,仅在函数 fun的花括号中填入所编写的若干语句。试题程序:1 #includestringh2 #incluctestdioh3 #define N 804 int fun(char*s)5 67 8 void main()9 10 FILE*wf;11 char lineN;12 int num=0;13 printf(“Enter a string:
6、n“);14 gets(line);15 num=fun(line);16 printf(“The number of wordis:dnn“,num);17 *found*18 wf=fopen(“outclat“,“w“);19 fprintf(wf,“d“,fun(“a big car“);20 fclose(wf);21 *found*22 (分数:2.00)_国家二级 C语言机试(操作题)模拟试卷 298答案解析(总分:6.00,做题时间:90 分钟)一、程序填空题(总题数:1,分数:2.00)1.下列给定程序中,函数 fun的功能是:将自然数 1一 10及其平方根写到名为 myfi
7、le3txt 的文本文件中,然后再顺序读出显示在屏幕上。 请在程序下画线处填入正确的内容并把下画线删除,使程序得出正确的结果。 注意:部分源程序给出如下。 不得增行或删行,也不得更改程序的结构! 试题程序: #includemathh #includestdioh int fun(char*fname) FILE*fp;int i,n;float x; if (fp=fopen(fname,“w“) =NULL) return 0, for(i=1;i=10;i+) *found* fprintf( 【1】 ,“dfn“,i,sqrt(double)i); printf(“nSucceed!n
8、“); *found* 【2】 ; printf(“nThe data in file:n“); *found* if(fp=fopen( 【3】 ,“r“)= NULL) return 0; fscanf(fp,“df“,n,x); while(!feof(fp) printf(“dfn“,n,x); fscanf(fp,“df“,n,x);) fclose(fp); return 1; main() char fname=“myfile3txt“; fun(fname); (分数:2.00)_正确答案:(正确答案:(1)fp (2)felose(fp) (3)fname)解析:解析:填空
9、1:fprinff 函数的形式是:fprintf(文件指针,格式字符串,输出表列);,所以填入文件指针 fp。 填空 2:文件一旦使用完毕,应使用关闭函数 fclose将文件关闭,以避免发生文件数据丢失等错误。 填空 3:fopen 函数用来打开一个文件,其一般形式为:文件指针名=fopen(文件名,使用文件方式);因此应填入文件名 fname。二、程序修改题(总题数:1,分数:2.00)2.下列给定程序中,函数 fun的功能是:比较两个字符串,将长的字符串的首地址作为函数值返回。请改正程序中的错误,使它能得出正确的结果。注意:部分源程序在文件 MODI1C 中,不要改动 main函数,不得增
10、行或删行,也不得更改程序的结构!试题程序:#includeconioh#includestclioh*found*double fun(char*s,char*t) int s1=0,t1=0; char*ss,*tt; ss=s; tt=t; while(*ss) s1+;*found* (*ss)+; while(*tt) t1+;*found* (*tt)+; if(t1s1) return t; else return s; void main() char a80,b80; printf(“nEnter a string:“); gets(a); printf(“nEnter a s
11、tring again:“); gets(b); printf(“nThe longer is:n nSn“,fun(a,b);(分数:2.00)_正确答案:(正确答案:(1)char*fun(char*s,char*t) (2)ss+; (3)tt+;)解析:解析:(1)在主函数的输出语句中,函数 fun是以字符串格式输出的,所以定义函数时应为char*fun(char*s,chat*t)。 (2)和(3)这里是地址加 1,而不是内容加 1,所以改为 ss+和 tt+。三、程序设计题(总题数:1,分数:2.00)3.请编写函数 fun,该函数的功能是:统计一行字符串中单词的个数,作为函数值返
12、回。字符串在主函数中输入,规定所有单词由小写字母组成,单词之间有若干个空格隔开,一行的开始没有空格。注意:部分源程序在文件 PROG1C 中。请勿改动 main函数和其他函数中的任何内容,仅在函数 fun的花括号中填入所编写的若干语句。试题程序:1 #includestringh2 #incluctestdioh3 #define N 804 int fun(char*s)5 67 8 void main()9 10 FILE*wf;11 char lineN;12 int num=0;13 printf(“Enter a string:n“);14 gets(line);15 num=fun
13、(line);16 printf(“The number of wordis:dnn“,num);17 *found*18 wf=fopen(“outclat“,“w“);19 fprintf(wf,“d“,fun(“a big car“);20 fclose(wf);21 *found*22 (分数:2.00)_正确答案:(正确答案:int fun(char *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