国家二级C语言机试(操作题)模拟试卷399
程序填空题
1.给定程序的功能是:调用函数fun将指定源文件中的内容复制到指定的目标文件中,复制成功时函数返回值为1,失败时返回值为0。在复制的过程中,把复制的内容输出到终端屏幕。主函数中源文件名放在变量sfname中,目标文件名放在变量tfname中。
请在程序的下划线处填入正确的内容并把下划线删除,使程序得出正确的结果。
注意:源程序存放在考生文件夹下的BLANK1.C中。
不得增行或删行,也不得更改程序的结构!
1 #include<stdio.h>
2 #include<stdlib.h>
3 int fun(char *source,char*target)
4 {FILE *fs,*ft; char ch;
5 /**********found**********/
6 if((fs=fopen(source,_1__))==NULL)
7 return 0;
8 if((ft=fopen(target,’’w’’))==NULL)
9 return 0;
10 printf(’’\nThe data in file:\n’’);
11 ch=fgetc(fs);
12 /**********found**********/
13 while(!feof(__2__))
14 { putchar(ch);
15 /**********found**********/
16 fputc(ch,__3__);
17 ch=fgetc(fs);
18 }
19 fclose(fs);fclose(ft);
20 printf(’’\n\n’’);
21 return 1;
22 }
23 main()
24 { char sfname[20]=’’myfile1’’, tfname[20]=’’myfile2’’;
25 FTTE *myf;int i;char c;
26 myf=fopen(sfname,’’w’’);
27 printf(’’\nThe originaldata:\n’’);
28 for(i=1;i<30;i++)
29 { c=’A’+rand() %25;
30 fprintf(myf,’’%c’’,c);
31 printf(’’%c’’,c);}
32 fclose(myf);printf(’’\n\n’’);
33 if(fun(sfname,tfname))
34 printf(’’Succeed!’’);
35 else printf(’’Fail!’’);
36 }
(1)’’r’’ (2)fs (3)ft
解析:第一空:将指定源文件中的内容复制到指定的目标文件中,源文件只需读,因此以只读方式打开即可,故第一空处应该是“if((fs=fopen(source,\\
程序修改题
2.给定程序MODI1.C中fun函数的功能是:求
s=aa…aa-…-aaa-aa-a
(此处aa…aa表示n个a,a和n的值在1至9之间)
例如a=3,n=6,则以上表达式为:
s=333333-33333-3333.333-33-3
其值是:296298
a和n是fun函数的形参,表达式的值作为函数值传回main函数。
请改正程序中的错误,使它能计算出正确的结果。
注意:不要改动main函数,不得增行或删行,也不得更改程序的结构!
1 #include<stdio.h>
2 long fun(int a,int n)
3 { int j;
4 /**********found**********/
5 long s=0,t=1;
6 for(j=0;j<n;j++)
7 t=t *10+a;
8 s=t;
9 for(j=1;j<n;j++){
10 /**********found**********/
11 t=t%10;
12 s=s-t;
13 }
14 return(s);
15 }
16 main()
17 { int a,n ;
18 printf(’’\nPlease enter a and n:’’);
19 scanf(’’%d%d’’,&a,&n);
20 printf(’’The value of function is:%id\n’’,fun(a,n));
21 }
(1)lonq s=0, t=0; (2)t=t/10;
解析:函数的功能是求s=aa…aa-…-aaa-aa-a。
(1)当进入第一循环,“t=t*10+a;”语句,如果输入的a是3,并且利用题目中给出的初始化值1,计算得出t的值为13,而实际应该是3,由此可知t的初值设置不正确,不应该是1。所以将“long s=0,t=1;”改为“long s=0,t=0;”。
(2)循环中通过语句“t=t%10;”来获得每一项,每循环一次,t的值应缩小10倍,这里应该用除以10来实现,而不能用“%”求余数。所以将“t=t%10;”改为“t=t/10;”。
程序设计题
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 {/*本函数用于打开文件,输入数据,调用函数,输出数据
本文档预览:3600字符,共4162字符,源文件无水印,下载后包含无答案版和有答案版,查看完整word版点下载