课后练习--结构体

// TheChapterOfEleven.cpp : 此文件包含 "main" 函数。程序执行将在此处开始并结束。
//

#include <iostream>
//1、
struct stu_data {
	int num;
	char name[20];
	float chinese_score;
	float math_score;
	float english_score;
};
void print_stu_data();

//2、
typedef struct date{
	int year;
	int month;
	int day;
}my_date;
void get_the_day();

int main()
{
	//1、
	//print_stu_data();

	//2、
	//get_the_day();
}

/*1、有10个学生,每个学生的数据包括学号、姓名、3门课程的成绩,从键盘上输入5个学生的数据
* 要求输出3门课程的总平均成绩,以及最高分的学生数据(包括学号、姓名,3门课程成绩,平均分数)。
*/
void print_stu_data() {
	struct stu_data stu[5];
	printf("请输入5个学生的数据:\n");
	for (int i = 0; i < 5; i++) {
		printf("第%d个学生,依次输入学号 姓名 语文成绩 数学成绩 英语成绩:\n", i+1);

		scanf_s("%d", &stu[i].num);
		scanf_s("%s", &stu[i].name, 20);
		scanf_s("%f", &stu[i].chinese_score);
		scanf_s("%f", &stu[i].math_score);
		scanf_s("%f", &stu[i].english_score);
	}
	printf("学号\t姓名\t语文\t数学\t英语\n");
	for (int i = 0; i < 5; i++) {
		printf("%d\t%s\t%.2f\t%.2f\t%.2f\n", stu[i].num, stu[i].name,
		stu[i].chinese_score, stu[i].math_score, stu[i].english_score);
	}

	float chinese_average = 0, math_average = 0, english_average = 0;
	float max_score = 0;
	int max_index = 0;
	for (int i = 0; i < 5; i++) {
		chinese_average += stu[i].chinese_score;
		math_average += stu[i].math_score;
		english_average += stu[i].english_score;
		float temp_score = stu[i].chinese_score + stu[i].math_score + stu[i].english_score;
		if (max_score < temp_score) {
			max_score = temp_score;
			max_index = i;
		}
	}
	chinese_average = chinese_average / 5;
	math_average = math_average / 5;
	english_average = english_average / 5;

	printf("语文平均分:%.2f\t数学平均分:%.2f\t英语平均分:%.2f\n", chinese_average, 
		math_average, english_average);

	printf("最高分的学生信息:\n学号\t姓名\t语文\t数学\t英语\t平均分\n");
	printf("%d\t%s\t%.2f\t%.2f\t%.2f\t%.2f\n", stu[max_index].num, stu[max_index].name, 
		stu[max_index].chinese_score, stu[max_index].math_score, stu[max_index].english_score, 
		max_score/3);
}

//2、定义一个结构体变量(包括年月日),计算某日在这一年中是第几天。(注意闰年问题)
//通常所说:四年一闰,百年不闰,四百年再闰。 例如:2000年是闰年,2100年则是平年。
void get_the_day() {
	int days[] = {31, 28, 31, 30, 31, 30, 31, 31, 30, 31, 30, 31};
	my_date date;
	date.year = 2021;
	date.month = 11;
	date.day = 19;
	//如果是闰年,则二月为29天
	if ((date.year % 4 == 0 && date.year % 100 != 0) || date.year % 400 == 0) {
		days[1] = 29;
	}
	int the_day = date.day;
	for (int i = 0; i < date.month - 1; i++) {
		the_day += days[i];
	}
	printf("%d年%d月%d日是这一年中的第%d天。", date.year, date.month, date.day, the_day);
}

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

路漫漫之编程

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值