1015 德才论 (25 分)

#include<stdio.h>
void maopao(struct student a[], int length);
void print1(struct student a[], int length);
void print2(struct student a[], int length);
struct student
{
	int id;
	int de;
	int cai;
};
int main(void)
{	//1.读入三个数
	int N, L, H;
	scanf_s("%d %d %d", &N, &L, &H);
	//2.设置4个结构数组
	struct student level1[1000], level2[1000], level3[1000], level4[1000];
	struct student link;
	//3.判断后读入数组
	int cnt = 1, cnt1 = 0, cnt2 = 0, cnt3 = 0, cnt4 = 0;
	int fail = 0;
	for (cnt = 1; cnt <= N; cnt++)
	{
		scanf_s("%d %d %d", &link.id, &link.de, &link.cai);
		if (link.de >= L && link.cai >= L)
		{
			if (link.de >= H && link.cai >= H)
			{
				level1[cnt1] = link;
				cnt1++;
			}
			if (link.de >= H && link.cai <= H)
			{
				level2[cnt2] = link;
				cnt2++;
			}
			if (link.de <= H && link.cai <= H && link.de >= link.cai)
			{
				level3[cnt3] = link;
				cnt3++;
			}
			if (link.de <= H && link.cai > link.de)
			{
				level4[cnt4] = link;
				cnt4++;
			}
		}
		else
		{
			fail++;
			continue;
		}
	}
	cnt1--;
	cnt2--;
	cnt3--;
	cnt4--;
	//4.对每个数组冒泡排序
	maopao(level1, cnt1);
	maopao(level2, cnt2);
	maopao(level3, cnt3);
	maopao(level4, cnt4);
	//5.开始输出
	printf("%d\n", N - fail);
	print1(level1, cnt1);
	print1(level2, cnt2);
	print1(level3, cnt3);
	print2(level4, cnt4);
	return 0;
}

void maopao(struct student a[], int length)
{
	int i, j;
	struct student temp;
	for (i = 0; i <= length - 1; i++)
	{
		for (j = i + 1; j <= length; j++)
		{
			if (a[i].de + a[i].cai < a[j].de + a[j].cai)
			{
				temp = a[i];
				a[i] = a[j];
				a[j] = temp;
			}
			if (a[i].de + a[i].cai == a[j].de + a[j].cai)
			{
				if (a[i].de > a[j].de)
				{

				}
				if (a[i].de < a[j].de)
				{
					temp = a[i];
					a[i] = a[j];
					a[j] = temp;
				}
				if (a[i].de == a[j].de)
				{
					if (a[i].id > a[j].id)
					{
						temp = a[i];
						a[i] = a[j];
						a[j] = temp;
					}
				}
			}
		}
	}
}

void print1(struct student a[], int length)
{
	int count;
	for (count = 0; count <= length; count++)
	{
		printf("%d %d %d\n", a[count].id, a[count].de, a[count].cai);
	}
}

void print2(struct student a[], int length)
{
	int count;
	for (count = 0; count <= length - 1; count++)
	{
		printf("%d %d %d\n", a[count].id, a[count].de, a[count].cai);
	}
	if (count == length)
	{
		printf("%d %d %d", a[count].id, a[count].de, a[count].cai);
	}
}

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值