1、二级 C 语言-331 (1)及答案解析(总分:100.00,做题时间:90 分钟)一、程序填空题(总题数:1,分数:30.00)1.给定程序的功能是分别统计字符串中大写字母和小写字母的个数。 例如,给字符串 ss 输入:AaaaBBb123CCccccd,则输出结果应为:upper=5,lower=9 注意:部分源程序给出如下。 请勿改动函数中的其他内容,仅在横线上填入所编写的若干表达式或语句。 试题程序: #includestdio.h void fun(char*s, int*a, int*b) while(*s) if(*s=“A“ if(*s=“a“ void main() char
2、 s100; int upper=0, lower=0; printf(“/nPlease a string: “); gets(s); fun(s, printf(“/n upper=%d, lower=%d/n“, 3); (分数:30.00)二、程序改错题(总题数:1,分数:40.00)2.下列给定程序中函数 fun()的功能是:求出如下分数序列的前 n 项之和,结果通过函数值返回。 (分数:40.00)_三、程序设计题(总题数:1,分数:30.00)3.请编写函数 fun(),其功能是:找出 2M 整型二维数组中最大元素的值,并将此值返回调用函数。 注意:部分源程序给出如下。 请勿改动
3、 main()函数和其他函数中的任何内容,仅在函数 fun()的花括号中填入编写的若干语句。 试题程序: #define M 4 #includestdio.h int fun(int aM) void main() int arr2M=5, 8, 3, 45, 76, -4, 12, 2; printf(“max=%d/n“, fun(arr); (分数:30.00)_二级 C 语言-331 (1)答案解析(总分:100.00,做题时间:90 分钟)一、程序填空题(总题数:1,分数:30.00)1.给定程序的功能是分别统计字符串中大写字母和小写字母的个数。 例如,给字符串 ss 输入:Aaa
4、aBBb123CCccccd,则输出结果应为:upper=5,lower=9 注意:部分源程序给出如下。 请勿改动函数中的其他内容,仅在横线上填入所编写的若干表达式或语句。 试题程序: #includestdio.h void fun(char*s, int*a, int*b) while(*s) if(*s=“A“ if(*s=“a“ void main() char s100; int upper=0, lower=0; printf(“/nPlease a string: “); gets(s); fun(s, printf(“/n upper=%d, lower=%d/n“, 3);
5、(分数:30.00)解析:(*a)+或+(*a)或*a=*a+1 或*a+=1 (*b)+或+(*b)或*b=*b+1 或*b+=1 upper, lower 解析 fun()函数的作用是统计字符串中大写字母和小写字母的个数,参数 a、b 分别记录大写字母、小写字母的个数;主函数的作用是将大写字母和小写字母的个数显示出来,此题较简单。二、程序改错题(总题数:1,分数:40.00)2.下列给定程序中函数 fun()的功能是:求出如下分数序列的前 n 项之和,结果通过函数值返回。 (分数:40.00)_正确答案:()解析:(1)错误:fun(int n) 正确:double fun(int n)
6、(2)错误:s=s+(Double)a/b; 正确:s=s+(double)a/b; 解析 本题考查函数的定义规则。函数定义的一般形式为类型标识符函数名(形式参数表列)函数体。fun()函数中,最后返回的是变量 s,由变量 s 的定义可知,返回值是 double型,所以 fun()函数定义时应明确注明标识符 double 类型。Double 为书写问题,写程序时切记书写格式。三、程序设计题(总题数:1,分数:30.00)3.请编写函数 fun(),其功能是:找出 2M 整型二维数组中最大元素的值,并将此值返回调用函数。 注意:部分源程序给出如下。 请勿改动 main()函数和其他函数中的任何内
7、容,仅在函数 fun()的花括号中填入编写的若干语句。 试题程序: #define M 4 #includestdio.h int fun(int aM) void main() int arr2M=5, 8, 3, 45, 76, -4, 12, 2; printf(“max=%d/n“, fun(arr); (分数:30.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 即为二维数组中的最大值。
copyright@ 2008-2019 麦多课文库(www.mydoc123.com)网站版权所有
备案/许可证编号:苏ICP备17064731号-1