文章

18

粉丝

0

获赞

3

访问

4.5k

头像
日期计算 题解:自用笔记
P1051 中南大学机试题
发布于2024年3月8日 17:59
阅读数 196

先准备存储月份的数组,其中2月份的天数根据是否年份确定,初始化为0天

判断是否错误数据:年份不能是负数,月份在合理范围内,日根据输入的月份来判断,日的判断是通过和初始化的数组逐一对比,如2月不可能出现30天

#include<stdio.h>
typedef struct {
	int year;
	int month;
	int day;
}date;

int isyear(int x) {//闰年判断
	if (x % 400 == 0) return 1;
	else if (x % 4 == 0 && x % 100 != 0) return 1;
	else return 0;
}

int main() {
	int mon[12] = { 31,0,31,30,31,30,31,31,30,31,30,31 };
	date input;
	int days, index;
	while (scanf("%d %d %d", &input.year, &input.month, &input.day) != EOF) {
		if (input.year <= 0 || input.month <= 0 || input.month>12) {
			printf("Input error!\n");
			continue;
		}

		if (isyear(input.year)) {//根据年份确定2月的天数
			mon[1] = 29;
		}
		else {
			mon[1] = 28;
		}

		if (input.day<=0 || input.day>mon[input.month-1]) {//日的输入是否正确依据年月
			printf("Input error!\n");
			continue;
		}

		days = 0;
		for (int i = 0; i < input.month - 1; i++) {
			days += mon[i];
		}
		days += input.day;
		printf("%...
登录查看完整内容


登录后发布评论

暂无评论,来抢沙发