定义一个学生信息结构体,包含姓名,学号,语文成绩、数学成绩,和英语成绩,定义结构体数组存放不同学生的信息,可以在终端录入学生的信息,在基础上添加一个计算平均值和按照平均值排序以及删除指定学号的学生信息

1.

代码如下:

        头文件  chx.h

#include<stdio.h>
#include<string.h>


	

struct chx{
	char name[128];
	int sno ;
	int chinese;
	int math;
	int english;
}chx[99];	
	int aa = 0;
	int az = 0;
	char t[120];
	struct chx temp = {NULL};
	
void luru()
{	
	printf("输入学生录入个数\n");
	scanf("%d",&aa);
	for(int i=0;i<aa;i++){
	printf("输入第%d个学生的学号\n",i+1);
	scanf("%d",&az);
	chx[i].sno = az;
	printf("输入第%d个学生的姓名\n",i+1);
	//char ch[100] ;
	gets(chx[i].name);
	gets(chx[i].name);
	printf("输入第%d个学生的语文成绩\n",i+1);
	scanf("%d",&az);
	chx[i].chinese = az;
	printf("输入第%d个学生的数学成绩\n",i+1);
	scanf("%d",&az);
	chx[i].math = az;
	printf("输入第%d个学生的英语成绩\n",i+1);
	scanf("%d",&az);
	chx[i].english = az;
}
}
void chinese ()
{
	for(int i=0;i<aa;i++){
		for(int j=0;j<aa;j++){
			if(chx[j].chinese<chx[j+1].chinese){
				temp = chx[j];
				chx[j] = chx[j+1];
				chx[j+1] = temp;
			}
			
		}		
	}
}				
void math()
{
	for(int i=0;i<aa;i++){
		for(int j=0;j<aa;j++){
			if(chx[j].math<chx[j+1].math){
				temp = chx[j];
				chx[j] = chx[j+1];
				chx[j+1] = temp;
			}
			
		}		
	}
}
void english ()
{
	for(int i=0;i<aa;i++){
		for(int j=0;j<aa;j++){
			if(chx[j].english<chx[j+1].english){
				temp = chx[j];
				chx[j] = chx[j+1];
				chx[j+1] = temp;
			}
			
		}		
	}
}
void ave()
{
	float chinese_ave = 0,math_ave = 0 ,english_ave = 0; 
	for(int i=0;i<aa;i++){
		chinese_ave  = chx[i].chinese + chinese_ave;
		math_ave  = chx[i].math + math_ave;
		english_ave  = chx[i].english + english_ave;
	}	
	printf("语文平均分是%.2f\n数学平均分是%.2f\n英语平均分是%.2f\n",chinese_ave/aa,math_ave/aa,english_ave/aa);
}
void prin()
{
	for(int i=0;i<aa;i++){
		printf("第%d个学生的学号是%d    姓名是%s    语文成绩是%d  数学成绩是%d   英语成绩是%d\n",
		i+1,chx[i].sno,chx[i].name,chx[i].chinese,chx[i].math,chx[i].english);
	}	
}

void dele()
{
	printf("输入要删除学生的学号");
	int del_sno = 0;
	scanf("%d",&del_sno);
	for(int i=0;i<aa;i++){
		if(chx[i].sno==del_sno){
			for(;i<aa-i;i++){
				chx[i]  = chx[i+1];
			}
		}
	}
	aa  = aa  -1;
}

        2.主函数

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

#include"chx.h"



int main()
{	
    int a;
	char t[120];
	while(1){
		printf("选择服务\n1.录入学生信息\n2.按照语文排序\n3.按照数学排序\n4.按照英语排序\n5.求平均分\n"
		        "6.删除学生\n7.打印输出\n0.退出\n");
		scanf("%d",&a);
		switch(a){				
			case 1:{
				luru();	
				break; 
			}			
			case 2:{
				chinese();
				prin();
				break;	
			}			
			case 3:{
				math();
				prin();
				break;
			}
			case 4:{
				english();
				prin();
				break;
			}
				
			case 5:{
				ave();
				break;
			}	
			case 6:{
				dele();
				prin();
				break;
			}
			case 7:{
				prin();
				break;				
			}
					
		}
		if(a==0){
			break;
		}
	}
}

结果如下:

选择服务
1.录入学生信息
2.按照语文排序
3.按照数学排序
4.按照英语排序
5.求平均分
6.删除学生
7.打印输出
0.退出
1
输入学生录入个数
3
输入第1个学生的学号
1  
输入第1个学生的姓名
chx
输入第1个学生的语文成绩
100
输入第1个学生的数学成绩
99
输入第1个学生的英语成绩
98
输入第2个学生的学号
2
输入第2个学生的姓名
chx2
输入第2个学生的语文成绩
99
输入第2个学生的数学成绩
98
输入第2个学生的英语成绩
100
输入第3个学生的学号
3
输入第3个学生的姓名
chx3
输入第3个学生的语文成绩
100
输入第3个学生的数学成绩
98
输入第3个学生的英语成绩
99
选择服务
1.录入学生信息
2.按照语文排序
3.按照数学排序
4.按照英语排序
5.求平均分
6.删除学生
7.打印输出
0.退出
2
第1个学生的学号是1    姓名是chx    语文成绩是100  数学成绩是99   英语成绩是98
第2个学生的学号是3    姓名是chx3    语文成绩是100  数学成绩是98   英语成绩是99
第3个学生的学号是2    姓名是chx2    语文成绩是99  数学成绩是98   英语成绩是100
选择服务
1.录入学生信息
2.按照语文排序
3.按照数学排序
4.按照英语排序
5.求平均分
6.删除学生
7.打印输出
0.退出
3
第1个学生的学号是1    姓名是chx    语文成绩是100  数学成绩是99   英语成绩是98
第2个学生的学号是3    姓名是chx3    语文成绩是100  数学成绩是98   英语成绩是99
第3个学生的学号是2    姓名是chx2    语文成绩是99  数学成绩是98   英语成绩是100
选择服务
1.录入学生信息
2.按照语文排序
3.按照数学排序
4.按照英语排序
5.求平均分
6.删除学生
7.打印输出
0.退出
4
第1个学生的学号是2    姓名是chx2    语文成绩是99  数学成绩是98   英语成绩是100
第2个学生的学号是3    姓名是chx3    语文成绩是100  数学成绩是98   英语成绩是99
第3个学生的学号是1    姓名是chx    语文成绩是100  数学成绩是99   英语成绩是98
选择服务
1.录入学生信息
2.按照语文排序
3.按照数学排序
4.按照英语排序
5.求平均分
6.删除学生
7.打印输出
0.退出
5
语文平均分是99.67
数学平均分是98.33
英语平均分是99.00
选择服务
1.录入学生信息
2.按照语文排序
3.按照数学排序
4.按照英语排序
5.求平均分
6.删除学生
7.打印输出
0.退出
6
输入要删除学生的学号2
第1个学生的学号是3    姓名是chx3    语文成绩是100  数学成绩是98   英语成绩是99
第2个学生的学号是1    姓名是chx    语文成绩是100  数学成绩是99   英语成绩是98

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值