1、全国计算机二级 C语言上机试题 56+2015年及答案解析(总分:30.00,做题时间:90 分钟)1.给定程序的功能是:从键盘输入若干行文本(每行不超过 80个字符),写到文件 myfile4.txt中,用-1作为字符串输入结束的标志。然后将文件的内容读出显示在屏幕上。文件的读写分别由自定义函数ReadText和 WriteText实现。 请在程序的下划线处填入正确的内容并把下划线删除,使程序得出正确的结果。 注意:源程序存放在考生文件夹下的 BLANK1.C中。不得增行或删行,也不得更改程序的结构! 给定源程序: #include #include #include void WriteT
2、ext(FILE *); void ReadText(FILE *); main() FILE *fp; if(fp=fopen(“myfile4.txt“,“w“)=NULL) printf(“ open fail!/n“); exit(0); WriteText(fp); fclose(fp); if(fp=fopen(“myfile4.txt“,“r“)=NULL) printf(“ open fail!/n“); exit(0); ReadText(fp); fclose(fp); /*found*/ void WriteText(FILE _1_) char str81; print
3、f(“/nEnter string with -1 to end :/n“); gets(str); while(strcmp(str,“-1“)!=0) /*found*/ fputs(_2_,fw); fputs(“/n“,fw); gets(str); void ReadText(FILE *fr) char str81; printf(“/nRead file and output to screen :/n“); fgets(str,81,fr); while( !feof(fr) ) /*found*/ printf(“%s“,_3_); fgets(str,81,fr); (分数
4、:10.00)_2.给定程序 MODI1.C中函数 fun的功能是:从低位开始取出长整型变量 s中奇数位上的数,依次构成一个新数放在 t中。高位仍在高位,低位仍在低位。 例如,当 s中的数为:7654321 时,t 中的数为:7531。 请改正程序中的错误,使它能得出正确的结果。 注意:不要改动 main函数,不得增行或删行,也不得更改程序的结构! 给定源程序: (分数:10.00)_3.函数 fun的功能是:将两个两位数的正整数 a、b 合并形成一个整数放在 c中。合并的方式是:将 a数的十位和个位数依次放在 c数的个位和百位上, b 数的十位和个位数依次放在 c数的千位和十位上。 例如,当
5、 a45,b=12 时,调用该函数后,c=1524。 注意: 部分源程序存在文件 PROG1.C中。数据文件IN.DAT中的数据不得修改。请勿改动主函数 main和其它函数中的任何内容,仅在函数 fun的花括号中填入你编写的若干语句。 给定源程序: #include void fun(int a, int b, long *c) main() int a,b; long c; printf(“Input a, b:“); scanf(“%d,%d“, fun(a, b, printf(“The result is: %ld/n“, c); NONO(); (分数:10.00)_全国计算机二级
6、C语言上机试题 56+2015年答案解析(总分:30.00,做题时间:90 分钟)1.给定程序的功能是:从键盘输入若干行文本(每行不超过 80个字符),写到文件 myfile4.txt中,用-1作为字符串输入结束的标志。然后将文件的内容读出显示在屏幕上。文件的读写分别由自定义函数ReadText和 WriteText实现。 请在程序的下划线处填入正确的内容并把下划线删除,使程序得出正确的结果。 注意:源程序存放在考生文件夹下的 BLANK1.C中。不得增行或删行,也不得更改程序的结构! 给定源程序: #include #include #include void WriteText(FILE
7、*); void ReadText(FILE *); main() FILE *fp; if(fp=fopen(“myfile4.txt“,“w“)=NULL) printf(“ open fail!/n“); exit(0); WriteText(fp); fclose(fp); if(fp=fopen(“myfile4.txt“,“r“)=NULL) printf(“ open fail!/n“); exit(0); ReadText(fp); fclose(fp); /*found*/ void WriteText(FILE _1_) char str81; printf(“/nEnte
8、r string with -1 to end :/n“); gets(str); while(strcmp(str,“-1“)!=0) /*found*/ fputs(_2_,fw); fputs(“/n“,fw); gets(str); void ReadText(FILE *fr) char str81; printf(“/nRead file and output to screen :/n“); fgets(str,81,fr); while( !feof(fr) ) /*found*/ printf(“%s“,_3_); fgets(str,81,fr); (分数:10.00)_正
9、确答案:(第一处:要求填写文件流的自变量名,在这个函数中,已有的语句 fputs(“/n“,fw);分析可知:由于文件流变量 fw在函数体没有定义过,所以本处应填*fw 或 fw。 第二处:通过 while循环语句,把键盘上输入的内容,要写入到指定的文件中,键盘上输入的内容已存入字符串 str变量中,因此,本处应填写 str。 第三处:要把已存入文件中的内容,再从文件中读出且已存入字符串变量 str中,最后在屏幕显示出来,因此,此处应填写 str。)解析:2.给定程序 MODI1.C中函数 fun的功能是:从低位开始取出长整型变量 s中奇数位上的数,依次构成一个新数放在 t中。高位仍在高位,低
10、位仍在低位。 例如,当 s中的数为:7654321 时,t 中的数为:7531。 请改正程序中的错误,使它能得出正确的结果。 注意:不要改动 main函数,不得增行或删行,也不得更改程序的结构! 给定源程序: (分数:10.00)_正确答案:(第一处:在函数 fun中使用了*t,但在函数定义时没有使用*t,所以应改为:void fun(longs,long *t)。 第二处:每循环一次,sl 的值就乘以 10,所以应改为:sl=sl*10;。)解析:3.函数 fun的功能是:将两个两位数的正整数 a、b 合并形成一个整数放在 c中。合并的方式是:将 a数的十位和个位数依次放在 c数的个位和百位
11、上, b 数的十位和个位数依次放在 c数的千位和十位上。 例如,当 a45,b=12 时,调用该函数后,c=1524。 注意: 部分源程序存在文件 PROG1.C中。数据文件IN.DAT中的数据不得修改。请勿改动主函数 main和其它函数中的任何内容,仅在函数 fun的花括号中填入你编写的若干语句。 给定源程序: #include void fun(int a, int b, long *c) main() int a,b; long c; printf(“Input a, b:“); scanf(“%d,%d“, fun(a, b, printf(“The result is: %ld/n“, c); NONO(); (分数:10.00)_正确答案:( )解析: