标题:排序算法没起作用就好像这个算法不存在一样
只看楼主
domore
Rank: 1
等 级:新手上路
帖 子:26
专家分:0
注 册:2019-7-25
结帖率:60%
已结贴  问题点数:5 回复次数:6 
排序算法没起作用就好像这个算法不存在一样


#include<stdio.h>
struct Student
    {
    int num;    //学号
    char name[20];    //名字
    float score;     //分数
    };


int main()
    {
    struct Student stu[5]=
            {
            {10010,"Li",80},
            {10015,"Po",90},
            {10020,"Wu",76},
            {10034,"Qi",79},
            {10056,"Zhang",89}
            };
    struct Student temp;    //交换用到的结构体变量temp
    const int n=5;
    int i,j;
    printf("the order is:\n");
    for(i=0;i<n-1;i++)      //按分数高低排序
        for(j=i+1;j<n;j++)
            if(stu[j].score>stu[i].score)
           //temp=stu[i];stu[i]=stu[j];stu[j]=temp;
           temp=stu[j];stu[j]=stu[i];stu[i]=temp;
    for(i=0;i<n;i++)
        printf("%6d %8s %6.2f\n",stu[i].num,stu[i].name,stu[i].score);
    return 0;
    }
搜索更多相关主题的帖子: 排序 算法 stu int temp 
2019-08-06 05:15
wmf2014
Rank: 19Rank: 19Rank: 19Rank: 19Rank: 19Rank: 19
等 级:贵宾
威 望:216
帖 子:2039
专家分:11273
注 册:2014-12-6
得分:1 
把数据交换的前两个分号改成逗号试试,即“temp=stu[j],stu[j]=stu[i],stu[i]=temp;”

能编个毛线衣吗?
2019-08-06 08:57
TysonKoothra
Rank: 5Rank: 5
等 级:职业侠客
威 望:7
帖 子:71
专家分:374
注 册:2018-10-21
得分:1 
temp=stu[j];stu[j]=stu[i];stu[i]=temp;用大括号包围起来。
2019-08-06 09:07
zhulei1978
Rank: 16Rank: 16Rank: 16Rank: 16
等 级:版主
威 望:53
帖 子:1351
专家分:1200
注 册:2006-12-17
得分:1 
结构不能这样赋值吧,要分开来赋值吧
 temp.num=stu[j].num;
 strcpy(temp.name,stu[j].name);
 temp.score=stu[j].score;

像这样

其实我就是改变社会风气,提高少女素质,刺激电影市道,提高年轻人内涵,玉树临风,风度翩翩的整蛊专家,我名叫古晶,英文名叫JingKoo!
2019-08-06 19:50
TysonKoothra
Rank: 5Rank: 5
等 级:职业侠客
威 望:7
帖 子:71
专家分:374
注 册:2018-10-21
得分:0 
回复 4楼 zhulei1978
结构体可以直接赋值。
2019-08-06 19:57
八画小子
Rank: 11Rank: 11Rank: 11Rank: 11
等 级:贵宾
威 望:37
帖 子:705
专家分:2043
注 册:2010-11-11
得分:1 
以下是引用zhulei1978在2019-8-6 19:50:53的发言:

结构不能这样赋值吧,要分开来赋值吧
 temp.num=stu[j].num;
 strcpy(temp.name,stu[j].name);
 temp.score=stu[j].score;
 
像这样
结构体的赋值,在底层实现为内存区域的复制,所以可以直接赋值。
2019-08-06 20:53
zbjzbj
Rank: 12Rank: 12Rank: 12
来 自:郑州
等 级:贵宾
威 望:52
帖 子:620
专家分:3020
注 册:2011-4-22
得分:1 
A: if(stu[j].score>stu[i].score)
           {temp=stu[j];} stu[j]=stu[i];stu[i]=temp;

B:if(stu[j].score>stu[i].score)
           {temp=stu[j];stu[j]=stu[i];stu[i]=temp;}


楼主,你认为A,B两段代码等效吗?我再答非所问一次。

[此贴子已经被作者于2019-8-6 22:43编辑过]

2019-08-06 22:41



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




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

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