1、国家二级 C语言机试(操作题)模拟试卷 215及答案与解析 一、程序填空题 1 给定程序中,函数 fun的功能是:根据形参 i的值返回某个函数的值。当调用正确时,程序输出: x1=5 oooooo x2=3 0000100, x1*x1+x1*x2=40 000000。 注意:部分源程序在文件 BLANK1 C中。 不得增行或删行,也不得更改程序的结构 ! 试题程序: 1 #include stdio h 2 double f1(double x) 3 return x*x; ) 4 double f2(double x, double y) 5 return x*y; ) 6 *found*
2、 7 【 1】 fun(int i, double x, double y) 8 if(i=1) 9 *found* 10 return 【 2】 (x); 11 else 12 *found* 13 return 【 3】 (x, y); 14 15 main() 16 double x1=5, x2=3, r; 17 r=fun(1, x1, x2); 18 r+=fun(2, x1, x2); 19 printf( nx1= f, x2= f, x1*x1+x1*x2= f n n, x1, x2, r); 20 二、程序修改题 2 下列给定程序中,函数 fun的功能是:删除指针 P所指
3、字符串中的所有空白字符(包括制表符、回车符及换行符 )。 输入字符串时用 “#”结束输入。 请改正程序中的错误 ,使它能输出正确的结果。 注意:不要改动 main函数,不得增行或删行,也不得更改程序的结构 ! 试题程序: 1 #include string h 2 #include stdio h 3 #include ctype h 4 fun(char*p) 5 6 int i, t ; char c80; 7 *found* 8 For(i=0, t=0; pi; i+) 9 if(!isspace(*(p+i) 10 ct+=pi; 11 *found* 12 ct= 0; 13 st
4、rcpy(p, c); 14 15 void main() 16 17 char c, s80; 18 int i=0; 19 printf(Input a string: ); 20 c=getchar(); 21 while(c!=#) 22 si=c; i+; c=getchar(); 23 si= 0; 24 fun(s); 25 puts(s); 26 三、程序设计题 3 函数 fun的功能是:将 a、 b两个两位正整数合并成一个新的整数放在 c中。合并的方式是:将 a中的十位和个位数依次放在变量 c的百位和个位上, b中的十位和个位数依次放在变量 c的千位和十位上。 例如,当 a=
5、45, b=12,调用该函数后 c=1425。 注意:部分源程序给出如下。 请勿改动主函数 main和其他函数中的任何内容,仅在函数 fun的花括号中填入你编写的若干语句。 试题程序: 1 #include conio h 2 #include stdio h 3 void fun(int a, int b, long*c) 4 5 6 7 main() 8 9 int a , b; 10 long c; 11 printf(Input a, b: ); 12 scanf(“ d d, a, b); 13 fun(a, b, c); 14 printf(The result is: id n,
6、 c); 15 国家二级 C语言机试(操作题)模拟试卷 215答案与解析 一、程序填空题 1 【正确答案】 (1)double(2)f1 (3)f2 【试题解析】 填空 1:本空函数 fun的返回值,根据 return可知,不论返回的是f1还是 f2,它们的返回值均为 double型的,故此空应该填写 double。 填空 2:因为函数 fun的功能是根据形参 i的值返回某个函数的值,当 i等于 1时 ,应该返回的是 f1。 填空 3:如果不满足 if的话,应该返回的是 f2。 二、程序修改题 2 【正确答案】 (1)for(i=0, t=0; pi; i+) (2)ct= 0; 【试题解析】
7、 该题目考查 C语言关键字的书写, C语言中关键字是区分大小写的。另外为字符串结尾添加结束符时应书写为 0,而非 0, 0表示一个字符串。该程序的 if条件中应用了 isspace函数,该函数的功能是检查 ch是否为空格、跳格符 (制表符 )或换行符。 三、程序设计题 3 【正确答案 】 1 void fun(int a, int b, long*c) 2 3 *b 10获取 b的个位, a 10获取 a的十位, a 10获取 a的个位, b 10获取 b的十位 * 4 *=c=a 10+(b 10)*10+(a 10)*100+(b 10)*1000; 5 【试题解析】 本题的主要问题是如何取出 a和 b的个位数和十位数,取出后如何表示成 c中相应的位数。由于 a和 b都是只有两位的整数,所以分别对它们除 10可得到它们的十位数,分别用 10对它们求余可得到它们的个位数。得到后对 应乘以 1000、 100、 10、 1,就可得到 c的千位数、百位数、十位数和个位数。注意使用 c时要进行指针运算。
copyright@ 2008-2019 麦多课文库(www.mydoc123.com)网站版权所有
备案/许可证编号:苏ICP备17064731号-1