初学者:请教结构体数组排序!

herohero55 2005-12-18 03:44:01
我在做结构体数组排序,可是结构体数组,不能像变量那样直接的交换值,我要怎么做?
请大家指教!
结构如下:

#define N 3

struct student
{
int num[4];/* 学号 - num[13](字符串) */
char name[8];/* 姓名(字母)- name[25](字符串) */
char sex[1];/* 性别 - sex(字符,M或F) */
int brith[4];/* 出生年份 - birth(整型) */
char phone[10];/* 电话 - phone[12](字符串) */
char address[40];/* 籍贯 - address[50](字符串) */
}stu[N];

要根据学号排序
...全文
358 12 打赏 收藏 转发到动态 举报
写回复
用AI写文章
12 条回复
切换为时间正序
请发表友善的回复…
发表回复
herohero55 2005-12-19
  • 打赏
  • 举报
回复
没看懂。
vector<point> vect;//结构数组的排序
这个是C自带的吗?
herohero55 2005-12-19
  • 打赏
  • 举报
回复
换下标?
请各位能写个交换的例子吗?
拜托了!
f_acme 2005-12-19
  • 打赏
  • 举报
回复
将vector改成数组就行了啊.

其实自己写的时候可以不要交换整个的数据的,用结构数组保存整个数据,然后排序的时候只交换数组的下标就行了.
forthelichking 2005-12-19
  • 打赏
  • 举报
回复
楼主写地是C程序吧,那个vector类是c++STL里地, greenteanet(扎扎实实打基础,保持一颗平常心)已经指出你地错误了,粗心是要打屁股地
f_acme 2005-12-18
  • 打赏
  • 举报
回复
给个实例楼主参考下:不过是用STL的sort(),结构数组的排序还是用STL的sort来得方便,自己写是一个很麻烦的事情,尤其是数据的交换.

#include<iostream>
#include<algorithm>
#include<vector>
#include<string>
using namespace std;

struct point{
int x;
int y;
}Point[100];


bool less(point a,point b)
{
return a.y<b.y; //按照y从小到大排序
//return a.x<b.x; //按照x从小到大排序
}

int main()
{
int i;
vector<point> vect;//结构数组的排序
for(i=0;i<10;i++){
Point[i].x=i;
Point[i].y=100-3*i;
vect.push_back(Point[i]);
}
sort(vect.begin(),vect.end(),less);
for(i=0;i<vect.size();i++)
cout<<vect[i].x<<" "<<vect[i].y<<endl;

return 0;
}
greenteanet 2005-12-18
  • 打赏
  • 举报
回复
if(stu[i].num<stu[i].num)

-------------

if(stu[i].num<stu[j].num)
Jakoes 2005-12-18
  • 打赏
  • 举报
回复
for(i=0;i<=N;i++)
{
for(j=i+1;j<=N;j++)
{
if(stu[i].num<stu[j].num)
{
k=stu[i].num;
stu[i].num=stu[j].num;
stu[j].num=k;
}
}
}



herohero55 2005-12-18
  • 打赏
  • 举报
回复
这是为什么?
herohero55 2005-12-18
  • 打赏
  • 举报
回复
我直接交换报这个错
错误 xstxglxt.c 83: 需要逻辑0或非0在 Sort 函数中

int i,j,k;
for(i=0;i<=N;i++)
for(j=i+1;j<=N;j++)
if(stu[i].num<stu[i].num)
{
k=stu[i].num;
stu[i].num=stu[j].num;
stu[j].num=k;

就这么写的,就在 k=stu[i].num;
stu[i].num=stu[j].num;
stu[j].num=k;
这三个里报了三个这样的错
languagec 2005-12-18
  • 打赏
  • 举报
回复
可以换的
province_ 2005-12-18
  • 打赏
  • 举报
回复
要么你一个个交换(手有点累-_-),要么用COPYMEMORY借助一个临时变量(同类型)来实现全盘交换。
Mr_Yang 2005-12-18
  • 打赏
  • 举报
回复
不能像变量那样直接的交换值

-------------------------------------------
可以交换啊,你只要把所有的类容都交换就行了

69,371

社区成员

发帖
与我相关
我的任务
社区描述
C语言相关问题讨论
社区管理员
  • C语言
  • 花神庙码农
  • 架构师李肯
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧