急急急!!c语言里的结构体对一个元素排序怎么让其他元素一起按排序后的结果输出

例如:......inti;for(i=0;i<5;i++)scanf("%d,%d,%d,%d",&number,&chinese,&math,&english);..... 例如:
......
int i;
for(i=0;i<5;i++)
scanf("%d,%d,%d,%d",&number,&chinese,&math,&english);
.......
就是5个人的学号和各科成绩,对一科成绩排序,让其他数据也随着一起改变顺序
尽可能详细一点 跪谢高手的帮助啊
展开
 我来答
洛雨曦1125
2012-07-07 · TA获得超过1345个赞
知道小有建树答主
回答量:295
采纳率:100%
帮助的人:97.3万
展开全部
#include<stdio.h>
struct student{//定义结构体
int number;
int chinese;
int math;
int endlish;
}stu[5];//定义结构体数组
main()
{
struct student k;//定义结构体变量

int i,j;
for(i=0;i<5;i++)//输入5个学生的学号、语文、数学、英语成绩
{
printf("请输入第%d个学生的信息:",i+1);
scanf("%d,%d,%d,%d",&stu[i].number,&stu[i].chinese,&stu[i].math,&stu[i].endlish);
}
for(i=0;i<4;i++)//利用冒泡从大到小排序
for(j=0;j<4-i;j++)
if(stu[i].math<stu[j].math)
{
k=stu[i];
stu[i]=stu[j];
stu[j]=k;}
for(i=0;i<5;i++)//输出排序后的5个学生的学号、语文、数学、英语成绩
{
printf("请输入第%d个学生的信息:",i+1);
printf("%d,%d,%d,%d\n",&stu[i].number,&stu[i].chinese,&stu[i].math,&stu[i].endlish);
}

}
xr9686
2012-07-07 · 超过41用户采纳过TA的回答
知道小有建树答主
回答量:114
采纳率:0%
帮助的人:88.7万
展开全部
喏 拿学号来举例吧

设置一个二维数组a[5][4] 每行录入一个人的各项数据 然后按照学号所在的a[N][0]元素进行行排序
简单来说 就是按照一维数组对这5行每行的首元素也就是学号进行排序 在置换元素的时候把同行的其余三个元素随首元素一起置换
换成a[N][1]神马的科目成绩排序也是一个道理
再不懂可以再问我 代码就不给你写了 不然体会不到写代码的乐趣 伸手党会脑萎缩的、
本回答被网友采纳
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
ksgno1
2012-07-07 · TA获得超过120个赞
知道小有建树答主
回答量:128
采纳率:0%
帮助的人:121万
展开全部
#include<stdio.h>
#include<stdlib.h>
typedef struct stu
{
int number;
int english,chinese,math;
}Stu;
int cmp_1(const void* a,const void* b)
{
return ((Stu*)b)->english - ((Stu*)a)->english;
}
int cmp_2(const void* a,const void* b)
{
return ((Stu*)b)->chinese - ((Stu*)a)->chinese;
}
int cmp_3(const void* a,const void* b)
{
return ((Stu*)b)->math - ((Stu*)a)->math;
}
int main()
{
Stu a[5];
int i;
printf("number chinese math english\n");
for(i = 0;i < 5;i++)
scanf("%d %d %d %d",&a[i].number,&a[i].chinese,&a[i].math,&a[i].english);
qsort(a,5,sizeof(Stu),cmp_1);
printf("After sorting based on english\n");
printf("number chinese math english\n");
for(i = 0;i < 5;i++)
printf("%d %d %d %d\n",a[i].number,a[i].chinese,a[i].math,a[i].english);
qsort(a,5,sizeof(Stu),cmp_2);
printf("After sorting based on chinese\n");
printf("number chinese math english\n");
for(i = 0;i < 5;i++)
printf("%d %d %d %d\n",a[i].number,a[i].chinese,a[i].math,a[i].english);
qsort(a,5,sizeof(Stu),cmp_3);
printf("After sorting based on math\n");
printf("number chinese math english\n");
for(i = 0;i < 5;i++)
printf("%d %d %d %d\n",a[i].number,a[i].chinese,a[i].math,a[i].english);
return 0;
}

number chinese math english
1001 100 90 80
1002 90 80 90
1003 90 89 88
1004 98 99 78
1005 97 96 78
After sorting based on english
number chinese math english
1002 90 80 90
1003 90 89 88
1001 100 90 80
1005 97 96 78
1004 98 99 78
After sorting based on chinese
number chinese math english
1001 100 90 80
1004 98 99 78
1005 97 96 78
1003 90 89 88
1002 90 80 90
After sorting based on math
number chinese math english
1004 98 99 78
1005 97 96 78
1001 100 90 80
1003 90 89 88
1002 90 80 90
请按任意键继续. . .
追问
int cmp_1(const void* a,const void* b)
{
return ((Stu*)b)->english - ((Stu*)a)->english;
}
int cmp_2(const void* a,const void* b)
}
这一部分放在我的程序里
return ((Stu*)b)->english - ((Stu*)a)->english;
提示error C2059: syntax error : ')'
这是为什么(我用的vc++6.0,但学的是vc,不是vc++)
代码整个考进去可以,但是放在我的程序里不行
追答
我用VS2010可以的,用的是C语言,用C++的话还有更简单的方法!至于说放到你的程序里,会报错,那就应该是你的程序那里有问题了!下面贴的是我电脑上的运行结果!你再看看你的程序!是不是哪里写错了或者怎么了!
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
藤野先森windy
2017-12-12
知道答主
回答量:2
采纳率:0%
帮助的人:1712
引用洛雨曦1125的回答:
#include<stdio.h>
struct student{//定义结构体
int number;
int chinese;
int math;
int endlish;
}stu[5];//定义结构体数组
main()
{
struct student k;//定义结构体变量

int i,j;
for(i=0;i<5;i++)//输入5个学生的学号、语文、数学、英语成绩
{
printf("请输入第%d个学生的信息:",i+1);
scanf("%d,%d,%d,%d",&stu[i].number,&stu[i].chinese,&stu[i].math,&stu[i].endlish);
}
for(i=0;i<4;i++)//利用冒泡从大到小排序
for(j=0;j<4-i;j++)
if(stu[i].math<stu[j].math)
{
k=stu[i];
stu[i]=stu[j];
stu[j]=k;}
for(i=0;i<5;i++)//输出排序后的5个学生的学号、语文、数学、英语成绩
{
printf("请输入第%d个学生的信息:",i+1);
printf("%d,%d,%d,%d\n",&stu[i].number,&stu[i].chinese,&stu[i].math,&stu[i].endlish);
}

}
展开全部
冒泡貌似有点问题
还有printf里取地址你这是??
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
收起 1条折叠回答
收起 更多回答(2)
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式