C语言 二维数组 以每一行的第一列进行比较大小 然后排序 要求整行交换 求指导求代码

比如一个二维数组
学号 姓名 性别 班级
102 张 男 501
101 王 女 502
我想通过C语音 通过比较学号大小 把它改变成
学号 姓名 性别 班级
101 王 女 502
102 张 男 501

# include<stdio.h>
# include<string.h>
# define NUM 10//总人数为NUM
typedef struct{
 int id;
 char name[20];
 char sex[10];
 char class[10];
}Student;
void sort(Student*student)//根据学号排名的函数
{
 Student *p=student;
 Student std;
 unsigned i,j;
 for(i=0;(p+i)->id!=0;i++)
 {
  for(j=0;(p+j)->id!=0;j++)
  {
   if((p->id)>(p+1)->id)//交换两个结构体
   {
    std=*(p+1);
    *(p+1)=*p;
    *p=std;
   }
  }
 }
}
void main()
{
 Student stud[NUM]={{102,"张","男","501"},{101,"王","女","502"},{103,"李","男","501"}},*p=stud;
 sort(stud);
 for(;p->id!=0;p++)
 {
  printf("%d\t%s\t%s\t%s\n",p->id,p->name,p->sex,p->class);
 }
}

追问

请问你是用那种软件的? 怎么我用Visual C++ 6.0 这种软件运行你的程序 显示有错误??

追答

再试试吧!

温馨提示:答案为网友推荐,仅供参考
相似回答