你的代码中存在几个问题:
1. 在最外层的 for 循环中,你使用了 float i=0 来作为循环变量,但在后续的比较中,你使用了 array[i] > array[Max],这里的 i 是浮点数而不是整数,不符合逻辑。建议将 i 的类型修改为整型。
2. 在比较最高分的部分,你使用了 array[i] > array[Max] 来判断当前学生的成绩是否大于最高分,然后更新 Max 和 J。但是 Max 是用来保存最高分所在的数组下标,应该将其初始化为 0 而不是 0.0。另外,在更新 Max 时,应该将 Max 更新为 i 而不是 i 对应的成绩。
3. 最后,在计算平均成绩时,你将 sum 乘以 1.0/n 得到平均值。这里可以直接使用 sum/n 来计算平均值。
修正后的代码如下:float fun(float array[], int n){ float sum = 0.0; for (int i = 0; i < n; i++) { sum += array[i]; } float av = sum / n; for (int i = 0; i < n; i++) { if (array[i] > array[Max]) { Max = i; J = 1; } else if (array[i] == array[Max]) { J++; } } return av;}
请注意,你需要在程序开头声明全局变量 float Max=0; 和 int J=0;。
希望这个回答对你有帮助。如果你还有其他问题,请随时提问。 |