第9章——用户自己建立数据类型

1.定义一个结构体变量(包括年、月、日)。
计算该日在本年中是第几天,注意闰年问题。

#include<stdio.h>

struct date
{
   
	int _year;
	int _month;
	int _day;
};

int main()
{
   
	//定义一个日期数组
	int days[] = {
    0,31,28,31,30,31,30,31,31,30,31,30,31 };
	struct date d;
	printf("请输入数据:\n");
	//输入数据
	scanf_s("%d %d %d", &d._year, &d._month, &d._day);
	int day = 0;
	//循环累加:累加1~month-1所有天数
	for (int i = 1; i < d._month; i++) {
   
		day += days[i];
	}
	//累加当前月的天数
	day += d._day;
	//判断是否为闰年
	if (d._year % 4 == 0 && d._year % 100 != 0 || (d._year % 400 == 0)) {
   
		if (d._month > 2) {
   
			++day;
		}
	}
	printf("这是这一年的第%d天", day);
	return 0;
}

2.写一个函数days,实现第几天的计算,由主函数将年、月、日传递给days函数,计算后将日子数传回主函数输出

#include<stdio.h>

struct date
{
   
	int _year;
	int _month;
	int _day;
};

int days(struct date d)
{
   
	//日期数组
	int num[] = {
    0,31,28,31,30,31,30,31,31,30,31,30,31 };
	int n = sizeof(num) / sizeof(num[0]);
	//累加日期,1—month-1
	int ret = 0;
	for (int i = 0; i < d._month; i++) {
   
		ret += num[i];
	}
	//累加当前月的天数
	ret += d._day;
	//判断是否包含2月
	if (d._month > 2) {
   
		if ((d._year % 4 == 0 && d._year % 100 != 0) || (d._year % 400 == 0)) {
   
			++ret;
		}
	}
	return ret;
}

int main()
{
   
	struct date d;
	printf("请输入日期:\n");
	scanf_s("%d %d %d", &d._year, &d._month, &d._day);
	printf("这是这年的第%d天", days(d));
	return 0;
}

3.编写一个函数print,打印一个学生的成绩数组,该数组中有5个学生的数据记录,每个记录包括num,name,score[3],用主函数输入这些记录,用print函数输出这些记录。

#define _CRT_SECURE_NO_WARNINGS
#define LEN 10
#include<stdio.h>

struct student
{
   
	int num;
	char name[LEN];
	int score[3];
};

void print(struct student* stuArr, int num)
{
   
	for (int i = 0; i < num; i++) {
   
		printf("%d %s %d %d %d\n", stuArr[i].num,
			stuArr[i].name, stuArr[i].score[0], stuArr[i].score[1], stuArr[i].score[2]);
	}
}

int main()
{
   
	struct student stuArr[5];
	printf("请输入5名学生的数据:学号 名字 成绩1 成绩2 成绩3\n");
	for (int i = 0; i < 5; i++) {
   
		scanf("%d %s %d %d %d", &stuArr[i].num, &stuArr[i].name, &stuArr[i].score[0],
			&stuArr[i].score[1], &stuArr[i].score[2]);
	}
	print(stuArr, 5);
	return 0;
}

4.在成绩数组的基础上,编写一个函数input,用来输入5个学生的数据记录

#define _CRT_SECURE_NO_WARNINGS
#define LEN 10
#include<stdio.h>

struct student
{
   
	int num;
	char name[LEN];
	int score[3];
};

void input(struct student* stuArr, int n) {
   
	//输入学生数据
	printf("请输入5名学生的数据:学号 名字 成绩1 成绩2 成绩3\n");
	for (int i = 0; i < n; i++) {
   
		scanf("%d %s %d %d %d", &stuArr[i
  • 4
    点赞
  • 6
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值