编程实现输入年月日,输出结果为该年的第几天(考虑用户输入的各种情况对程序进行完善)

这个是在博客中看到的一个C语言经典实用题目,在考虑用户可能输入的各种情况之后,最程序做了一些修改,包括越界问题,以及闰年平年二月份天数的考虑,可能还有bug,或者其他比较简单的写法,欢迎大家进行交流改进O(∩_∩)O

#define _CRT_SECURE_NO_WARNINGS
#include <stdio.h>
#include <stdlib.h>

//输入某年某月某日,判断这一天是这一年的第几天
enum{
	Jan = 1,
	Feb,
	Mar,
	Apr,
	May,
	Jun,
	Jul,
	Aug,
	Sep,
	Oct,
	Dec,
	Nov
};
int main(){
	int sum = 0;
	int year, month, day;
	int leap = 0;
	while (1){
		printf("请输入年 月 日: ");
		scanf("%d %d %d", &year, &month, &day);
		if (year < 0 && month < 1 && month > 12 && day < 1 && day > 31){
			printf("您的输入有误");
			continue;
		}
		if ((year % 400 == 0) || (year % 4 == 0 && year % 100 != 0)){
			leap = 1;
		}
		if (leap == 1 && month == 2 && day > 29){
			printf("您确定您输入的年份二月有这么多天吗!\n");
			continue;
		}
		if (leap == 0 && month == 2 && day > 28){
			printf("您确定您输入的年份二月有这么多天吗!\n");
			continue;
		}
		switch (month){
		case Jan:
			sum = 0;
			break;
		case Feb:
			sum = 31;
			break;
		case Mar:
			sum = 59;
			break;
		case Apr:
			sum = 90;
			break;
		case May:
			sum = 120;
			break;
		case Jun:
			sum = 151;
			break;
		case Jul:
			sum = 181;
			break;
		case Aug:
			sum = 212;
			break;
		case Sep:
			sum = 243;
			break;
		case Oct:
			sum = 273;
			break;
		case Dec:
			sum = 304;
			break;
		case Nov:
			sum = 334;
			break;
		}
		sum += day;
		if (leap && month > 2){
			++sum;
		}
		break;
	}
	printf("这一天是%d年的第%d天\n", year, sum);
	system("pause");
	return 0;
}
  • 1
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值