定义一个学生信息结构体,包含姓名,学号,语文成绩、数学成绩,和英语成绩,定义结构体数组存放不同学生的信息,可以在终端录入学生的信息,可以实现对于学生成绩的排序,排序可以按照语文、数学或者英语。

该代码示例演示了如何使用C语言定义一个学生结构体,包含姓名、学号和三门课程成绩,并实现了从终端录入学生信息,按语文、数学、英语成绩进行排序,最后输出排序结果的功能。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

定义一个学生信息结构体,包含姓名,学号,语文成绩、数学成绩,和英语成绩,定义结构体数组存放不同学生的信息,可以在终端录入学生的信息,可以实现对于学生成绩的排序,排序可以按照语文、数学或者英语的任意一个. 

#include <stdio.h>

typedef struct student{
	char name[6];
	int number;
	int yuwen;
	int shuxue;
	int yingyu;
}STU;

void student_shuru(STU *stu);
void student_yuwen(STU *stu);
void student_shuxue(STU *stu);
void student_yingyu(STU *stu);
void student_shuchu(STU *stu);

int main(int argc, const char *argv[])
{
	struct student stu[6];
	int i=0;
	printf("请输入学生的信息:\n");
	printf("姓名 学号 语文 数学 英语\n");
	student_shuru(stu);
		printf("1.查询语文成绩排名\n");
		printf("2.查询数学成绩排名\n");
		printf("3.查询英语成绩排名\n");
		scanf("%d",&i);
		putchar(10);
		switch(i){
		case 1:
			student_yuwen(stu);
			printf("学生的语文成绩排序:\n");
			student_shuchu(stu);
			break;
		case 2:
			student_shuxue(stu);
			printf("学生的数学成绩排序:\n");
			student_shuchu(stu);
			break;
		case 3:
			student_yingyu(stu);
			printf("学生的英语成绩排序:\n");
			student_shuchu(stu);
			break;
		default:
			printf("输入错误\n");
			break;
		}
		putchar(10);
	return 0;
}
void student_shuru(STU *stu){
	for(int i=0;i<6;i++){
		scanf("%s %d %d %d %d",stu[i].name,&stu[i].number,&stu[i].yuwen,&stu[i].shuxue,&stu[i].yingyu);
	}
}

void student_yuwen(STU *stu){
	struct student temp={0};
	for(int i=1;i<6;i++){
		for(int j=0;j<6-i;j++){
			if(stu[j].yuwen<=stu[j+1].yuwen){
				temp=stu[j];
				stu[j]=stu[j+1];
				stu[j+1]=temp;
			}
		}
	}
}

void student_shuxue(STU *stu){
	struct student temp={0};
	for(int i=1;i<6;i++){
		for(int j=0;j<6-i;j++){
			if(stu[j].shuxue<=stu[j+1].shuxue){
				temp=stu[j];
				stu[j]=stu[j+1];
				stu[j+1]=temp;
			}
		}
	}
}

void student_yingyu(STU *stu){
	struct student temp={0};
	for(int i=1;i<6;i++){
		for(int j=0;j<6-i;j++){
			if(stu[j].yingyu<=stu[j+1].yingyu){
				temp=stu[j];
				stu[j]=stu[j+1];
				stu[j+1]=temp;
			}
		}
	}
}

void student_shuchu(STU *stu){
	for(int i=0;i<6;i++){
		printf("%s %d %d %d %d\n",stu[i].name,stu[i].number,stu[i].yuwen,stu[i].shuxue,stu[i].yingyu);
	}	
}

运行结果:

ubuntu@ubuntu:~$ cd test/
ubuntu@ubuntu:test$ vi 1t.c 
ubuntu@ubuntu:test$ gcc 1t.c 
ubuntu@ubuntu:test$ ./a.out 
请输入学生的信息:
姓名 学号 语文 数学 英语
小德 13 127 136 118
小梦 09 150 124 146
小雨 06 136 143 150
小空 27 113 121 125
小姚 01 141 150 149
小宫 16 119 123 138
1.查询语文成绩排名
2.查询数学成绩排名
3.查询英语成绩排名
1

学生的语文成绩排序:
小梦 9 150 124 146
小姚 1 141 150 149
小雨 6 136 143 150
小德 13 127 136 118
小宫 16 119 123 138
小空 27 113 121 125

ubuntu@ubuntu:test$ ./a.out 
请输入学生的信息:
姓名 学号 语文 数学 英语
小德 13 127 136 118
小梦 09 150 124 146
小雨 06 136 143 150
小空 27 113 121 125
小姚 01 141 150 149
小宫 16 119 123 138
1.查询语文成绩排名
2.查询数学成绩排名
3.查询英语成绩排名
2

学生的数学成绩排序:
小姚 1 141 150 149
小雨 6 136 143 150
小德 13 127 136 118
小梦 9 150 124 146
小宫 16 119 123 138
小空 27 113 121 125

ubuntu@ubuntu:test$ ./a.out 
请输入学生的信息:
姓名 学号 语文 数学 英语
小德 13 127 136 118
小梦 09 150 124 146
小雨 06 136 143 150
小空 27 113 121 125
小姚 01 141 150 149
小宫 16 119 123 138
1.查询语文成绩排名
2.查询数学成绩排名
3.查询英语成绩排名
3

学生的英语成绩排序:
小雨 6 136 143 150
小姚 1 141 150 149
小梦 9 150 124 146
小宫 16 119 123 138
小空 27 113 121 125
小德 13 127 136 118

ubuntu@ubuntu:test$

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值