为了账号安全,请及时绑定邮箱和手机立即绑定

大佬看一下哪里有问题

#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;
}


正在回答

4 回答

排序

for(n=N-2;n>=0;n--){
    for(j=0;j<=N;j++){
    }
}
n=N-1数组下标越界了,n=9时,j=9,后面score[j+1]就越界了


0 回复 有任何疑惑可以回复我~

我在你的ordScore里第一个循环for(n=N-1;n>0;n--)改成了n>=0,在我这就没问题了

0 回复 有任何疑惑可以回复我~

你那个1应该是最小值63才对

0 回复 有任何疑惑可以回复我~

for(m=N-1;m>=0;m--)

0 回复 有任何疑惑可以回复我~
#1

qq_慕无忌6436193 提问者

还是不行,运行不出来
2019-08-02 回复 有任何疑惑可以回复我~
#2

qq_慕无忌6436193 提问者

我用DVC++运行,排序时一直有个 1
2019-08-02 回复 有任何疑惑可以回复我~
#3

小小疾飞 回复 qq_慕无忌6436193 提问者

其他函数没出问题,就这个是吧?
2019-08-02 回复 有任何疑惑可以回复我~
#4

qq_慕无忌6436193 提问者 回复 小小疾飞

嗯,是的,就排序
2019-08-02 回复 有任何疑惑可以回复我~
查看1条回复

举报

0/150
提交
取消

大佬看一下哪里有问题

我要回答 关注问题
意见反馈 帮助中心 APP下载
官方微信