1、二级 C语言机试-123 及答案解析(总分:100.00,做题时间:90 分钟)一、填空题(总题数:1,分数:30.00)给定程序的功能是分别统计字符串中大写字母和小写字母的个数。例如,给字符串 ss输入:AaaaBBb123CCccccd,则输出结果应为:upper=5,lower=9注意:部分源程序已给出。请勿改动函数中的其他内容,仅在横线上填入所编写的若干表达式或语句。试题程序:#includestdio.hvoid fun(char*8,int*a,int*b)while(*s)if(*s=A&*s=Z)(1) ;if(*s=a&*s=z)(2) ;s+:main()char s100
2、;int upper=0,lower=0;printf(“/nPlease a string:“);gets(s);fun(s,&upper,&lower);printf(“/n upper=%d,lower=%d/n“, (3) );(分数:30.00)填空项 1:_填空项 1:_填空项 1:_二、改错题(总题数:1,分数:30.00)1.下列给定程序中函数 fun的功能是:求出如下分数序列的前 n项之和,和值通过函数值返回。(分数:30.00)填空项 1:_三、编程题(总题数:1,分数:40.00)2.请编写函数 fun,其功能是:找出 2M整型二维数组中最大元素的值,并将此值返回调用函数
3、。注意:部分源程序已给出。请勿改动主函数 main和其他函数中的任何内容,仅在函数 fun的花括号中填入所编写的若干语句。试题程序:#define M 4#includestdio.hint fun(int aM)void main()int arr2M=5,8,3,45,76,-4,12,2;printf(“max=%d/n“,fun(arr);(分数:40.00)_二级 C语言机试-123 答案解析(总分:100.00,做题时间:90 分钟)一、填空题(总题数:1,分数:30.00)给定程序的功能是分别统计字符串中大写字母和小写字母的个数。例如,给字符串 ss输入:AaaaBBb123CC
4、ccccd,则输出结果应为:upper=5,lower=9注意:部分源程序已给出。请勿改动函数中的其他内容,仅在横线上填入所编写的若干表达式或语句。试题程序:#includestdio.hvoid fun(char*8,int*a,int*b)while(*s)if(*s=A&*s=Z)(1) ;if(*s=a&*s=z)(2) ;s+:main()char s100;int upper=0,lower=0;printf(“/nPlease a string:“);gets(s);fun(s,&upper,&lower);printf(“/n upper=%d,lower=%d/n“, (3)
5、 );(分数:30.00)填空项 1:_ (正确答案:(*a)+或+(*a)或*a=*a+1 或*a+=1)解析:填空项 1:_ (正确答案:(*b)+或+(*b)或*b=*b+1 或*b+=1)解析:填空项 1:_ (正确答案:upper,lower)解析:解析 fun 函数的作用是统计字符串中大写字母和小写字母的个数,参数 a、b 分别记录大写字母、小写字母的个数;主函数的作用是将大写字母和小写字母的个数显示出来,此题较简单。二、改错题(总题数:1,分数:30.00)1.下列给定程序中函数 fun的功能是:求出如下分数序列的前 n项之和,和值通过函数值返回。(分数:30.00)填空项 1:
6、_ (正确答案:(1)错误:fun(int n)正确:double fun(int n)(2)错误:s=s+(Double)a/b;正确:s=s+(double)a/b;)解析:解析 本题考查函数的定义规则。函数定义的一般形式为类型标识符函数名(形式参数表列)函数体。fun 函数中,最后返回的是变量 s,由变量 s的定义可知,返回值是 double型,所以 fun函数定义时应明确注明标识符 double类型。double 为书写问题,写程序时切记书写格式。三、编程题(总题数:1,分数:40.00)2.请编写函数 fun,其功能是:找出 2M整型二维数组中最大元素的值,并将此值返回调用函数。注意
7、:部分源程序已给出。请勿改动主函数 main和其他函数中的任何内容,仅在函数 fun的花括号中填入所编写的若干语句。试题程序:#define M 4#includestdio.hint fun(int aM)void main()int arr2M=5,8,3,45,76,-4,12,2;printf(“max=%d/n“,fun(arr);(分数:40.00)_正确答案:(int fun(int aM)int i,j,max=a00;/*对二维数组进行遍历*/for(i=0;i2;i+)for(j=0;jM;j+)if(maxaij)/*将最大值保存在 max中*/max=aij:return max;)解析:解析 此题考查的是数组的查找算法。使用 for循环嵌套完成对二维数组的遍历。题目要求出最大值,则应采用将所有元素遍历一遍,逐个比较的方式完成。定义变量 max,将第一个元素赋值 max,然后通过 for循环将元素逐个与 max比较,遇到比 max大的则赋值 max,替换原有数据,当嵌套的 for循环结束后,max 即为二维数组中的最大值。