1、二级 C 语言分类模拟题 274 及答案解析(总分:100.00,做题时间:90 分钟)一、程序填空题(总题数:1,分数:30.00)1.给定程序中,函数 fun 的功能是:将形参 n 所指变量中,各位上为偶数的数去除,剩余的数按原来从高位到低位的顺序组成一个新的数,并通过形参指针 n 传回所指变量。 例如,输入一个数:27638496,新的数:为 739。 请在程序的下划线处填入正确的内容并把下划线删除,使程序得出正确的结果。 注意:源程序存放在 下的 BLANK1.C 中。 不得增行或删行,也不得更改程序的结构! 给定源程序: #includestdio.h void fun(unsign
2、ed long *n) unsigned long x=0, i; int t; i=1; While(*n) /*found*/ t=*n% 1; /*found*/ if(t%2!= 2) x=x+t*i; i=i*10; *n=*n/10; /*found*/ *n= 3; main() unsigned long n=-1; while(n99999999|n0) printf(“Please input(0n100000000):“); scanf(“%ld“, fun( printf(“/nThe result is:%ld/n“, n); (分数:30.00)二、设计改错题(总题
3、数:1,分数:30.00)2.给定程序 MODI1.C 中函数 fun 的功能是:计算 n!。 例如,给 n 输入 5,则输出 120.000000。 请改正程序中的错误,使程序能输出正确的结果。 注意:不要改动 main 函数,不得增行或删行,也不得更改程序的结构! 给定源程序: #includestdio.h double fun(int n) double result=1.0; /*found*/ if n=0 return 1.0; while(n1 main 1 int n; printf(“Input N:“); scanf(“%d“, printf(“/n/n%d!=%lf/n
4、/n“, n, fun(n); (分数:30.00)三、程序设计题(总题数:1,分数:40.00)3.请编写一个函数 fun,它的功能是:将一个表示正整数的数字字符串转换为一个整数(不得调用 C 语言提供的将字符串转换为整数的函数)。例如,若输入字符串“1234”,则函数把它转换为整数值 1234。函数fun 中给出的语句仅供参考。 注意:部分源程序存在文件 PROG1.C 中。 请勿改动主函数 main 和其它函数中的任何内容,仅在函数 fun 的花括号中填入你编写的若干语句。 给定源程序: #includestdio.h #includestring.h long fun(char*p)
5、/*以下代码仅供参考*/ int i, len; /*len 为串长*/ long x=0; len=strlen(p); /*以下完成数字字符串转换为一个数字。注意:字符“0“不是数字 0*/ return x; main() /*主函数*/ char s6; long n; printf(“Enter a string:/n“); gets(s); n=fun(s); printf(“%ld/n“, n); (分数:40.00)_二级 C 语言分类模拟题 274 答案解析(总分:100.00,做题时间:90 分钟)一、程序填空题(总题数:1,分数:30.00)1.给定程序中,函数 fun
6、的功能是:将形参 n 所指变量中,各位上为偶数的数去除,剩余的数按原来从高位到低位的顺序组成一个新的数,并通过形参指针 n 传回所指变量。 例如,输入一个数:27638496,新的数:为 739。 请在程序的下划线处填入正确的内容并把下划线删除,使程序得出正确的结果。 注意:源程序存放在 下的 BLANK1.C 中。 不得增行或删行,也不得更改程序的结构! 给定源程序: #includestdio.h void fun(unsigned long *n) unsigned long x=0, i; int t; i=1; While(*n) /*found*/ t=*n% 1; /*found
7、*/ if(t%2!= 2) x=x+t*i; i=i*10; *n=*n/10; /*found*/ *n= 3; main() unsigned long n=-1; while(n99999999|n0) printf(“Please input(0n100000000):“); scanf(“%ld“, fun( printf(“/nThe result is:%ld/n“, n); (分数:30.00)解析:(1)10 (2)0 (3)x 答案考生文件夹 解析 填空 1:通过 t 对 10 求余,取出该数值的各个位。 填空 2:通过 if 条件语句实现奇偶数的判定。如果条件表达式对
8、2 求余为 0 即是偶数,反之是奇数。 填空 3:最后将剩余的数赋给 n 指问的元素。二、设计改错题(总题数:1,分数:30.00)2.给定程序 MODI1.C 中函数 fun 的功能是:计算 n!。 例如,给 n 输入 5,则输出 120.000000。 请改正程序中的错误,使程序能输出正确的结果。 注意:不要改动 main 函数,不得增行或删行,也不得更改程序的结构! 给定源程序: #includestdio.h double fun(int n) double result=1.0; /*found*/ if n=0 return 1.0; while(n1 main 1 int n;
9、printf(“Input N:“); scanf(“%d“, printf(“/n/n%d!=%lf/n/n“, n, fun(n); (分数:30.00)解析:(1)if(n=0) (2)result *=n-; 或result *=n; n-; 答案考生文件夹 解析 (1)这里是一个简单的格式错误,if 条件应该加括号。 (2)根据阶乘的概念,从 n 开始,n!=n*(n-1)!,直到 1,所以应该为 result *=n-;。三、程序设计题(总题数:1,分数:40.00)3.请编写一个函数 fun,它的功能是:将一个表示正整数的数字字符串转换为一个整数(不得调用 C 语言提供的将字符串
10、转换为整数的函数)。例如,若输入字符串“1234”,则函数把它转换为整数值 1234。函数fun 中给出的语句仅供参考。 注意:部分源程序存在文件 PROG1.C 中。 请勿改动主函数 main 和其它函数中的任何内容,仅在函数 fun 的花括号中填入你编写的若干语句。 给定源程序: #includestdio.h #includestring.h long fun(char*p) /*以下代码仅供参考*/ int i, len; /*len 为串长*/ long x=0; len=strlen(p); /*以下完成数字字符串转换为一个数字。注意:字符“0“不是数字 0*/ return x; main() /*主函数*/ char s6; long n; printf(“Enter a string:/n“); gets(s); n=fun(s); printf(“%ld/n“, n); (分数:40.00)_正确答案:()解析:for(; ilen; i+) x=x*10+*p-“0“; /*将字符串转成相应的整数*/ p+; 答案考生文件夹 解析 注意:*p 是一个字符(如“9“、“4“),并不是一个数,要将其转成相应的数字需令其减去“0“(不是“/0“),即*p-“0“就得到*p 这个字符的相应数字,如“0“-“0“=0、“8“-“0“=8 等。