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

求最高分的代码是对的 而最低分的为什么是错的?

int high (int score[10])
{
    int s,flag;
    for(s=0;s<10;s++)
    {
     if(score[s]>score[s+1])
            {
                flag=score[s+1];
                score[s+1]=score[s];
                score[s]=flag;
            }
            return score[s+1];
    }
}

int low (int score[10])
{
    int q,lag;
    for(q=0;q<10;q++)
    {
        if(score[q]<score[q+1])
        {
            lag=score[q+1];
            score[q+1]=score[q];
            score[q]=lag;
        }
        return score[q+1];
    }
}


正在回答

1 回答

我试了一下,两个都是错的。。

  1. score的下标应为0~9,但程序运行中涉及到了score[10](好吧但是因为另一个错误没有涉及)

  2. return一句应该放在for循环的外面,否则循环只会执行一次

我不知道题主的思路有没有问题,我还是说一下吧。一般的求最大值的思路(求a[0]~a[9]中的最大值):

  1. 定义一个变量m,初始化为a[0]

  2. 将a[1]与m比较,如果a[1]>m,则把m的值改为a[1]的值。此时m的值为a[0]~a[1]中的最大值

  3. 将a[2]与m比较,如果a[2]>m,则把m的值改为a[2]的值。此时m的值为a[0]~a[2]中的最大值

  4. 依次类推,直到比较a[9]与m,最后使得m的值为a[0]~a[9]的最大值

给段代码参考:

int high(int score[10])
{
    int m, i;
    m = a[0];
    for (i=1; i<10; i++)
    {
        if (a[i] > m)
        {
            m = a[i];
        }
    }
    return m;
}

最小值类似,把大小比较修改一下即可。不懂请追问。

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

namecnedifnoc 提问者

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

举报

0/150
提交
取消

求最高分的代码是对的 而最低分的为什么是错的?

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