为什么这个编译能通过,但是输出之后又重复的?

来源:6-12 综合练习

qq_沐钼_04007561

2017-02-11 10:47

#include <stdio.h>//函数内定义的东西只能作用于这个函数 

//计算总分和平均分 

int getSumScore(int score[])

{

    int i;

    int average;//平均分 

    int sum=0;

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

    {

      sum+=score[i]; 

    }

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

    average=sum/10;

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

    return average;

}

//计算最高分

int maxScore(int score[])

{

    int max=-1;

    int j;

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

    {

        if(score[j]>max)

        {

            max=score[j];

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

        }

    }

    return max;

}

//计算最低分

int minScore(int score[])

{

    int min=100;

    int k;

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

    {

        if(score[k]<min)

        {

            min=score[k];

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

        }

    }

    return min;

}

//考试成绩降序排序

void sort(int score[])

{

    int x,y,z;

    for(x=8; x>=0; x--)//一共10个数,需要比较9次,0~8是9个数

    {

        for(y=0;y<=x;y++)

        {

            if(score[y]<score[y+1] )     //当前面的数比后面的数大时

            {

                int temp;          //定义临时变量temp

                temp=score[y];      //将前面的数赋值给temp

                score[y]=score[y+1]; //前后之数颠倒位置

                score[y+1]=temp;  //将较大的数放在后面    

            }                 

        }

    }

    printf("---成绩排名---\n");

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

    {

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

    }

  

}


int main()

{

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

    getSumScore(score);

    maxScore(score);

    minScore(score);

    sort(score);

    return 0;

}


写回答 关注

1回答

  • Hanke墨
    2017-02-11 20:33:32
    已采纳


    http://img.mukewang.com/589f045900016bf604740580.jpghttp://img.mukewang.com/589f046b0001ac9404310426.jpg

    输出两个应该是因为 printf 语句在 if 里面。

    你先是假定 max=-1,每当判定 score[j] 大于 max 成功时就会输出一次,所以会输出两次。慕课网页评定系统又不是很完善,所以输出两个也能通过。

    Hope that Help ! ! !

    qq_沐钼_...

    非常感谢!

    2017-02-12 09:12:57

    共 1 条回复 >

C语言入门

C语言入门视频教程,带你进入编程世界的必修课-C语言

926233 学习 · 20798 问题

查看课程

相似问题