知ing

最新计算机二级C语言上机试题汇编100套

NCRE研究组 编 / 高等教育出版社

゛Zirro、Y 上传

查看本书

56套: 

给定程序的功能是:从键盘输入若干行文本(每行不超过80个字符),写到文件myfile4.txt,-1作为字符串输入结束的标志。然后将文件的内容读出显示在屏幕上。文件的读写分别由自定义函数ReadTextWriteText实现。 

请在程序的下划线处填入正确的内容并把下划线删除,使程序得出正确的结果。 

注意:源程序存放在考生文件夹下的BLANK1.C中。 

不得增行或删行,也不得更改程序的结构! 

给定源程序: 

#include <stdio.h> 

#include <string.h> 

#include <stdlib.h> 

void WriteText(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 str[81]; 

printf("\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 str[81]; 

printf("\nRead file and output to screen :\n"); 

fgets(str,81,fr); 

while( !feof(fr) ) { 

/ **********found**********/ 

printf("%s",___3___); 

fgets(str,81,fr); 

解题思路: 

本题要求是把键盘上输入的内容写到指定的文件中。程序中共有三处要填上适当的内容,使程序能运行出正确的结果。 

第一处:要求填写文件流的自变量名,在这个函数中,已有的语句fputs("\n",fw);分析可知:由于文件流变量fw在函数体没有定义过,所以本处应填*fwfw[]。 

第二处:通过while循环语句,把键盘上输入的内容,要写入到指定的文件中,键盘上输入的内容已存入字符串str变量中,因此,本处应填写str。 

第三处:要把已存入文件中的内容,再从文件中读出且已存入字符串变量str中,最后在屏幕显示出来,因此,此处应填写str。 

*************************************************** 

给定程序MODI1.C中函数fun的功能是:从低位开始取出长整型变量s中奇数位上的数,依次构成一个新数放在t中。高位仍在高位,低位仍在低位。 

例如,当s中的数为:7654321时,t中的数为:7531。 

请改正程序中的错误,使它能得出正确的结果。 

注意:不要改动main函数,不得增行或删行,也不得更改程序的结构! 

给定源程序: 

#include <stdio.h> 

/ ************found************/ 

void fun (long s, long t) 

{ long sl=10; 

*t = s % 10; 

while ( s > 0) 

{ s = s/100; 

*t = s%10 * sl + *t; 

/ ************found************/ 

\TAB sl = sl*100; 

main() 

{ long s, t; 

printf("\nPlease enter s:"); scanf("%ld", &s); 

fun(s, &t); 

printf("The result is: %ld\n", t); 

解题思路: 

第一处:在函数fun中使用了*t,但在函数定义时没有使用*t,所以应改为:void fun(long s,long *t)。 

第二处:每循环一次,sl的值就乘以10,所以应改为:sl=sl*10;。 

*************************************************** 

函数fun的功能是:将两个两位数的正整数ab合并形成一个整数放在c中。 

合并的方式是:将a数的十位和个位数依次放在c数的个位和百位上, b数的十位和个位数依次放在c数的千位和十位上。 

例如,当a45b=12时,调用该函数后,c=1524。 

注意部分源程序存在文件PROG1.C中。数据文件IN.DAT中的数据不得修改。 

请勿改动主函数main和其它函数中的任何内容,仅在函数fun的花括号中填入你编写的若干语句。 

给定源程序: 

#include <stdio.h> 

void fun(int a, int b, long *c) 

main() 

{ int a,b; long c; 

printf("Input a, b:"); 

scanf("%d,%d", &a, &b); 

fun(a, b, &c); 

printf("The result is: %ld\n", c); 

NONO(); 

 

解题思路: 

本题是给出两个两位数的正整数分别取出各位上的数字,再按条件组成一个新数。 

a十位数字的方法:a/10 

a个位数字的方法:a%10 

参考答案: 

void fun(int a, int b, long *c) 

*c=(b/10)*1000+(a%10)*100+(b%10)*10+(a/10); 

※※※※※※※※※※※※※※※※※※※※※※※※※ 


查看更多