标题:为什么比较的顺序不同结果不同???
取消只看楼主
新手714
Rank: 1
等 级:新手上路
帖 子:50
专家分:3
注 册:2020-4-25
结帖率:88.89%
已结贴  问题点数:20 回复次数:6 
为什么比较的顺序不同结果不同???
#include<stdio.h>
struct student
{
    int number;
    char name[7];
    float score;
};
int main()
{
    struct student stu[5] = { {01,"GY",97},{02,"Yoo",87},{03,"Gong",87.7},{04,"shacha",97.7},{05,"erzi",77} };
    struct student t;
    int i, j, k;
    for (i = 3; i >=0; i--)                                                  //
    {
        k = i;                                                            这
        for (j = i + 1; j >0; j--)
        {
            if (stu[k].score < stu[j].score)                          部
                k = j;
            t = stu[i]; stu[i] = stu[k]; stu[k] = t;                  分
        }                                                      
    }                                                                         //
    for (i = 0; i < 5; i++)
        printf("%6d %8s %6.2f\n", stu[i].number, stu[i].name, stu[i].score);
    return 0;
}
而下面这样就不同了

for (i = 0; i <4; i++)
    {
        k = i;
        for (j = i + 1; j <5; j++)
        {
            if (stu[k].score < stu[j].score)
                k = j;
            t = stu[i]; stu[i] = stu[k]; stu[k] = t;
        }
    }




或者以下两种,为什么结果不同???
for (i = 0; i <4; i++)
    {
        k = i;
        for (j = i + 1; j <5; j++)
        {
            if (stu[j].score >stu[k].score)
                k = j;
            t = stu[i]; stu[i] = stu[k]; stu[k] = t;
        }
    }

for (i = 0; i <4; i++)
    {
        k = i;
        for (j = i + 1; j <5; j++)
        {
            if (stu[k].score < stu[j].score)
                k = j;
            t = stu[i]; stu[i] = stu[k]; stu[k] = t;
        }
    }
搜索更多相关主题的帖子: for 不同 结果 score stu 
2020-05-22 12:12
新手714
Rank: 1
等 级:新手上路
帖 子:50
专家分:3
注 册:2020-4-25
得分:0 
回复 2楼 fulltimelink
为什么要k=i??
2020-05-22 16:53
新手714
Rank: 1
等 级:新手上路
帖 子:50
专家分:3
注 册:2020-4-25
得分:0 
回复 4楼 fulltimelink
不赋值的话为什么不行
2020-05-22 18:06
新手714
Rank: 1
等 级:新手上路
帖 子:50
专家分:3
注 册:2020-4-25
得分:0 
回复 6楼 fulltimelink
不是。
为什么
    for (i = 3; i >=0; i--)
    {
        for (j = i + 1; j >0; j--)
            if (stu[i].score < stu[j].score)
            {
                t = stu[i]; stu[i] = stu[j]; stu[j] = t;
            }
    }
这样不行?
2020-05-22 20:08
新手714
Rank: 1
等 级:新手上路
帖 子:50
专家分:3
注 册:2020-4-25
得分:0 
回复 8楼 fulltimelink
不对,发错了
for (i = 4; i >=0; i--)
    {
        for (j = i -1; j >0; j--)
            if (stu[i].score >stu[j].score)
            {
                t = stu[i]; stu[i] = stu[j]; stu[j] = t;
            }
    }
我就拿你写的例子写了一遍下来是没问题,但是电脑不行
         j i
   5 1 3 4 2
(1)5 1 3 4 2
(2)5 2 3 4 1
(3)5 2 4 3 1
(4)5 3 4 2 1
(5)5 4 3 2 1
2020-05-22 23:04
新手714
Rank: 1
等 级:新手上路
帖 子:50
专家分:3
注 册:2020-4-25
得分:0 
回复 10楼 wmf2014
!!!感觉自己蠢,拜谢拜谢
2020-05-23 15:10
新手714
Rank: 1
等 级:新手上路
帖 子:50
专家分:3
注 册:2020-4-25
得分:0 
回复 11楼 fulltimelink
俺不想再赋值呐,拜谢拜谢!
2020-05-23 15:14



参与讨论请移步原网站贴子:https://bbs.bccn.net/thread-501741-1-1.html




关于我们 | 广告合作 | 编程中国 | 清除Cookies | TOP | 手机版

编程中国 版权所有,并保留所有权利。
Powered by Discuz, Processed in 0.466652 second(s), 8 queries.
Copyright©2004-2024, BCCN.NET, All Rights Reserved