#include <stdio.h> #include <time.h> #include <stdlib.h> double average(int score[], int n); // 函数返回平均分 int sum(int *score, int n); // 函数返回总分 int max(int *score, int n); // 函数返回最大值 int min(int *score, int n); // 函数返回最小值 void showScore(int *score, int n); // 显示所有分数 int main(){ srand(time(NULL)); const int N = 30; int score[N]; for (int i = 0; i < N; i ++) score[i] = rand() / 101; showScore(score, N); int aver = average(score,N);// 计算平均分 int s = sum(score,N);// 计算总分 int maxScore = max(score,N);// 查找最高分 int minScore = min(score,N);// 查找最低分 } double average(int *score, int n) { double ave; ave=double(sum(score,n))/n; printf("ave=%lf\n",ave); // 计算均分 } int sum(int *score, int n) { // 计算总分 int sum; for(int i=0;i<n;i++) { sum+=score[i]; } printf("sum=%d\n",sum); } int max(int *score, int n) { // 查找最高分 int max=score[0]; for(int i=0;i<n;i++) { if(max<score[i]) { max=score[i]; } } printf("max=%d\n",max); } int min(int *score, int n) { // 查找最低分 int min=score[0]; for(int i=0;i<n;i++) { if(min>score[i]) { min=score[i]; } } printf("min=%d\n",min); } void showScore(int *score, int n) { // 显示所有分数 printf("所有分数如下:\n"); for(int i=0;i<n;i++) { printf("%d ",*(score+i)); } printf("\n"); }这串代码为什么多的哪一行sum数值错误
时间: 2023-12-14 10:38:16 浏览: 79
C标准库函数集
5星 · 资源好评率100%
这是因为在函数sum中没有初始化变量sum的值,导致sum的初始值为随机值,会影响最终的计算结果。解决方法是在函数sum中将sum的初始值设为0。具体修改如下:
```
int sum(int *score, int n) {
// 计算总分
int sum = 0; // 初始化sum的值为0
for(int i=0;i<n;i++)
{
sum+=score[i];
}
printf("sum=%d\n",sum);
}
```
阅读全文