国家二级C语言机试(操作题)模拟试卷696
程序填空题
1.给定程序的功能是:从键盘输入若干行文本(每行不超过80个字符),写到文件myfile4.txt中,用-1作为字符串输入结束的标志。然后将文件的内容读出显示在屏幕上。文件的读写分别由自定义函数ReadText和WfiteText实现。请在程序的下划线处填入正确的内容并把下划线删除,使程序得出正确的结果。
注意:源程序存放在考生文件夹下的BLANK1.C中。
不得增行或删行,也不得更改程序的结构!
1 #include<stdio.h>
2 #include<string.h>
3 #include<stdlib.h>
4 void WriteText(FILE *);
5 void ReadText(FILE *);
6 main()
7 {FILE *fp;
8 if((fp=fopen(’’myfile4.txt’’,’’w’’))==NULL)
9 { printf(’’open fail!!\n’’);exit(0);}
10 writeText(fp);
11 fclose(fp);
12 if((fp=fopen(’’myfile4.txt’’,’’r’’))==NULL)
13 {printf(’’open fail!!\n’’);exit(0);}
14 ReadText(fp);
15 fclose(fp);
16 }
17 /**********found**********/
18 void WriteText(FILE ___1___ )
19 { char str[81];
20 printf(’’\nEnter string with -1 to end:\n’’),
21 gets(str);
22 while(strcmp(str,’’-1’’)!=0) {
23 /**********found**********/
24 fputs(___2___,fw); fputs(’’\n’’,fw);
256 gets(sir);
26 }
27 }
28 void ReadText(FILE *fr)
29 { char str[81];
30 printf (’’\nRead file and output to screen:\n’’);
31 fgets(sir,81,fr);
32 while(!leof(fr)) {
33 /**********found**********/
34 printf(’’%s’’,___3____);
35 fgets(sir,81,fr);
36 }
37 }
(1)*fw
(2)str
(3)str
解析:本题要求是把一段文本写到文件myfile4.txt中,用-1作为字符串输入结束的标志。然后将文件的内容读出显示在屏幕上。主要考查文件操作以及fputs和fgets函数的使用。
第一空:此处是补充函数参数名,参数类型已知是FILE文件指针,“fputs(’’\a\\
程序修改题
2.给定程序MODI1.C中函数fun的功能是:从低位开始取出长整型变量S中奇数位上的数,依次构成一个新数放在t中。高位仍在高位,低位仍在低位。
例如,当S中的数为:7654321时,t中的数为:7531。
请改正程序中的错误,使它能得出正确的结果。
注意:不要改动main函数,不得增行或删行,也不得更改程序的结构!
1 #include<stdio.h>
2 /**********found**********/
3 void fun(long s,long t)
4 { long si=10;
5 *t=s%10;
6 while(s>0)
7 { s=s/100;
8 *t= s%10 *s1+*t;
9 /**********found**********/
10 s1=s1*100;
11 }}
12 main()
13 {long s,t;
14 printf(’’\nPlease enter s:’’);scanf(’’%1d’’,&s);
15 fun(s,&t);
16 printf(’’The result is:%1d\n’’,t);
17 }
(1)void fun (long s,long*t)
(2)s1=s1*10;
解析:本题中函数的功能是依次取出奇数位上的数。该题的解题思路主要是找出数字中的奇数位上的数。
(1)根据“*t=s%10”判断,t应该是个指针变量,所以“void fun(long s,long t)”语句中的t只需改为“void fun(long s,long *t)”。
(2)分析函数内的循环过程可知sl的用途是每次将*t扩大,记录每次得到的奇数位的数字的权值,s1的权值每次增加1位,因此,第二个标识下应该是“s1=s1*10;”。
程序设计题
3.学生的记录由学号和成绩组成,N名学生的数据已在主函数中放入结构体数组s中,请编写函数fun,它的功能是:把分数最低的学生数据放在b所指的数组中,注意:分数最低的学生可能不止一个,函数返回分数最低的学生的人数。
注意:部分源程序在文件PROG1.C文件中。
请勿改动主函数main和其他函数中的任何内容,仅在函数fun的花括号中填入你编写的若干语句。
1 #include<stdio.h>
2 #define N 16
3 typedef struct
4 { char hum[10];
5 int s;
6 } STREC;
7 int fun(STREC *a,STREC *b)
8 {
9 }
10 main()
11 {STREC s[N]={{’’GA05’’,85},{’’GA03’’,76},{’’GA02’’,69},{’’GA04’’,85},{’’GA01’’,91},{’’GA07’’,72},{’’C408’’,64},{’’GA06’’,87},{’’GA015’’,85},{’’CA013’’,91},{’’CA012\\
1 int i,j=0,min=a[0].s;
2 for(i=0;i<N;i++){
3 if(min>a[i].s){
4 j=0;b[j++]=a[i];min=a[i].s;
5 }
6 else if(min==a[i].s)
7 b[j++]=a[i];
8 }
9 return j;
解析:该程序功能是把分数最低的学生数据放在b所指的数组中。本题是关于求解结构
本文档预览:3600字符,共3800字符,源文件无水印,下载后包含无答案版和有答案版,查看完整word版点下载