#include <stdio.h> #define N 10; //打印分数 void printScore(int score[]) { int i; printf("\n"); for(i=0;i<N;i++) { printf("%d ", score[i]); } printf("\n"); } //计算考试总分 int getTotalScore(int score[]) { int i; int sum = 0; for(i = 0; i < N; i++) { sum += score[i]; } return sum; } //计算最高分 int getMax(int score[]) { int i; int max = -1; for(i=0; i<N; i++) { if(score[i] > max) { max = score[i]; } } return max; } //计算最低分 int getMin(int score[]) { int i; int min = 100; for(i = 0; i < N; i++) { if(score[i] < min) { min = score[i]; } } return min; } //计算平均分 float getAvgScore(int score[]) { return getTotalScore(score)/N; } // 分数降序排序 void sort(int score[]) { int i, j; int temp; for(i=N-2;i>=0;i--) { for(j=0;j<=i;j++) { if(score[j]<score[j+1]) { int temp; temp = score[j]; score[j] = score[j+1]; score[j+1]=temp; } } } /* for(i = 0, i < N - 1, i++) { for(j = 0; j < N - i -1; j++) { if(score[j] < score[j + 1]) { temp = score[j]; score[j] = score[j + 1]; score[j + 1] = temp; } } } */ printScore(score); } int main() { int score[N]={67,98,75,63,82,79,81,91,66,84}; int sum, avg, max, min; sum = getTotalScore(score); avg = getAvgScore(score); max = getMax(score); // EK:为什么数组可以不加[N]?????? min = getMin(score); printf("总分是:%d\n", sum); printf("最高分是:%d\n", max); printf("最低分是:%d\n", min); printf("平均分是:%d\n", average); // EK:设置成单精度? printf("班级10个学生的考试成绩降序排序为:"); sort(score); // EK:通过函数排序后,原数列排序变化了吗? /* EK:测试代码如下 int i; for(i = 0; i < N; i++) { printf("%d ", score[i]); } */ return 0; }
把所有N改成10,然后主函数里你前面定义的是avg后面用的是average不一样,改了之后就对了
检查出问题原因了,定义常量N的时候多加了一个分号 ;
这下总算是记住了,检查了N久,错误印象十分深刻。
其他小错误就如上面那位大神提到的,avg和average不一致。
以后千万记住:
“定义常量不需要加分号!”
“定义常量不需要加分号!”
“定义常量不需要加分号!”