【程序设计】 -------------------------------------------------- 功能:统计出若干个学生的平均成绩,最高分以及得最高 分的人数。(最高分可能不止一个) 例如:输入10名学生的成绩分别为92,87,68,56,92, 84,67,75,92,66,则输出平均成绩为77.9, 最高分为92,得最高分的人数为3人。 ------------------------------------------------*/ #include <stdio.h> float Max=0;/*Max为最高分变量,注意最高分不止一个*/ int J=0; /*J为最高分的人数*/ float fun(float array[],int n) /********** End **********/ main( ) { float a[10],ave; int i=0; for(i=0;i<10;i++) scanf("%f",&a[i]); ave=fun(a,10); printf("ave=%f\n",ave); printf("max=%f\n",Max); printf("Total:%d\n",J); return 0; }
时间: 2023-08-15 16:11:59 浏览: 133
完整代码如下:
```c
#include <stdio.h>
float Max = 0; // 最高分变量,注意最高分不止一个
int J = 0; // 最高分的人数
float fun(float array[], int n) {
float sum = 0; // 总成绩
for (int i = 0; i < n; i++) {
sum += array[i];
if (array[i] > Max) {
Max = array[i];
J = 1;
} else if (array[i] == Max) {
J++; // 最高分的人数加1
}
}
return sum / n; // 平均成绩
}
int main() {
float a[10], ave;
for (int i = 0; i < 10; i++) {
scanf("%f", &a[i]);
}
ave = fun(a, 10);
printf("ave=%f\n", ave);
printf("max=%f\n", Max);
printf("Total:%d\n", J);
return 0;
}
```
思路解析:
1. 定义全局变量 `Max` 表示最高分,初始值为 0;
2. 定义全局变量 `J` 表示最高分的人数,初始值为 0;
3. 定义函数 `fun`,参数为一个浮点型数组和数组长度,返回值为平均成绩;
4. 在 `fun` 函数中遍历数组,累加所有成绩,同时判断每个成绩是否是最高分,如果是则更新 `Max` 变量,如果不是则继续遍历,如果相等则将 `J` 变量加 1;
5. 在主函数中读入 10 名学生的成绩,调用 `fun` 函数计算平均成绩并输出结果。
注意事项:
1. 要将 `Max` 和 `J` 变量定义为全局变量,因为需要在 `fun` 函数中更新它们的值;
2. 在输出最高分时要使用 `printf("max=%f\n", Max);`,而不是 `printf("max=%f\n", &Max);`,因为 `Max` 已经是一个变量了,不需要再取地址;
3. 在输出最高分的人数时要使用 `printf("Total:%d\n", J);`,而不是 `printf("Total:%d\n", &J);`,因为 `J` 已经是一个变量了,不需要再取地址。
阅读全文