qq_慕无忌6436193
2019-08-02 16:31
#include <stdio.h>
#define N 10
int sumScore(int score[])
{
int i, sum=0;
for(i=0;i<N;i++)
{
sum+=score[i];
}
printf("总和为:%d\n",sum);
return 0;
}
float avgScore(int score[])
{
int i;
float avger,sum=0;
for(i=0;i<N;i++)
{
sum+=score[i];
}
avger=sum/10;
printf("平均数为:%.1f\n",avger);
return 0;
}
int maxScore(int score[])
{
int i,temp=0;
for(i=0;i<N;i++)
{
if(temp<score[i])
{
temp=score[i];
}
}
printf("最大值为:%d\n",temp);
return 0;
}
int minScore(int score[])
{
int i,temp=score[0];
for(i=0;i<N;i++)
{
if(temp>score[i])
{
temp=score[i];
}
}
printf("最小值为:%d\n",temp);
return 0;
}
int ordScore(int score[])
{
int j,n;
for(n=N-1;n>0;n--)
{
for(j=0;j<=n;j++)
{
if(score[j]>score[j+1])
{
int temp;
temp=score[j];
score[j]=score[j+1];
score[j+1]=temp;
}
}
}
int m;
for(m=N;m>0;m--)
{
printf("%d\n",score[m]);
}
return 0;
}
int main()
{
int score[N]={67,98,75,63,82,79,81,91,66,84};
sumScore(score);
avgScore(score);
maxScore(score);
minScore(score);
ordScore(score);
return 0;
}
排序
for(n=N-2;n>=0;n--){ for(j=0;j<=N;j++){ } } n=N-1数组下标越界了,n=9时,j=9,后面score[j+1]就越界了
我在你的ordScore里第一个循环for(n=N-1;n>0;n--)改成了n>=0,在我这就没问题了
你那个1应该是最小值63才对
for(m=N-1;m>=0;m--)
C语言入门
926209 学习 · 20797 问题
相似问题