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

帮忙看看问题出在哪里?谢谢!

#include <stdio.h>

int main()

{

    int score[10]={67,98,75,63,82,79,81,91,66,84};

    int sum=0; 

    int avg;

    int i;

    int max=score[0];

    int min=score[0];

    for(i=0;i<10;i++)

    {

        if(score[i]>max)

     {

         max=score[i];

     }                       //定义最高分

        if(score[i]<min)

     {

         min=score[i];

     }                       //定义最低分

      int j;

      int min1;

      for(j=0;j<10;j++)

      {

        if(score[j+1]<score[j])

        {

        min1=score[j+1];

        score[j+1]=score[j];

        score[j]=min1;

        }                    //定义排序

      }

      sum+=score[i];          //定义总分

    }

    avg=sum/10;               //定义平均分

    printf("总分为%d;\n",sum);

    printf("最高分为%d;\n",max);

    printf("最低分为%d;\n",min);

    printf("平均分为%d;\n",avg);

    printf("************考试成绩降序排序*************\n");

    for(i=0;i<10;i++)

     {

         printf("%d ",score[i]);

     }     

    return 0;

}

https://img4.mukewang.com/5d3d364f0001932a08730558.jpg

网页上显示是正确的,

https://img.mukewang.com/5d3d36810001e7fc09940350.jpg

为啥到编译器里就乱了?谁能帮我看看,谢谢


提问者:慕尼黑7236924 2019-07-28 13:46

个回答

  • 小小疾飞
    2019-07-28 15:10:27
    已采纳

    你这里首先有问题,答案是错的。总分不是799是786,你总分要定义float型,除10.0 而不是10。

    其次你判断最大最小值要先换完再判断。

    #include <stdio.h>

    int main()

    {

        int score[]={67,98,75,63,82,79,81,91,66,84};

        int sum=0,temp,max=0,min=score[0]; 

        float avg;

        for(int i=0;i<10;i++)

    {

            for(int j=0;j<9-i;j++)

    {

    if(score[j]<score[j+1])//定义排序

    {

    temp=score[j];

    score[j]=score[j+1];

    score[j+1]=temp;

    }                       

    }

    if(score[i]>max)

    max=score[i];           //定义最高分

    if(score[i]<min)

    min=score[i];           //定义最低分

    }

        printf("************考试成绩降序排序*************\n");

    for(int i=0;i<10;i++)

    {

    sum+=score[i];             //定义总分

    printf("%d ",score[i]);

    }

    avg=sum/10.0;                   //定义平均分   

    printf("\n最高分为%d\n最低分为%d\n总分为%d\n平均分为%.1f\n",max,min,sum,avg);

        return 0;

    }


  • 小小疾飞
    2019-07-28 14:23:37

    #include <stdio.h>

    int main()

    {

        int score[10]={67,98,75,63,82,79,81,91,66,84};

        int sum=0,temp,max=0,min=score[0]; 

        float avg;

        for(int i=0;i<10;i++)

    {

            for(int j=0;j<10-i;j++)

    {

    if(score[j]<score[j+1])

    {

    temp=score[j];

    score[j]=score[j+1];

    score[j+1]=temp;

    }                      //定义排序

    }

    sum+=score[i];             //定义总分

    avg=sum/10.0;              //定义平均分

    }

        

        printf("************考试成绩降序排序*************\n");

    for(int i=0;i<10;i++)

    {

    if(score[i]>max)

    max=score[i];           //定义最高分

    if(score[i]<min)

    min=score[i];           //定义最低分

    printf("%d ",score[i]);

    }

    printf("总分为%d\n最高分为%d\n最低分为%d\n平均分为%.2f\n",sum,max,min,avg);     

        return 0;

    }