1、二级 C语言机试-277 及答案解析(总分:100.00,做题时间:90 分钟)一、程序填空题(总题数:1,分数:30.00)1.下列给定程序中,函数 fun的功能是:将形参 s所指字符串中下标为奇数的字符取出,并按 ASC码大小递增排序,将排序后的字符存入形参 P所指的字符数组中,形成一个新串。例如,形参 s所指的字符串为“baawrskjghzlicda”,执行后 P所指字符数组中的字符串应为“aachjlsw”。请在下划线处填入正确的内容并将下划线删除,使程序得出正确的结果。注意:部分源程序给出如下。不得增行或删行,也不得更改程序的结构!试题程序:#includestdio.hvoid
2、fun(char*s,char*p)int i,j,n,x,t;n=0;for(i=0;si!=/0;i+)n+;for(i=l;i/*fOund*/(1) ;/*found*/for(j= (2) +2;jn;j=j+2)if(stsj)t=j;if(t!=i)(x=si;si=st;st=x;)for(i=1,j=0;in;i=i+2,j+)pj=si;/*found*/pj= (3) ;(char s80=“baawrskjghzlicda“,p50;printf(“/nThe original string is:%s/n“,s);fun(s,p);printf(“/nThe resu
3、lt is:%s/n“,p);(分数:30.00)_二、程序改错题(总题数:1,分数:30.00)2.下列给定程序中,函数 fun的功能是:用下面的公式求 的近似值,直到最后一项的绝对值小于指定的数(参数 num)为止。(分数:30.00)_三、程序设计题(总题数:1,分数:40.00)3.编写函数 fun,其功能是:删除一个字符串中指定下标的字符。其中,a 指向原字符串,删除指定字符后的字符串存放在 b所指的数组中,n 放指定的下标。例如,输入一个字符串“world”,然后输入 3,则调用该函数后的结果为“word”。注意:部分源程序给出如下。请勿改动主函数 main和其他函数中的任何内容,
4、仅在函数 fun的花括号中填入你编写的若干语句。试题程序:#includestdlib.h#includestdio.h#includeconio.h#define LEN 20void fun(char a,har b,int n)void main()char strlLEN,str2LEN;int n;system(“CLS“);printf(“Enter the string:/n“);gets(str1);printf(“Enter the position of the string deleted:“);scanf(“%d“,funstr1,str2,n);printf(“The
5、 new string is:%s/n“,str2);(分数:40.00)_二级 C语言机试-277 答案解析(总分:100.00,做题时间:90 分钟)一、程序填空题(总题数:1,分数:30.00)1.下列给定程序中,函数 fun的功能是:将形参 s所指字符串中下标为奇数的字符取出,并按 ASC码大小递增排序,将排序后的字符存入形参 P所指的字符数组中,形成一个新串。例如,形参 s所指的字符串为“baawrskjghzlicda”,执行后 P所指字符数组中的字符串应为“aachjlsw”。请在下划线处填入正确的内容并将下划线删除,使程序得出正确的结果。注意:部分源程序给出如下。不得增行或删行
6、,也不得更改程序的结构!试题程序:#includestdio.hvoid fun(char*s,char*p)int i,j,n,x,t;n=0;for(i=0;si!=/0;i+)n+;for(i=l;i/*fOund*/(1) ;/*found*/for(j= (2) +2;jn;j=j+2)if(stsj)t=j;if(t!=i)(x=si;si=st;st=x;)for(i=1,j=0;in;i=i+2,j+)pj=si;/*found*/pj= (3) ;(char s80=“baawrskjghzlicda“,p50;printf(“/nThe original string is
7、:%s/n“,s);fun(s,p);printf(“/nThe result is:%s/n“,p);(分数:30.00)_正确答案:(t=i (2)i (3)/0或 0)解析:解析 本题关键字有:变量赋值;for 循环语句;数组元素赋值;字符串结束标识/0。微分析填空 1:为实现下标为奇数的字符的排序,将下标 i赋值给中间变量 t。填空 2:for 循环语句实现对下标为奇数的字符的排序操作,所以应填入 j=i+2;。填空 3:将下标为奇数的字符存入 p所指的数组后,在数组末尾加人字符串结束标识/0。二、程序改错题(总题数:1,分数:30.00)2.下列给定程序中,函数 fun的功能是:用下
8、面的公式求 的近似值,直到最后一项的绝对值小于指定的数(参数 num)为止。(分数:30.00)_正确答案:(while(fabs(t)=num)(2)t=s/n;)解析:解析 本题关键字有:while 循环语句;求余运算符“%”和除法运算符“/”的区别。微分析(1)while语句用来累计计算 P1的值,根据题意最后一项的绝对值小于给定参数循环终止,因此应当是while(fabs(t)=num)。(2)每一项的值存放在变量 f中,每一项均为 1或-1 除以一个数,所以应使用除法运算符。三、程序设计题(总题数:1,分数:40.00)3.编写函数 fun,其功能是:删除一个字符串中指定下标的字符。
9、其中,a 指向原字符串,删除指定字符后的字符串存放在 b所指的数组中,n 放指定的下标。例如,输入一个字符串“world”,然后输入 3,则调用该函数后的结果为“word”。注意:部分源程序给出如下。请勿改动主函数 main和其他函数中的任何内容,仅在函数 fun的花括号中填入你编写的若干语句。试题程序:#includestdlib.h#includestdio.h#includeconio.h#define LEN 20void fun(char a,har b,int n)void main()char strlLEN,str2LEN;int n;system(“CLS“);printf(
10、“Enter the string:/n“);gets(str1);printf(“Enter the position of the string deleted:“);scanf(“%d“,funstr1,str2,n);printf(“The new string is:%s/n“,str2);(分数:40.00)_正确答案:(void fun(char achar b,int n)int i,k=0;for(i=0;ai!=/0;i+)if(i!=n) /*将不是指定下标的字符存入数组 b中*/bk+=ai;bk=/0 /*在字符串最后加上结束标识符*/)解析:解析 本题关键字有:字符串操作;循环语句。微分析根据题意要删除字符串中指定下标的字符,也就是保留非指定下标的字符,所以 if语句为 if(i!=n),在字符串末尾加上字符串结束标识符/0。