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

请各位老师看看代码错在哪儿了,结果不对

#include <stdio.h>

int main()

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

    int sum=0;

    int i,j;

    int temp;

    float average;

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

    {

        for(j=9;j>i;j--)

        {

            if(score[j]>score[j-1])

            {

                temp=score[j];

                score[j-1]=score[j];

                score[j]=temp;

            }

        }

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

        sum+=score[i];

    }

    
    average=sum/10;

    printf("考试的总分=%d\n",sum);

    printf("考试的平均分=%f\n",average);

    printf("考试的最高分=%d\n",score[0]);

    printf("考试的最低分=%d\n",score[9]);

    return 0;
}

运行结果:98 98 91 91 91 91 91 91 84 84 ...
怎么会把原来的数组数据给改了?

提问者:一生客旅 2018-07-16 16:19

个回答

  • 返程的旅行
    2018-07-17 15:38:11
    已采纳

    在第二个for语句中,交换score[j-1]和score[j]的值时,score[j-1]的值被覆盖了,应改为:temp=score[j-1];

  • 一生客旅
    2018-07-17 16:28:28

    比较粗心,非常感谢