C语言编程:找数组中最大和次大数及低于平均分人数

需积分: 1 0 下载量 107 浏览量 更新于2024-07-23 收藏 1.88MB DOC 举报
"C语言机试题库,包含2010年最新题型,涉及数组操作和统计功能" 在计算机2级C语言机试题库中,我们有两个编程问题,主要涉及数组处理和数值统计。 首先来看第一题。题目要求编写一个名为`fun`的函数,该函数的功能是在给定的数组中找到最大值和次大值,并将它们分别与数组的前两个元素进行对调。在提供的代码中,存在错误,导致无法得到预期结果。错误出现在注释有"found"的地方,即交换元素的代码段。正确的做法是在找到最大值和次大值后,先交换a[1]和max1的位置,再交换a[0]和max2的位置,因为题目规定最大值和次大值不在a[0]和a[1]中。因此,修正后的代码应为: ```c t = a[1]; a[1] = a[m1]; a[m1] = t; t = a[0]; a[0] = a[m2]; a[m2] = t; ``` 这样,最大值和次大值就能被正确地放到数组的前两个位置。 接下来是第二题。函数`fun`需要计算n个学生成绩中低于平均分的人数,并将这个人数作为函数返回值。平均分存储在`aver`指向的内存中。题目给出的示例输入显示,平均分为75.5625,低于这个平均分的学生有4人。在提供的代码中,我们需要检查并修正错误以计算出正确的结果。这里,错误可能在于计算平均分和统计低于平均分人数的部分。确保计算平均分时使用正确的除法操作符(浮点除法),并用循环来统计人数。正确的代码段可能如下: ```c float aver = 0; int count = 0; for (int i = 0; i < n; i++) { scanf("%f", &x); aver += x; } aver /= n; for (int i = 0; i < n; i++) { scanf("%f", &x); if (x < aver) { count++; } } return count; ``` 这样,程序就能正确地计算平均分,并统计出低于平均分的学生人数。 通过这两个题目,我们可以复习C语言中的数组操作,包括遍历数组、比较元素、交换元素以及计算平均值和统计条件满足的元素数量等基本技能。这对于准备计算机2级考试的考生来说是非常重要的练习。