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

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

#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 回答


http://img1.sycdn.imooc.com//589f045900016bf604740580.jpghttp://img1.sycdn.imooc.com//589f046b0001ac9404310426.jpg

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

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

Hope that Help ! ! !

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

qq_沐钼_04007561 提问者

非常感谢!
2017-02-12 回复 有任何疑惑可以回复我~

举报

0/150
提交
取消

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

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