#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 sum = 0; int i; for(i=0;i<N;i++) { sum+=score[i]; } return sum; } //计算平均分 int getAvgScore(int score[]) { return getTotalScore(score)/N; } //计算最高分 int getMax(int score[]) { int max = -1; int i; for(i=0;i<N;i++) { if(score[i]>max) { max = score[i]; } } return max; } //计算最低分 int getMin(int score[]) { int min =100; int i; for(i=0;i<N;i++) { if(score[i]< min) { min = score[i]; } } return min; } //分数降序排序 void sort(int score[]) { int i,j; 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; } } } 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); min = getMin(score); printf("总分是:%d\n",sum); printf("平均分是:%d\n",avg); printf("最高分是:%d\n",max); printf("最低分是:%d\n",min); printf("----------成绩排名---------\n"); sort(score); return 0; }
上面给出的参考答案里,平均分函数的变量为什么定义为数组类型,就是 int getAvgScore(int score[]) 里的score[],但是函数内部用到的参数是getTotalScore(score),这个getTotalScore(score)是一个整型参数而不是一个数组吧,我改成int getAvgScore(int score),没有[],运行结果也是一样的,不知道哪个更正确。
函数内部用的getTotalScore(score) ,这里面score只是个参数名称,实际的参数是{67,98,75,63,82,79,81,91,66,84}这堆东西,而在外面定义函数的时候定义的是int getTotalScore(int score[])
这表明,这个函数需要传递一个数组的参数,那么如果你把后面[]这个去掉之后,就会报错,当然有些编译器不会给你报错,因为现在编译器已经可以根据你的写法做一些调整,但是你实际的那种写法是错的
还有 我其实说的是AvgScore函数而不是TotalScore函数 在AvgScore函数内部又用到了TotalScore函数 那么Avg的参数是Total这个函数的参数(即数组)还是Total这个函数的返回值(即整型)呢?
谢谢