国家二级C语言机试(操作题)模拟试卷344
程序填空题
1.给定程序的功能是:从键盘输入若干行文本(每行不超过80个字符),写到文件myfile4.txt中,用-1作为字符串输入结束的标志。然后将文件的内容读出显示在屏幕上。文件的读写分别由自定义函数ReadText和WriteText实现。
请在程序的下划线处填入正确的内容并把下划线删除,使程序得出正确的结果。
注意:源程序存放在考生文件夹下的BLANK1.C中。
不得增行或删行,也不得更改程序的结构!
1 #include<stdio.h>
2 #include<string.h>
3 #include<stdlib.h>
4 void WriteText(FILE *);
5 void ReadText(FTLE *);
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(FTLE __1__ )
19 { char str[81];
20 printf(’’\nEnter string with-1 to end:\n’’);
21 gets(sir);
22 while(strcmp(str,’’-1’’)!=0){
23 /**********found**********/
24 fputs(__2__,fw);fputs(’’\n’’,fw);
25 gets(str);
26 }
27 }
28 void ReadText(FILE *fr)
29 { char str[81];
30 printf(’’\nRead file and output to screen:\n’’);
31 fgets(str,81,fr);
32 while(!feof(fr)) {
33 /**********found**********/
34 printf(’’%s’’,__3__);
35 fgets(str,81,fr);
36 }
37 }
(1)*fw (2)str (3)str
解析:第一空:此处是补充函数参数名,参数类型已知是FILE文件指针,“fputs(’’\n’’,fw)”是将字符“\n”写入文件,可知fw是文件指针名,因此第一空处应该是“void Write Text(FILE *fw)”。
第二空:“while(strcmp(str,”-1”)!=0)”循环的结束标志是str字符串等于“-1”时循环退出,如果str不等于“-1”,执行循环体内容:用fputs函数将str字符串写入文件。fputs函数的调用形式是:“fputs(s,fp)”,其中s是指向字符串的指针或字符串数组名,fp是指向将要被写入的文件的文件指针,因此第二处应该是“fputs(str,fw)”。
第三空:“while(!feof(fr))”循环的作用是不断读取文件直到到达文件尾,每次最多读81个,将读到的数据放在str字符串里,并用printf输出到屏幕,因此第三处应该是“printf(’’%s’’,str)”。
程序修改题
2.给定程序MODI1.C中函数fun的功能是:应用递归算法求形参a的平方根。求平方根的迭代公式如下:
(1)double fun(double a,double x0) (2)if(fabs(x1-x0)>0.00001)
解析:函数的功能是应用递归算法求某数a的平方根。
(1)主函数中“fun(x,1.0)”,x是double型变量,1.0是浮点数,可知fun有两个double型参数,而第一标识下“dotmle”不是C语言关键字,所以应将“double fun(double a,dounle x0)”改为“double fun(double a,double x0)”。
(2)第二个标识下的if语句是判断进行递归运算的条件,第二标识下变量x0没有定义,根据题意,这里是判断x1和x0的差值的绝对值是否比0.00001大,所以第二个标识下“if(fabs(x1-x0)>0.000011”改为“if(fabs(x1-x0)>0.00001)”。
程序设计题
3.编写函数fun,它的功能是:利用以下所示的简单迭代方法求方程:cos(x)-x=0的一个实根。
xn+1=cos(xn)
迭代步骤如下:
(1)取x1初值为0.0;
(2)x0=x1,把x1的值赋给x0;
(3)x1=cos(x0),求出一个新的x1;
(4)若x0-x1的绝对值小于0.000001,执行步骤(5),否则执行步骤(2);
(5)所求x1就是方程cos(x)-x=0的一个实根,作为函数值返回。
程序将输出结果Root=0.739086。
注意:部分源程序在文件PROG1.C中。
请勿改动主函数main和其他函数中的任何内容,仅在函数fun的花括号中填入你编写的若干语句。
1 #include<math.h>
2 #include<stdio.h>
3 double fun()
4 {
5
6 }
7 main()
8 {
9 void NONO();
10 printf(’’Root=%f\n’’,fun());
11 NONO();
12 }
13 void NONO()
14 {/*本函数用于打开文件,输入数据,调用函数,输出数据,关闭文件。*/
15 FILE *wf;
16 wf=fopen(’’out.dat’’,’’w’’);
17 fprintf(wf,’’%f\n’’,fun());
18 fclose(wf);
19 }
1 float x0, x1=0.0;
2 do {
3 x0=x1;
4 x1=cos(x0);
5 } while(fabs(x0-
本文档预览:3600字符,共3887字符,源文件无水印,下载后包含无答案版和有答案版,查看完整word版点下载