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

输出成绩降序排列时有乱码。

#include <stdio.h>

//计算考试总分
int total(int score[])
{
    int i;
    int total = 0;
    for(i=0;i<=9;i++)
    {
        total += score[i];
    }
    return total;
}


//计算考试最高分数
int highest(int score[])
{
    int i;
    for(i=0;i<=9;i++)
    {
        if(score[i]>score[i+1]) //调换顺序
        {
            int n = score[i];
            score[i] = score[i+1];
            score[i+1] = n;
        }
    }
    return score[9];
}

//计算考试最低分数
int lowest(int score[])
{
    int i;
    for(i=0;i<=8;i++)
    {
        if(score[i]<score[i+1])
        {
            int n = score[i];
            score[i] = score[i+1];
            score[i+1] = n;
        }
    }
    return score[0];
}

//计算考试平均分数
int average(int score[])
{
    int n = total(score);
    int av = n/10;
    return av;
}


//考试分数降序排列
int down_ordinary(int score[])
{
    int i;
    int j;
    for(i=9;i>=1;i--)
    {
        for(j=1;j<=i;j++)
        {
            if(score[j]<score[j+1])
            {
                int n = score[j];
                score[j] = score[j+1];
                score[j+1] = n;
            }
        }
    }
    printf("考试成绩降序排列为:");
    for(i=1;i<=9;i++)
    {
        printf("%d ",score[i]);
    }
    return 0;
}


//主函数
int main()
{
    int score[10]={67,98,75,63,82,79,81,91,66,84};
    printf("考试总分为%d\n",total(score));
    printf("考试最高分为%d\n",highest(score));
    printf("考试最低分为%d\n",lowest(score));
    printf("考试平均分为%d\n",average(score));
    down_ordinary(score);

    return 0;
    
    }


输出结果

考试总分为786
考试最高分为98
考试最低分为75
考试平均分为78
考试成绩降序排列为:586547409 98 91 84 82 81 79 67 66


为什么多了一个586547409出来?还有 75,63两项不见了

正在回答

2 回答

#include <stdio.h>
//计算考试总分
int total(int score[])
{
    int i;
    int total = 0;
    for(i=0;i<=9;i++)
    {
        total += score[i];
    }
    return total;
}
 
 
//计算考试最高分数
int highest(int score[])
{
    int i;
    for(i=0;i<=9;i++)
    {
        if(score[i]>score[i+1]) //调换顺序
        {
            int n;
            n = score[i];
            score[i] = score[i+1];
            score[i+1] = n;
        }
    }
//    printf("%d\n",score[9]);
    return score[9];
}
 
//计算考试最低分数
int lowest(int score[])
{
    int i;
    for(i=0;i<=8;i++)
    {
        if(score[i]<score[i+1])
        {
            int n = score[i];
            score[i] = score[i+1];
            score[i+1] = n;
        }
    }
    return score[0];
}
 
//计算考试平均分数
int average(int score[])
{
    int n = total(score);
    int av = n/10;
    return av;
}
 
 
//考试分数降序排列
int down_ordinary(int score[])
{
    int i;
    int j;
    for(i=9;i>=0;i--)
    {
        for(j=0;j<i;j++)
        {
            if(score[j]<score[j+1])
            {
                int n;
                n = score[j];
                score[j] = score[j+1];
                score[j+1] = n;
            }
        }
    }
    printf("考试分数降序排列:");
    for(i=0;i<10;i++)
    {
//        printf("%d\n",score[0]);
        printf("%d ",score[i]);
    }
    return 0;
}
 
 
//主函数
int main()
{
    int score[10]={67,98,75,63,82,79,81,91,66,84};
    printf("考试总分为%d\n",total(score));
    printf("考试最高分为%d\n",highest(score));
    printf("考试最低分为%d\n",lowest(score));
    printf("考试平均分为%d\n",average(score));
    down_ordinary(score);
 
    return 0;
     
    }


给你改了下,在“考试分数降序排列”这下面的部分代码错误了,你再看看。


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

把62-68行代码改成:

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

    {

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

        {

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

            {

                n = score[j];

就可以了。


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

Only_L

这样该不够的,下面还有一处错了。
2017-03-05 回复 有任何疑惑可以回复我~

举报

0/150
提交
取消

输出成绩降序排列时有乱码。

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