#include <stdio.h>
#define N 10
int totalscore(int score[])
{
for(int i=0;i<10;i++)
{
int total=0;
total=total+score[i];
}
return total;
}
int maxscore(int score[])
{
int max=score[0];
for(int i=0;i<9;i++)
{
if(score[i]>max)
{
max=score[i];
}
}
return max;
}
int minscore(int score[])
{
int min=score[0];
for(int i=0;i<9;i++)
{
if(score[i]<min)
{
min=score[i];
}
}
return min;
}
int averagescore(int score[])
{
int average;
average=(totalscore(score))/10;
return average;
}
void orderscore(int score[],N)
{
for(int i=N-1;i>=0;i--)
{
for(int j=0;j<=i;j++)
{
if(score[j]<score[j+1])
{
int temp=score[j];
score[j]=score[j+1];
score[j+1]=score[j];
}
}
}
for(int i=0;i<10;i++)
{
printf("成绩降序排列为:",score[i]);
}
}
int main()
{
int score[N]={67,98,75,63,82,79,81,91,66,84};
int Total=totalscore(score);
int Max=maxscore(score);
int Min=minscore(score);
int Average=averagescore(score);
printf("总分为:%d",Total);
printf("最高分为:%d",Max);
printf("最低分为:%d",Min);
printf("平均分为:%d",Average);
order(score);
return 0;
}
主要问题在排序函数
1,首先调用的函数名order(score);和您定义的函数名void orderscore(int score[],N)就匹配不上,
2,您的冒泡排序算法写错了,应该是数组越界了,
第一层循环,i取值范围9->0,
第二层循环,j取值范围0->9,这里就出问题了,j+1的取值范围就是1->10,当score[10]就是越界了
3,可以把j的取值范围限制到0->8,就没问题了,这段修改一下
for(int i=N-1;i>=0;i--)
{
for(int j=0;j<=i-1;j++)
{
if(score[j]<score[j+1])
{
int temp=score[j];
score[j]=score[j+1];
score[j+1]=score[j];
}
}
}