C语言实验--实验五 结构体程序设计 Part2

本文档提供了一段C语言代码,用于管理包含学号、姓名、三门课程成绩及出生日期的学生信息。程序实现了输入学生数据、按第一门课程成绩和年龄排序的功能,并计算平均成绩及相应等级。代码包括选择排序和冒泡排序两种排序算法。
摘要由CSDN通过智能技术生成

一、实验目的及要求

  1. 进一步理解结构体的概念;
  2. 掌握结构体的定义和结构体变量的定义和使用方法;
  3. 能正确使用结构体数组;
  4. 掌握链表的基本概念,能够编写简单的应用程序
  5. 进一步提高编程能力。

1.一个班有10名同学,每名同学都有如下信息:学号,姓名,三门课程的成绩。请编写程序输入全班同学的信息,并且按第一门课程的成绩从小到大排序后输出。(见结构体程序设计 一)

3.在题1的基础上,每个同学添加出生日期信息,编写程序输入全班同学的信息,并且按照年龄(出生日期)排序后输出。要求:判断二人的大小写成函数。

//一个班有10名同学,每名同学都有如下信息:学号,姓名,三门课程的成绩。
//请编写程序输入全班同学的信息,并且按第一门课程的成绩从小到大排序后输出3.	在题1的基础上,每个同学添加出生日期信息,
//编写程序输入全班同学的信息,并且按照年龄(出生日期)排序后输出。要求:判断二人的大小写成函数。并分别用选择排序和冒泡排序。
#include<stdio.h>
#define N 3
typedef struct date {
	int year;
	int month;
	int day;
}Date;
struct student
{
	int num;
	char name[20];
	float score[3];
	Date birth;
};
void input(struct student stu[])
{
	int i;
	for (i = 0; i < N; i++)
	{
		printf("请输入第%d个学号,姓名,三门课程的成绩", i + 1);
		scanf_s("%d%s%f%f%f", &stu[i].num, stu[i].name,10, &stu[i].score[0], &stu[i].score[1], &stu[i].score[2]);
		printf("请输入该学生的而出生日期:");
		scanf_s("%d%d%d",&stu[i].birth.year,&stu[i].birth.month,&stu[i].birth.day);
	}
}
void output(struct student stu[])
{
	int i;
	for (i = 0; i < N; i++)
	{

		printf("第%d个学号:%d,姓名:%s", i + 1, stu[i].num, stu[i].name);
		printf("三门课的成绩:%.2f %.2f %.2f\n", stu[i].score[0], stu[i].score[1], stu[i].score[2]);
		printf("出生日期:");
		printf("%d年%d月%d日\n", stu[i].birth.year, stu[i].birth.month, stu[i].birth.day);
	}
}
int comparedate(Date d1, Date d2)
{
	return d1.year * 10000 + d1.month * 100 + d1.day > d2.year * 10000 + d2.month * 100 + d2.day;
}
void sortage(struct student stu[])
{
	int i, j, k;
	struct student temp;
	for (i = 0; i < N - 1; i++)
	{
		k = i;
		for (j = i + 1; j < N; j++)
			if (comparedate(stu[j].birth,stu[k].birth))
				k = j;
		temp = stu[i];
		stu[i] = stu[k];
		stu[k] = temp;

	}
}
int main()
{
	struct student stu[N];
	input(stu);
	sortage(stu);
	output(stu);
}

4.计算每名同学三门课程的平均成绩,并按照平均成绩排序后输出。在此基础上,每名同学增加等级(grade)信息,若平均成绩高于全班平均成绩10分以上,则为”A”,高于平均成绩不超过10分,则为”B”,低于平均成绩则为”C”,计算每个同学的等级,并输出。

//一个班有10名同学,每名同学都有如下信息:学号,姓名,三门课程的成绩。
//请编写程序输入全班同学的信息,并且按第一门课程的成绩从小到大排序后输出4.	
//在题2的基础上,每名同学增加等级(grade)信息,若平均成绩高于全班平均成绩10分以上,则为”A”,
//高于平均成绩不超过10分,则为”B”,低于平均成绩则为”C”,计算每个同学的等级,并输出。
#include<stdio.h>
#define N 3
struct student
{
	int num;
	char name[20];
	float score[3];
	float avg;
};
float avg;
void input(struct student stu[])
{
	int i;
	float sum=0;
	for (i = 0; i < N; i++)
	{
		printf("请输入第%d个学号,姓名,三门课程的成绩", i + 1);
		scanf_s("%d%s%f%f%f", &stu[i].num, stu[i].name, 10, &stu[i].score[0], &stu[i].score[1], &stu[i].score[2]);
		stu[i].avg = (stu[i].score[0] + stu[i].score[1] + stu[i].score[2]) / 3;
		sum += stu[i].avg;
	}
	avg = sum / N;
}

void output(struct student stu[])
{
	int i;
	for (i = 0; i < N; i++)
	{

		printf("第%d个学号:%d,姓名:%s", i + 1, stu[i].num, stu[i].name);
		printf("三门课的成绩:%.2f %.2f %.2f\n", stu[i].score[0], stu[i].score[1], stu[i].score[2]);
		
		for (i = 0; i < N; i++)
		{
			if (stu[i].avg > avg + 10)
			printf("平均成绩:%.2f,等级A\n", stu[i].avg);
			else if (stu[i].avg >= avg)
			printf("平均成绩:%.2f,等级B\n", stu[i].avg);
			else if(stu[i].avg < avg)
			printf("平均成绩:%.2f,等级C\n", stu[i].avg);
		}
	
	}
}
void sortavg(struct student stu[])
{
	int i, j, k;
	struct student temp;
	for (i = 0; i < N - 1; i++)
	{
		k = i;
		for (j = i + 1; j < N; j++)
			if (stu[j].avg < stu[k].avg)
				k = j;
		temp = stu[i];
		stu[i] = stu[k];
		stu[k] = temp;

	}
}
int main()
{
	struct student stu[N];
	input(stu);
	sortavg(stu);
	output(stu);
}

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值