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

有人可以耐心看下代码错误吗

#include <stdio.h>

int sum(int score[10])

{

    int sums,i;

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

    {

        sums+=score[i];

    }

    return sums;

}

int max(int score[10])

{

    int maxs=0,i;

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

    {

        if (maxs<score[i])

        {

            maxs=score[i];

        }

    }

    return maxs;

}

int min(int score[10])

{

    int mins=max(score),i;

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

    {

        if (mins>score[i])

        {

            mins=score[i];

        }

    }

    return mins;

}

int ave(int score[10])

{

    int aves;

    aves=(sum(score))/10;

    return aves;

}

void a(int score[10])

{

    int i,j,flag;

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

    {

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

        {

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

            {

                flag=score[j];

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

                score[j+1]=flag;

            }

        }

    }

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

    {

        if (i!=9)

        {

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

        }

        else 

        {

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

        }

    }

}

int main()

{

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

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

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

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

    printf("平均分是%d\n",ave(score));

    a(score);

    return 0;

}


提问者:慕标1528459 2019-10-05 12:05

个回答

  • Poplar_Y
    2019-10-29 15:36:42

    你的问题出在:没有定义局部变量sums的值

    你应该将 int sums,i; 改为 int sums=0,i;

    如果你不定义局部变量sums的值,其值在你输出总分时已经储存在内存中,当你再次使用sums,它的值默认不为0,那么它的值不确定,因此平均数输出值发生错误。


  • qq_青鸾_03394339
    2019-10-16 00:44:37

    #include <stdio.h>


    int sum(int score[10])


    {


        int sums,i;


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


        {


            sums+=score[i];


        }


        return sums;


    }


    int max(int score[10])


    {


        int maxs=0,i;


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


        {


            if (maxs<score[i])


            {


                maxs=score[i];


            }


        }


        return maxs;


    }


    int min(int score[10])


    {


        int mins=max(score),i;


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


        {


            if (mins>score[i])


            {


                mins=score[i];


            }


        }


        return mins;


    }


    int ave(int score[10])


    {


        int aves;


        aves=(sum(score))/10;


        return aves;


    }


    void a(int score[10])


    {


        int i,j,flag;


        for(i=8;i>=0;i--)


        {


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


            {


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


                {


                    flag=score[j];


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


                    score[j+1]=flag;


                }


            }


        }


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


        {


            if (i!=0)


            {


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


            }


            else 


            {


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


            }


        }


    }


    int main()


    {


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


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


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


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


        printf("平均分是%d\n",ave(score));


        a(score);


        return 0;


    }