1、国家二级 C语言机试(操作题)模拟试卷 253及答案与解析 一、程序填空题 1 给定程序中,甬数 fun的功能是:将参数给定的字符串、整数、浮点数写到文本文件中,再用字符串方式从此文本文件中逐个读入,并调用库函数 atoi和 atof将字符串转换成相应的整数、浮点数,然后将其显示在屏幕上。 请存程序的下画线处填入正确的内容并把下画线删除,使程序得出正确的结果。 注意:部分源程序给出如下。 不得增行或删行,也不得更改程序的结构 ! 试题程序: 1 #include stdio h 2 #include stdlib h 3 void fun(char * s, int a, double f)
2、4 5 * found* 6 【 1】 fp; 7 chat sir100, str1100, sir2100; 8 int a1; double f1; 9 fp=fopen(file1 txt, w); 10 fprintf(fp, s d f n, s, a, f); 11 *found* 12 【 2】 ; 13 fp=fopen(file1 txt, r); 14 * found* 15 fscanf(【 3】 , s s s, str, str1, str2); 16 fclose(fp); 17 a1=atoi(str1); 18 f1=atof(str2); 19 printf
3、( nThe result: n n s d f n, str, a1, f1); 20 21 main() 22 char a10=Hello!; 23 int b=12345; 24 double c=98 76; 25 fun(a, b, c); 26 二、程序修改题 2 已知一个数列从 0项开始的前 3项: 0、 0、 1,以后的各项都是其相邻的前 3项之和。下列给定的程序中,函数 fun的功能是:计算并输出该数列前 n项的平方根之和 sum。 n的值通过形参传入。 例如,当 n=10时,程序的输出 结果应为 23 197745。 请改正程序中的错误,使它能得出正确的结果。 注意:部分
4、源程序在文件 MODI1 C中,不要改动 main函数,不得增行或删行,也不得更改程序的结构 ! 试题程序: 1 #include stdlib h 2 #include conio h 3 #include stdio h 4 #include math h 5 *found* 6 fun(int n) 7 double sum, s0, s1, s2, s; 8 int k; 9 sum=1 0; 10 if(n=2)sum=0 0; 11 s0=0 0; s1=0 0; s2=1 0; 12 for(k=4; k=nj k+) 13 s=s0+s1+s2; 14 sum+=sqrt(s)
5、; 15 s0=s1; s1=s2; s2=s; 16 17 *found* 18 return sum 19 20 void main() 21 int n; 22 system(CLS); 23 printf(Input N=); 24 scanf( d, n); 25 printf( f n, fun(n); 26 三、程序设计题 3 编写函数 fun,其功能是:求 Fi-bonacci数列中大于 t的最小的数,结果由函数返回。 Fibonacci数列 F(n)的定义为: F(0)=0, F(1)=1 F(n)=F(n-1)+F(n-2) 例如,当 t=1000时,函数值为 1597。
6、注意:部分源程序给出如下。 请勿改动主函数 main和其他函数中的任何内容,仅在函数 fun的花括号中填入你编写的若干语句。 试题程序: 1 #include conio h 2 #include math h 3 #include stdio h 4 int fun (int t) 5 6 7 8 main() 9 10 int n ; 11 n=1000; 12 printf(n= d, f= d n, n, fun(n); 13 国家二级 C语言机试(操作题)模拟试卷 253答案与解析 一、程序填空题 1 【正确答案】 (1)FILE* (2)fclose(fp) (3)fp 【试题解析
7、】 填空 1:从使用 fp=fopen(filel txt, w)可知 fp应该是文件类型指针,因此本空应该填写 FILE*。 填空 2:当对 fp作打开操作的时候,并进行不同的操作前,应该对其关闭,因为在第一次打开时是对 fp进行写操作,而在第二次打开后进行的是读操作,因此应该先对 fp进行 关闭,本空填 fclose(fp)。 填空 3: fscanf()是把文本文件输出,因此本空只能填写 fp。 二、程序修改题 2 【正确答案】 (1)double fun(int 11) (2)return sum; 【试题解析】 (1)根据函数的返回值可知函数 fun应定义为 double类型。 (2)语法错误,缺分号。 三、程序设计题 3 【正确答案】 1 int fun(int t) 2 3 int f0=0, f1=1, f; 4 do 5 *根据 Fiborlacci数列的定义求数值 * 6 f=f0+f1; 7 f0=f1; f1=f; 8 while(ft); *如果求的数值小于 t则继续 * 9 return f; 10 【试题解析】 根据所给数列定义不难发现,该数列最终的结果是由两个数列之和组成,所以可以在循环内部始终把 f看成是前两项之和,而 f0始终代表第 n-2项, f1代表第 n-1项。退出循环时得到的数 f,就是大于指定数的最小的数。
copyright@ 2008-2019 麦多课文库(www.mydoc123.com)网站版权所有
备案/许可证编号:苏ICP备17064731号-1