C语言-结构体习题--@颜麓

//开发一个简易的成绩管理系统: 存储多个学员信息并处理
//要求如下:
//          (1)申请多个空间,存入学员信息
//          (2)求分数最高学员姓名
//          (3)求总分和平均分
//          (4)统计查询平均分以上学员的姓名
//          (5)按照成绩排序
#include<stdio.h>

int i,max1,max2,max3,sum1,sum2,sum3;//全局变量 

struct student
{
	char name[10];//10
	char sex[10];//10
	int age;//4 
	int math;//4
	int chinese;//4
	int english;//4
};
struct student stu[5]={
						{"yan lu","men  ",20,90,80,99},
					   	{"achang","women",19,96,79,98}, 
					   	{"ji  bo","men  ",18,80,89,95},
					   	{"nailiu","women",19,98,80,89},
					   	{"zhangx","men  ",21,81,86,82},
					  };
					  
void chinese_no()//语文成绩由高到低 
{
	for(i=0;i<5;i++)
	{
		for(int j=0;j<5-i;j++)
		{
			if(stu[j].chinese>stu[j+1].chinese)
			{
				max1=stu[j].chinese;
				stu[j].chinese=stu[j+1].chinese;
				stu[j+1].chinese=max1;
			}
		}
	}
	for(i=5;i>0;i--)
	{
		printf("%d ",stu[i].chinese);
	}
 } 
 
 void english_no()//英语成绩由高到低 
{
	for(i=0;i<5;i++)
	{
		for(int j=0;j<5-i;j++)
		{
			if(stu[j].english>stu[j+1].english)
			{
				max1=stu[j].english;
				stu[j].english=stu[j+1].english;
				stu[j+1].english=max1;
			}
		}
	}
	for(i=5;i>0;i--)
	{
		printf("%d ",stu[i].math);
	}
 } 
 
 void math_no()//数学成绩由高到低 
{
	for(i=0;i<5;i++)
	{
		for(int j=0;j<5-i;j++)
		{
			if(stu[j].math>stu[j+1].math)
			{
				max1=stu[j].math;
				stu[j].math=stu[j+1].math;
				stu[j+1].math=max1;
			}
		}
	}
	for(i=5;i>0;i--)
	{
		printf("%d ",stu[i].math);
	}
 } 
 
void average_math()//math平均分以上的 
{
	for(i=0;i<5;i++)
	{
		if(stu[i].math>(sum1/5))
		{
			printf("%s数学成绩在平均分以上是%d分\n",stu[i].name,stu[i].math);
		}
	} 
}
void average_chinese()//chinese平均分以上的 
{
	for(i=0;i<5;i++)
	{
		if(stu[i].chinese>(sum2/5))
		{
			printf("%s语文成绩在平均分以上是%d分\n",stu[i].name,stu[i].chinese);
		}
	} 
}
void average_english()//english平均分以上的 
{
	for(i=0;i<5;i++)
	{
		if(stu[i].english>(sum3/5))
		{
			printf("%s英语成绩在平均分以上是%d分\n",stu[i].name,stu[i].english);
		}
	} 
}
void test()
{
	max1=stu[0].math;
	for(i=0;i<5;i++)//math最高 
	{
		sum1=sum1+stu[i].math;
		if(stu[i].math>max1)
		{
			max1=stu[i].math;
		}
	}
	max2=stu[0].chinese;
	for(i=0;i<5;i++)//Chinese最高 
	{
		sum2=sum2+stu[i].chinese;
		if(stu[i].chinese>max2)
		{
			max2=stu[i].chinese;
		}
	}
	max3=stu[0].english;
	for(i=0;i<5;i++)//English最高 
	{
		sum3=sum3+stu[i].chinese;
		if(stu[i].english>max3)
		{
			max3=stu[i].chinese;
		}
	}
	printf("\n数学最高的是%s,%d分\n",stu[3].name,max1);
	printf("语文最高的是%s,%d分\n",stu[2].name,max2);
	printf("英语最高的是%s,%d分\n",stu[0].name,max3);
	printf("\n数学的总分是%d,平均分是%d\n",sum1,sum1/5);
	printf("语文的总分是%d,平均分是%d\n",sum2,sum2/5);
	printf("英语的总分是%d,平均分是%d\n\n",sum3,sum3/5);
}
int main()
{
	printf("---------------成绩管理系统---------------\n");
	printf("name    sex    age  math  chinese  english\n");
	int i,max1,max2,max3,sum1,sum2,sum3;
	for(i=0;i<5;i++)
	{
		printf("%s  %s  %d   %d      %d       %d\n",stu[i].name,stu[i].sex,stu[i].age,stu[i].math,stu[i].chinese,stu[i].english);
	}
	test();
	average_math();
	printf("\n");
	average_chinese();
	printf("\n");
	average_english();
	printf("\n");
	printf("数学成绩由高到低为:"); 
	math_no();
	printf("\n语文成绩由高到低为:");
	chinese_no();
	printf("\n英语成绩由高到低为:");
	english_no();
	
	return 0;
}

在这里插入图片描述

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值