C语言编程:输入每个学生的姓名和数学、语文、外语成绩,统计每人的平均值,并按平均值降序排列……

输入每个学生的姓名和数学、语文、外语成绩,统计每人的平均值,并按平均值降序排列,输出排列后的名次、姓名、课程名(成绩)和平均值。(注:平均值相同者按姓名的字母表顺序排列)... 输入每个学生的姓名和数学、语文、外语成绩,统计每人的平均值,并按平均值降序排列,输出排列后的名次、姓名、课程名(成绩)和平均值。(注:平均值相同者按姓名的字母表顺序排列)(要求用结构体数据类型Student实现,该类型包含姓名charname[20]、3门课成绩doublescore[3]和平均分double ave构成,结构体数组stu在main中定义)(统计平均值Average、排序BubbleSort用子函数实现) 展开
 我来答
飨宴_
推荐于2017-10-06 · TA获得超过131个赞
知道小有建树答主
回答量:136
采纳率:0%
帮助的人:97.5万
展开全部
#include <stdio.h>

typedef struct
{
char name[10];
char birth[11];
double chinese;
double english;
double math;
double ave;
}student;

void input(student *p,int n)
{
int i;
for(i=0;i<n;i++)
{
printf("请输入第%d位学生信息:\n",i+1);
printf("姓名:");
scanf("%s",(p+i)->name);
printf("生日(格式:2000-1-1):");
scanf("%s",(p+i)->birth);
printf("语文成绩:");
scanf("%lf",&(p+i)->chinese);
printf("数学成绩:");
scanf("%lf",&(p+i)->math);
printf("英语成绩:");
scanf("%lf",&(p+i)->english);
(p+i)->ave=((p+i)->chinese+(p+i)->math+(p+i)->english)/3;
}
printf("输入完成!\n\n");
}
void output(student *p,int n)
{
int i;
printf("%10s%11s%9s%9s%9s%8s\n","姓名","生日","语文成绩","数学成绩","英语成绩","平均分");
for(i=0;i<n;i++)
{
printf("%10s",(p+i)->name);
printf("%11s",(p+i)->birth);
printf("%9.0f",(p+i)->chinese);
printf("%9.0f",(p+i)->math);
printf("%9.0f",(p+i)->english);
printf("%8.2f\n",(p+i)->ave);
}
printf("输出完成!\n\n");
}
void sort(student *p,int n)
{
int i,j;
student t;
for(i=1;i<n;i++)
{
for(j=1;j<=n-i;j++)
{
if((*(p+i)).ave>(*(p+i-1)).ave)
{
t=*(p+i);
*(p+i)=*(p+i-1);
*(p+i-1)=t;
}
}
}
printf("--------------排序完成!\n\n");
}
int main()
{
int n,i;
student stu[100];
printf("请输入人数:");
scanf("%d",&n);
input(stu,n);
sort(stu,n);
output(stu,n);
return 0;
}


以前写过类似的题目,你可以修改修改,就差不多是你题目要求了。

追问
三门课成绩要用数组表示怎么写?
xiongxin12
2013-06-22 · TA获得超过201个赞
知道答主
回答量:130
采纳率:0%
帮助的人:37.3万
展开全部
加我,我发给你1070295480
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
收起 1条折叠回答
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

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

类别

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

说明

0/200

提交
取消

辅 助

模 式