1、国家二级( C语言)机试模拟试卷 212及答案与解析 一、程序填空题( 30分) 1 给定程序的功能是:从键盘输入若干行文本 (每行不超过 80个字符 ),写到文件myfile4 txt中,用 1作为字符串输入结束的标志。然后将文件的内容读出显示在屏幕上。文件的读写分别由自定义函数 ReadText和 WriteText实现。 请在程序的下划线处填入正确的内容并把下划线删除,使程序得出正确的结果。 注意:源程序存放在考生文件夹下的 BLANKl C中。 不得增行或删行,也不得更改程序的结构 ! #include #include #include void WriteText(FILE*);
2、void ReadText(FTLE *); main() FILE * fp; if(fp=fopen(”myfile4 txt”, ”w”) =NULL) printf(”open fai1 ! ! n”); exit(0); wziteText(fp); fclose ffp); if(fp=fopen(”myfile4 txt”, ”r”)=NULL) printf(”open fail! n”); exit(0); ReadText(fp); fclose(fp); *found* void WriteText(FILE 【 1】 ) char str81; printtf(” nE
3、nter string with 1 to end: n”); gets(str); while(strcmp(str, ”一 1”)!=0) *found* fputs(【 2】, fw); printf(” s”,【 3】 ); fgets(str, 81, fr); fputs(” n”, fw); gets(str); void ReadText(FTLE *fr) char str81; printf(” nRead file and output to screen: n”); fgets(sir, 81, fr); while(!leof(fr) *found* 二、程序修改题(
4、 30分) 2 假定整数数列中的数不重复,并存放在数组中。给定程序 MODII C中函数 fun的功能是:删除数列中值为 x的元素。 n中存放的是数列中元素的个数。 请改正程序中的错误,使它能得出正确结果。 注意:不要改动 main函数,不得增行或删行,也不得更改程序的结构。 #include #define N 20 int fun(int *a,int n,int x) int p=0,i; an=x; while(x!=ap) p=p+1; /*found*/ if(P=n) return -1; else for(i=p;i #define N 80 int fun(int a, in
5、t n) main() int aN=2, 2, 2, 3, 4, 4, 5, 6, 6, 6, 6, 7, 7, 8, 9, 9, 10, 10, 10, 10), i, n=20; void NONO(); printf(”The original data: n”); for(i=0; i=n) aj=t, return j; 【试题解析】 (1)首先,设置一个临时变量,初值设置为一维数组的第一个元素。 (2)然后,依次将数组的元素与临时变量比较,如果相同,则继续取数组下一个元素与临时变量比较:如果不同。则将临时变量的值赋值到数组的第一个元素,同时将此与临时变量不同的数组元素赋值给临时变量。 (3)循环执行,直到所有的数据处理完 毕。