定义一个结构体类型的结构体数组stud,输入学生三门课成绩,然后按总分成绩排序后输出学生成绩。

要求结构体包含学号、姓名、数学成绩、英语成绩、C++语言成绩和三门课程的总分... 要求结构体包含学号、姓名、数学成绩、英语成绩、C++语言成绩和三门课程的总分 展开
 我来答
wang_yu_di
2010-04-24 · TA获得超过392个赞
知道答主
回答量:48
采纳率:0%
帮助的人:69.4万
展开全部
#include"stdio.h"
#include"string.h"
struct student
{ int num;
char name[20];
float yingyu;
float shuxue;
float cc;
float sum;
};
struct student stud[100];
int main()
{ int i,n,k,j,z=1;
float t;
char m[20];
printf("输入有N个学生数");
scanf("%d",&n);
printf("学号 姓名 英语 数学 c++\n");
for(i=0;i<n;i++)
{
scanf("%d%s%f%f%f",&stud[i].num,&stud[i].name,&stud[i].yingyu,&stud[i].shuxue,&stud[i].cc);
stud[i].sum=stud[i].yingyu+stud[i].shuxue+stud[i].cc;
}
for(j=0;j<n-1;j++)
for(i=0;i<n-1-j;i++)
if(stud[i].sum>stud[i+1].sum)
{ t=stud[i].sum;
stud[i].sum=stud[i+1].sum;
stud[i+1].sum=t;
strcpy(m,stud[i].name);
strcpy(stud[i].name,stud[i+1].name);
strcpy(stud[i+1].name,m);
k=stud[i].num;
stud[i].num=stud[i+1].num;
stud[i+1].num=k;
}
printf("学号 姓名 总分 名次 \n");
for(i=0;i<n;i++)
{
printf(" %d %s %.2f %d\n",stud[i].num,stud[i].name,stud[i].sum,z);
z++;}

return 0;

}
649242705
2010-04-24 · TA获得超过206个赞
知道小有建树答主
回答量:172
采纳率:0%
帮助的人:154万
展开全部
推荐用qsort,
4、对结构体一级排序
struct stud
{
double data;
int other;
}s[100]
//按照data的值从小到大将结构体排序,关于结构体内的排序关键数据data的类型可以很多种,参考上面的例子写
int cmp( const void *a ,const void *b)
{
return (*(struct stud *)a)->data > (*(struct stud *)b)->data ? 1 : -1;
}
qsort(s,100,sizeof(s[0]),cmp);
,,直接调用好啦,qsort(stdio.h)会帮你排好
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

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

类别

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

说明

0/200

提交
取消

辅 助

模 式