1、全国计算机等级考试二级 C语言上机题库试卷一 2013年 3月及答案解析(总分:3.00,做题时间:90 分钟)1.给定程序中,函数 fun的功能是:将形参 n所指变量中,各位上为偶数的数去 除,剩余的数按原来从高位到低位的顺序组成一个新的数,并通过形参指针 n传回 所指变量。 例如,输入一个数:27638496,新的数:为 739。 请在程序的下划线处填入正确的内容并把下划线删除, 使程序得出正确的结果。 注意:源程序存放在考生文件夹下的 BLANK1.C中。 不得增行或删行,也不得更改程序的结构! 给定源程序: #include void fun(unsigned long *n) uns
2、igned long x=0, i; int t; i=1; while(*n) t=*n % _1_; if(t%2!= _2_) x=x+t*i; i=i*10; *n =*n /10; *n=_3_; main() unsigned long n=-1; while(n99999999|n_2.给定程序 MODI1.C中函数 fun 的功能是:计算 n!。 例如,给 n输入 5,则输出 120.000000。 请改正程序中的错误,使程序能输出正确的结果。 注意:不要改动 main函数,不得增行或删行,也不得更改程序的结构! 给定源程序: #include double fun ( int
3、 n ) double result = 1.0 ; if n = = 0 return 1.0 ; while( n 1 if n = = 0 return 1.0 ; while( n 1 main ( ) int n ; printf(“Input N:“) ; scanf(“%d“, printf(“/n/n%d! =%lf/n/n“, n, fun(n) ; (分数:1.00)_正确答案:()解析:第一处:条件语句书写格式错误,应改为:if (n=0)。 第二处:语句后缺少分号。3.请编写一个函数 fun,它的功能是:将一个数字字符串转换为一个整数(不得调用 C语言提供的将字符串转换
4、为整数的函数)。例如,若输入字符串“-1234“,则函数把它转换为整数值 -1234。函数 fun中给出的语句仅供参考。 注意: 部分源程序存在文件 PROG1.C文件中。 请勿改动主函数 main和其它函数中的任何内容, 仅在函数 fun的花括号中填入你编写的若干语句。 给定源程序: #include #include long fun ( char *p) int i, len, t; /* len为串长,t 为正负标识 */ long x=0; len=strlen(p); if(p0=-) t=-1; len-; p+; else t=1; /* 以下完成数字字符串转换为一个数字 */
5、 return x*t; main() /* 主函数 */ char s6; long n; printf(“Enter a string:/n“) ; gets(s); n = fun(s); printf(“%ld/n“,n); NONO ( ); NONO ( ) /* 本函数用于打开文件,输入数据,调用函数,输出数据,关闭文件。 */ FILE *fp, *wf ; int i ; char s20 ; long n ; fp = fopen(“c:/test/in.dat“,“r“) ; wf = fopen(“c:/test/out.dat“,“w“) ; for(i = 0 ;
6、i 10 ; i+) fscanf(fp, “%s“, s) ; n = fun(s); fprintf(wf, “%ld/n“, n) ; fclose(fp) ; fclose(wf) ; (分数:1.00)_正确答案:(#include #include long fun ( char *p) int i, len, t; /* len 为串长,t 为正负标识 */ long x=0; len=strlen(p); if(p0=-) t=-1; len-; p+; else t=1; /* 以下完成数字字符串转换为一个数字 */ while(*p) x = x*10-48+(*p+);
7、return x*t; main() /* 主函数 */ char s6; long n; printf(“Enter a string:/n“) ; gets(s); n = fun(s); printf(“%ld/n“,n); NONO ( ); NONO ( ) /* 本函数用于打开文件,输入数据,调用函数,输出数据,关闭文件。 */ FILE *fp, *wf ; int i ; char s20 ; long n ; fp = fopen(“c:/test/in.dat“,“r“) ; wf = fopen(“c:/test/out.dat“,“w“) ; for(i = 0 ; i 10 ; i+) fscanf(fp, “%s“, s) ; n = fun(s); fprintf(wf, “%ld/n“, n) ; fclose(fp) ; fclose(wf) ; )解析: