西安交通大学程序设计作业(Moodle实验6:增加学生信息并排序输出)

该博客介绍了一个C语言程序,用于存储和排序学生信息。程序首先定义了包含学号、班级、三门课程成绩及总成绩的结构体,初始化了三个学生的信息,然后输入第四个学生的信息并计算总分。接着,程序使用插入排序算法,根据班级号和总分对学生信息进行排序。最后,程序输出排序后的所有学生信息。
摘要由CSDN通过智能技术生成

Moodle实验6:增加学生信息并排序输出。

假定已经有三个学生信息,现在需要补充第四个学生的信息。
要求
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>
int main(){
//	定义变量,后续使用(c语言标准过低,需要在for循环外定义变量) 
	int i;
	int j;
//	定义结构体用于储存信息
//  定义一个结构体数组,并初始化结构体 
	struct student{
		int stuNum;
		int classNum;
		float score[3];
		float sum;
	}stu[4]={{
		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
	}
	};
//	输入第四个学生的信息 ,并求得其总分 
	scanf("%d", &stu[3].stuNum);
	scanf("%d", &stu[3].classNum);
	for(i=0;i<3;i++){
		scanf("%f", &stu[3].score[i]);
		stu[3].sum+=stu[3].score[i];
	}
//	利用插入排序进行排序 
	for(i=1;i<4;i++){
		for(j=i;j>0;j--){
//			先对班级号排序,再对总分排序 
			if(stu[j].classNum<stu[j-1].classNum){
				struct student temp = stu[j];
				stu[j] = stu[j-1];
				stu[j-1] = temp;
			}
			else if(stu[j].classNum==stu[j-1].classNum&&stu[j].sum<stu[j-1].sum){
				struct student temp = stu[j];
				stu[j] = stu[j-1];
				stu[j-1] = temp;	
			}
		}
	}
//	将排序后的结果输出 
	for(i=0;i<4;i++){
		printf("%d,%d,%.1f,%.1f,%.1f,%.1f\n", stu[i].stuNum, stu[i].classNum, stu[i].score[0], stu[i].score[1], stu[i].score[2], stu[i].sum);
	}
	return 0;
}

  • 1
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值