1、二级 C语言机试-153 及答案解析(总分:100.00,做题时间:90 分钟)一、填空题(总题数:1,分数:30.00)函数 fun的功能是:从三个形参 a,b,c 中找出中间的那个数,作为函数值返回。例如,当 a=3,b=5,c=4 时,中间的数为 4。注意:部分源程序已给出。请勿改动主函数 main和其他函数中的任何内容,仅在 fun函数的横线上填入所编写的若干表达式或语句。试题程序:#includestdio.hint fun(int a,int b,int c)int t;t=(ab)?(bc?b:(ac?c: (1) ):(ac)? (2) :(bc)?c: (3) );retur
2、n t;void main()int a1=3,a2=5,a3=4,r;r=fun(a1,a2,a3);printf(“/nThe middle number is:%d/n“,r);(分数:30.00)填空项 1:_填空项 1:_填空项 1:_二、改错题(总题数:1,分数:30.00)1.下列给定程序中函数 fun的功能是:将 p所指字符串中的所有字符复制到 b中,要求每复制三个字符之后插入一个空格。例如,若给 a输入字符串:”ABCDEFGHIJK”,调用函数后,字符数组 b中的内容为:”ABC DEF GHI JK”。请改正程序中的错误,使它能得出正确结果。注意:不要改动 main函数,
3、不得增行或删行,也不得更改程序的结构!试题程序:#includestdio.hvoid fun(char*p,char*b)int i,k=0;while(*p)i=1;while(i=3&*p)/*found*/bk=p;k+;p+;i+;if(*p)/*found*/bk+=“;bk=/0;void main()char a80,b80;printf(“Enter a string:“);gets(a);printf(“The original string:“);puts(a);fun(a,b);printf(“/nThe string after insert space:“);put
4、s(b);printf(“/n/n“);(分数:30.00)填空项 1:_三、编程题(总题数:1,分数:40.00)2.编写函数 fun,其功能是:求 ss所指字符串中指定字符的个数,并返回此值。例如,若输入字符串”123412132”,输入字符为”1”,则输出 3。注意:部分源程序已给出。请勿改动主函数 main和其他函数中的任何内容,仅在函数 fun的花括号中填入所编写的若干语句。试题程序:#includestdlib.h#includeconio.h#includestdio.h#define M 81int fun(char*ss,char c)int i=0;for(;*ss!=/0
5、;ss+)if(*ss=c)i+;/*求出 ss所指字符串中指定字符的个数*/return 1:void main()char aM,ch;system(“CLS“);printf(“/n Please enter a string:“);gets(a);printf(“/nPlease enter a char:“);ch=getchar();printf(“/nThe number of the char is:%d/n“,fun(a,ch);(分数:40.00)_二级 C语言机试-153 答案解析(总分:100.00,做题时间:90 分钟)一、填空题(总题数:1,分数:30.00)函数
6、fun的功能是:从三个形参 a,b,c 中找出中间的那个数,作为函数值返回。例如,当 a=3,b=5,c=4 时,中间的数为 4。注意:部分源程序已给出。请勿改动主函数 main和其他函数中的任何内容,仅在 fun函数的横线上填入所编写的若干表达式或语句。试题程序:#includestdio.hint fun(int a,int b,int c)int t;t=(ab)?(bc?b:(ac?c: (1) ):(ac)? (2) :(bc)?c: (3) );return t;void main()int a1=3,a2=5,a3=4,r;r=fun(a1,a2,a3);printf(“/nTh
7、e middle number is:%d/n“,r);(分数:30.00)填空项 1:_ (正确答案:a)解析:填空项 1:_ (正确答案:a)解析:填空项 1:_ (正确答案:b)解析:解析 本题考查条件运算符嵌套构成复杂的条件表达式的能力。条件运算符规则为:表达式?a:b,首先判断表达式值,若为真(即非零)则取 a值作为整条语句的值,否则取 b作为整条语句的值。其中条件 fun函数的功能是:从三个形参 a,b,c 中找出中间的那个数,作为函数值返回。fun 函数中复杂的表达式可以转换成 If-else语句,则可以清楚地判断出第 1处填 a,第 2处填 a,第 3处填 b。二、改错题(总题
8、数:1,分数:30.00)1.下列给定程序中函数 fun的功能是:将 p所指字符串中的所有字符复制到 b中,要求每复制三个字符之后插入一个空格。例如,若给 a输入字符串:”ABCDEFGHIJK”,调用函数后,字符数组 b中的内容为:”ABC DEF GHI JK”。请改正程序中的错误,使它能得出正确结果。注意:不要改动 main函数,不得增行或删行,也不得更改程序的结构!试题程序:#includestdio.hvoid fun(char*p,char*b)int i,k=0;while(*p)i=1;while(i=3&*p)/*found*/bk=p;k+;p+;i+;if(*p)/*fo
9、und*/bk+=“;bk=/0;void main()char a80,b80;printf(“Enter a string:“);gets(a);printf(“The original string:“);puts(a);fun(a,b);printf(“/nThe string after insert space:“);puts(b);printf(“/n/n“);(分数:30.00)填空项 1:_ (正确答案:(1)bk=*p;(2)bk=;k+;)解析:解析 此题,首先要知道函数的参数类型可以是整型、实型、字符型和指针型。此处正是指针类型变量作为函数的参数,因此 bk=*p,而不
10、是 bk=p;题目要求在三个字符后加一个空格。通过条件表达式 i=3&*p,找到不需移动的字符(从第 4个位置开始,每隔 3个字符)并将其存入数组 b中,此时下标落到了需要移动字符的位置,将数组 b中此位置插入空格,具体语句为:bk=;k+,继续执行直到处理到字符串 p的最后一个字符。三、编程题(总题数:1,分数:40.00)2.编写函数 fun,其功能是:求 ss所指字符串中指定字符的个数,并返回此值。例如,若输入字符串”123412132”,输入字符为”1”,则输出 3。注意:部分源程序已给出。请勿改动主函数 main和其他函数中的任何内容,仅在函数 fun的花括号中填入所编写的若干语句。
11、试题程序:#includestdlib.h#includeconio.h#includestdio.h#define M 81int fun(char*ss,char c)int i=0;for(;*ss!=/0;ss+)if(*ss=c)i+;/*求出 ss所指字符串中指定字符的个数*/return 1:void main()char aM,ch;system(“CLS“);printf(“/n Please enter a string:“);gets(a);printf(“/nPlease enter a char:“);ch=getchar();printf(“/nThe number of the char is:%d/n“,fun(a,ch);(分数:40.00)_正确答案:(int fun(char*ss,char c)int i=0;for(;*ss!=/0;ss+)if(*ss=c)i+;/*求出 ss所指字符串中指定字符的个数*/return i;)解析:解析 此题考查用 for循环遍历字符串和通过条件表达式*ss!=/0判断字符串是否结束。给字符串加上结束标识/0,通过 for循环遍历字符串中每一个字符,在遇到结束标识前,如果遇到指定(即用户输入)字符,变量 i加 1,最后将变量 i返回,即用户输入字符在串中出现的次数。