| 网站首页 | 业界新闻 | 小组 | 交易 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
Reworld,下班在家制作游戏,1500万奖金等你拿以码会友 以友辅仁
共有 293 人关注过本帖
标题:排序算法没起作用就好像这个算法不存在一样
只看楼主 加入收藏
domore
Rank: 1
等 级:新手上路
帖 子:25
专家分: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: 20Rank: 20Rank: 20Rank: 20Rank: 20
等 级:版主
威 望:185
帖 子:1799
专家分:10072
注 册: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
等 级:版主
威 望:52
帖 子:1333
专家分:1169
注 册: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: 9Rank: 9Rank: 9
等 级:贵宾
威 望:16
帖 子:515
专家分:1252
注 册: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: 16Rank: 16Rank: 16Rank: 16
来 自:郑州
等 级:版主
威 望:40
帖 子:495
专家分:2469
注 册: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
快速回复:排序算法没起作用就好像这个算法不存在一样
数据加载中...
 
   





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

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