1、二级 C语言机试-279 及答案解析(总分:100.00,做题时间:90 分钟)一、程序填空题(总题数:1,分数:30.00)1.下列给定程序中,函数 fun的功能是:统计形参 s所指的字符串中数字字符出现的次数,并存放在形参c所指的变量中,最后在主函数中输出。例如, 若形参 s所指的字符串为“abcdef35adah3kjsdf7”,则输出结果为 4。请在下划线处填入正确内容并将下划线删除,使程序得出正确的结果。注意:部分源程序给出如下。不得增行或删行,也不得更改程序的结构!试题程序:#includestdio.hvoid fun(char*s,int*t)int i,n;n=0;/*fou
2、nd*/for(i=0; (1) =0;i+)/*found*/if(sil=0/*found*/(3) main()char s80=“abcdef35adgh3kjsdf7“;int t;printf(“/nThe original string is:%s/n“,s);fun(s,printf(“/nThe result is:%d/n“t);(分数:30.00)_二、程序改错题(总题数:1,分数:30.00)2.下列给定程序中,函数 fun的功能是:实现两个变量值的交换,规定不允许增加语句和表达式。例如,变量 a中的值原为 8,b 中的值原为 3,程序运行后 a中的值为 3,b 中的值
3、为 8。请改正程序中的错误,使它得出正确的结果。注意:不要改动 main函数,不得增行或删行,也不得更改程序的结构!试题程序:#includestdlib.h#includeconio.h#includestdio.hint fun(int*x,int Y)int f;/*found*/t=x;x=y;/*found*/return(y);void main()int a=3,b=8;system(“CLS“);printf(“%d%d/n“,a,b);b=fun(printf(“%d%d/n“,a,b);(分数:30.00)_三、程序设计题(总题数:1,分数:40.00)3.编写函数 fun
4、,其功能是:求出 11000 能被 7或 11整除,但不能同时被 7和 11整除的所有整数,并将其放在 a所指的数组中,通过 n返回这些数的个数。注意:部分源程序给出如下。请勿改动主函数 main和其他函数中的任何内容,仅在函数 fun的花括号中填入你编写的若干语句。试题程序:#includestdlib.h#includeconio.h#includestdio.hvoid fun(int*a,int*n)void main()(int aa1000,n,k;system(“CLS“);fun(aa,for(k=0;kn;k+)if(k+1)%10=0)(printf(“%5d“,aak);
5、printf(“/n“);) /*一行写 9个数*/elseprintf(“%5d“,aak);(分数:40.00)_二级 C语言机试-279 答案解析(总分:100.00,做题时间:90 分钟)一、程序填空题(总题数:1,分数:30.00)1.下列给定程序中,函数 fun的功能是:统计形参 s所指的字符串中数字字符出现的次数,并存放在形参c所指的变量中,最后在主函数中输出。例如, 若形参 s所指的字符串为“abcdef35adah3kjsdf7”,则输出结果为 4。请在下划线处填入正确内容并将下划线删除,使程序得出正确的结果。注意:部分源程序给出如下。不得增行或删行,也不得更改程序的结构!试
6、题程序:#includestdio.hvoid fun(char*s,int*t)int i,n;n=0;/*found*/for(i=0; (1) =0;i+)/*found*/if(sil=0/*found*/(3) main()char s80=“abcdef35adgh3kjsdf7“;int t;printf(“/nThe original string is:%s/n“,s);fun(s,printf(“/nThe result is:%d/n“t);(分数:30.00)_正确答案:(si (2)9 (3)*t=n)解析:解析 本题关键字有:for 循环语句;if 语句;指针变量。
7、if 语句的条件表达式一般考查内容有:条件判断与=、与=、=与!=的区别;逻辑判断/*found*/t=x;x=y;/*found*/return(y);void main()int a=3,b=8;system(“CLS“);printf(“%d%d/n“,a,b);b=fun(printf(“%d%d/n“,a,b);(分数:30.00)_正确答案:(t=X;*X=y; (2)refum(t)或 return t;)解析:解析 本题关键字有:指针型变量;return 语句。微分析(1)用变量 t作为中间变量进行数据交换,由于 x是指针变量,所以应使用*x。(2)由 b=fun(system
8、(“CLS“);fun(aa,for(k=0;kn;k+)if(k+1)%10=0)(printf(“%5d“,aak);printf(“/n“);) /*一行写 9个数*/elseprintf(“%5d“,aak);(分数:40.00)_正确答案:(void fun(int*a,int*n)int i,j=0;for(i=1:i=1000;i+)/*求 l到 1000之内能被 7或 11整除但不能同时被 7和 11整除的所有整数,并放入数组 a中*/if(i%7=0|i%11=0)*n=j;/*传回满足条件的数的个数*/)解析:解析 本题关键字有:if 语句;逻辑运算符;for 循环语句。微分析本题可使用循环判断结构来实现,题目要求找出 11000 之间能被 7或 11整除,但不能同时被 7和 11整除的所有整数,能同时被 7和 11整除的整数一定能被 77整除,先进行被 7和被 11整除之间的或运算,再进行不能被 77整除的与运算,从而得出 if语句。其中(i%7=0|i%11=0)两边小括号不能省略。