问答详情
源自:6-12 综合练习

大佬看一下哪里有问题

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


提问者:qq_慕无忌6436193 2019-08-02 16:31

个回答

  • java_c_c加_python学习
    2019-08-03 11:07:57

    排序

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


  • qq_南柯一梦_50
    2019-08-02 18:51:20

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

  • qq_南柯一梦_50
    2019-08-02 18:47:36

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

  • 小小疾飞
    2019-08-02 16:37:06

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