#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这个函数的返回值(即整型)呢?
谢谢