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

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

#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;

}


正在回答

2 回答

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

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

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


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

Poplar_Y

你可以试着按我说的修改,感受一下问题。
2019-10-29 回复 有任何疑惑可以回复我~
#2

qq_慕用5232731 回复 Poplar_Y

平均数的计算过程中有sums么?求大佬解答
2020-02-07 回复 有任何疑惑可以回复我~

#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;


}


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

举报

0/150
提交
取消

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

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