增加学生信息并排序输出

 一、问题

假定已经有三个学生信息,现在需要补充第四个学生的信息。
要求:
(1) 用数组存储学生信息,包括学号、班级、三门课程的成绩、三门课程的总成绩;
(2) 补充输入第四个学生信息后,按照班级从小到大的先后排序输出学生信息,同一班级内按照总成绩从低到高输出。成绩保留1位小数。各项输出时以英文逗号','隔开。
(3) 已有的三个学生信息可以在数组初始化时静态赋值,已有的三个学生的信息是:
1001,11,92.5,82.5,96,271
1002,12,82.5,87.5,93.5,263.5
1003,13,97,84.5,88.5,270

第四个学生信息输入示例:
1004
12
95.8
85.6
74.9

输出示例:
1001,11,92.5,82.5,96.0,271.0
1004,12,95.8,85.6,74.9,256.3
1002,12,82.5,87.5,93.5,263.5
1003,13,97.0,84.5,88.5,270.0

二、代码

#include <stdio.h>	
	struct score{
		int xuehao;
		int banji;
		float gaoshu;
		float wuli;
		float yingyu;
		float sum;
	}stu1,stu2,stu3,stu4;
  
int main(){
    int i,j,k;
	struct score stu1={1001,11,92.5,82.5,96,271};
	struct score stu2={1002,12,82.5,87.5,93.5,263.5};
	struct score stu3={1003,13,97,84.5,88.5,270};
	struct score stu[5] =  {stu1,stu1,stu2,stu3,stu4};
	scanf("%d%d%f%f%f",&stu[4].xuehao,&stu[4].banji,&stu[4].gaoshu,&stu[4].wuli,&stu[4].yingyu);
	stu[4].sum=stu[4].gaoshu+stu[4].wuli+stu[4].yingyu;
	
	for(j=0;j<4;j++){
		for(k=1;k<4;k++){
			if(stu[k].banji>stu[k+1].banji){
				struct score temp=stu[k];
				stu[k]=stu[k+1];
				stu[k+1]=temp;
			}
			else if((stu[k].banji==stu[k+1].banji)&&(stu[k].sum>stu[k+1].sum)){
				struct score temp2=stu[k];
				stu[k]=stu[k+1];
				stu[k+1]=temp2;
			}
			}
		}
	for(i=1;i<5;i++){
		printf("%d,%d,%.1f,%.1f,%.1f,%.1f\n",stu[i].xuehao,stu[i].banji,stu[i].gaoshu,stu[i].wuli,stu[i].yingyu,stu[i].sum);
	}
	return 0;
}

三、tips

1.注意struct如何静态赋值

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值