1、二级 C 语言机试-276 及答案解析(总分:100.00,做题时间:90 分钟)一、程序填空题(总题数:1,分数:30.00)1.下列给定程序中,函数 fun 的功能是:在形参 s 所指字符串中寻找与参数 c 相同的字符,并在其后插入一个与之相同的字符,若找不到相同的字符则不做任何处理。例如,若 s 所指字符串为“baacda”,c 中的字符为 a,执行后 s 所指字符串为“baaaacalaa”。请在下划线处填入正确的内容并将下划线删除,使程序得出正确的结果。注意:部分源程序给出如下。不得增行或删行,也不得更改程序的结构!试题程序:#includestdio.hvoid fun(char*
2、s,char c)int i,j,n;/*found*/for(i=0;si!= (1) ;i+)if(si=c)/*found*/n= (2) ;while(si+1+n!=/0)n+;for(j=i+n+1;ji;j-)sj+1=sj;/*found*/sj+1= (3) ;j=i+1;main()char s80=“baacda“,c;printf(“/nThe string:%s/n,s);pnntf(“/nInput a character:“);scanf(“%c“,fun(s,c);printf(“/nThe result is:%s/n“,s);(分数:30.00)_二、程序改
3、错题(总题数:1,分数:30.00)2.在主函数中从键盘输入若干个数放人数组中,用 0 结束输入并放在最后一个元素中。下列给定程序中,函数 fun 的功能是:计算数组元素中所有值为正数的平均值(不包括 0)。例如,数组中元素的值依次为:39、-47、21、2、-8、15、0,则程序的运行结果为 19250000。请改正程序中的错误,使它能得出正确的结果。注意:不要改动 main 函数,不得增行或删行,也不得更改程序的结构!试题程序:#includeconio.h#includescdio.hdouble fun(int x)/*found*/int sum=0.0;int c=0,i=0;wh
4、ile(xi!=0)if(xi0)sum+=xi;C+;i+;/*found*/sum/=c;return sum;main()int x1000;int i=0;printf(“/nPlease enter some dat a(endwith 0):“);doscanf(“%d“,while(xi+!=0);printf(“%lf/n“,fun(x);(分数:30.00)_三、程序设计题(总题数:1,分数:40.00)3.编写函数 fun,其功能是:根据以下公式计算 s,并将计算结果作为函数值返回,n 通过形参传人。(分数:40.00)_二级 C 语言机试-276 答案解析(总分:100.
5、00,做题时间:90 分钟)一、程序填空题(总题数:1,分数:30.00)1.下列给定程序中,函数 fun 的功能是:在形参 s 所指字符串中寻找与参数 c 相同的字符,并在其后插入一个与之相同的字符,若找不到相同的字符则不做任何处理。例如,若 s 所指字符串为“baacda”,c 中的字符为 a,执行后 s 所指字符串为“baaaacalaa”。请在下划线处填入正确的内容并将下划线删除,使程序得出正确的结果。注意:部分源程序给出如下。不得增行或删行,也不得更改程序的结构!试题程序:#includestdio.hvoid fun(char*s,char c)int i,j,n;/*found*
6、/for(i=0;si!= (1) ;i+)if(si=c)/*found*/n= (2) ;while(si+1+n!=/0)n+;for(j=i+n+1;ji;j-)sj+1=sj;/*found*/sj+1= (3) ;j=i+1;main()char s80=“baacda“,c;printf(“/nThe string:%s/n,s);pnntf(“/nInput a character:“);scanf(“%c“,fun(s,c);printf(“/nThe result is:%s/n“,s);(分数:30.00)_正确答案:(/0 (2)0 (3)c)解析:解析 本题关键字有:
7、字符串结束标识/0;变量赋初值;数组元素赋值。微分析填空 1:for 语句循环条件是判断字符串是否结束,即当前字符是否为/0。填空 2:while 语句用来计算与给定字符相同字符之后的字符串的长度,所以变量 n 赋初值为 O。填空 3:题目要求在与参数 c 相同的字符后面插入一个相同的字符,所以应填人 c。二、程序改错题(总题数:1,分数:30.00)2.在主函数中从键盘输入若干个数放人数组中,用 0 结束输入并放在最后一个元素中。下列给定程序中,函数 fun 的功能是:计算数组元素中所有值为正数的平均值(不包括 0)。例如,数组中元素的值依次为:39、-47、21、2、-8、15、0,则程序
8、的运行结果为 19250000。请改正程序中的错误,使它能得出正确的结果。注意:不要改动 main 函数,不得增行或删行,也不得更改程序的结构!试题程序:#includeconio.h#includescdio.hdouble fun(int x)/*found*/int sum=0.0;int c=0,i=0;while(xi!=0)if(xi0)sum+=xi;C+;i+;/*found*/sum/=c;return sum;main()int x1000;int i=0;printf(“/nPlease enter some dat a(endwith 0):“);doscanf(“%d
9、“,while(xi+!=0);printf(“%lf/n“,fun(x);(分数:30.00)_正确答案:(double sum=00; (2)sum/=c;)解析:解析 本题关键字有:变量的数据类型;除法运算符“/”。基本数据类型如下表:变量类型 类型说明符 字节字符型 char 1整型 int 2短整型 short int 2长整型 long int 4无符号型 unsianea 2无符号长整型 unsigned long4单精度实型 float 4双精度实型 double 8微分析(1)变量 sum 存放所有正数的平均值,应定义为 double 型。(2)除法运算符是“/”。三、程序设
10、计题(总题数:1,分数:40.00)3.编写函数 fun,其功能是:根据以下公式计算 s,并将计算结果作为函数值返回,n 通过形参传人。(分数:40.00)_正确答案:(double fun(int n)int i,s1=0fioat s=0.0;for(i=1;i=n;i+)s1=s1+i;/*求每一项的分母*/s=s+1 0/s1;/*求多项式的值*/refurn s;)解析:解析 本题关键字有:表达式值的计算;变量数据类型强制转换;for 循环语句;return 语句。微分析根据题意分析表达式的规律,得出通项。表达式的规律是 1+2+n 的倒数之和,可以通过 for 循环语句来实现。将各项进行累加,返回累加和。