请分别输入年月日三个数值,计算出这是这一年的第几天?(提示:要考虑闰年和2月的情况)

这篇博客介绍了一个算法,用于根据输入的年、月、日计算这是一年中的第几天,特别考虑了闰年和2月的特殊情况。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

/*
3.请分别输入年月日三个数值,计算出这是这一年的第几天?
(提示:要考虑闰年和2月的情况)
*/
#include <stdio.h>
void main()
{
	int year,month,day,number;
	printf("温悉提示!平年:一月31天;  二月28天;  三月31天;  四月30天;  五月31天;  六月30天;  七月31天;  八月31天;  九月30天;  十月31天;  十一月30天;  十二月31天;\n");
	printf("温悉提示!闰年:一月31天;  二月29天;  三月31天;  四月30天;  五月31天;  六月30天;  七月31天;  八月31天;  九月30天;  十月31天;  十一月30天;  十二月31天;\n");
	printf("请输入你要计算的年份(例:2014,请注意不要小于0!):");
	scanf("%d",&year);
	printf("请输入你要计算的月份(例:5,请注意月份输入为1-12!):");
	scanf("%d",&month);
	printf("请输入你要计算的天数(例:23,请注意天数输入为1-31!):");
	scanf("%d",&day);
	//判断年份、月份、天数输入是否正确,不得超出限制和输入负数; 
	if((year>1)&&(month>=1&&month<=12)&&(day>=1&&day<=31))
	{
		//判断是否为闰年; 
		if((year%4==0&&year/100!=0)||(year%400==0))
		{
			//根据月份来确定这是这一年的多少天; 
			switch(month)
			{
				case 1:
					number=day;
					break;
				case 2:
					if(day<=29)
					{
						number=31+day;
						break;
					}
					else
					{
						printf("抱歉,你输入的该年份是闰年,闰年的2月最多只有29天!!!请重新运行程序尝试重新输入...");
					}
				case 3:
					number=31+29+day;
					break;
				case 4:
					if(day<=30)
					{
						number=31+29+31+day;
						break;	
					}
					else
					{
						printf("抱歉,四月份最多只有30天!!!请重新运行程序尝试重新输入...");
					}
				case 5:
					number=31+29+31+30+day;
					break;
				case 6:
			 		if(day<=30)
					{
						number=31+29+31+30+31+day;
						break;	
					}
					else
					{
						printf("抱歉,六月份最多只有30天!!!请重新运行程序尝试重新输入...");
					}
				case 7:
					number=31+29+31+30+31+30+day;
					break;
				case 8:
					number=31+29+31+30+31+30+31+day;
					break;
				case 9:
					if(day<=30)
					{
						number=31+29+31+30+31+30+31+31+day;
						break;	
					}
					else
					{
						printf("抱歉,九月份最多只有30天!!!请重新运行程序尝试重新输入...");
					}
				case 10:
					number=31+29+31+30+31+30+31+31+30+day;
					break;
				case 11:
					if(day<=30)
					{
						number=31+29+31+30+31+30+31+31+30+31+day;
						break;	
					}
					else
					{
						printf("抱歉,十一月份最多只有30天!!!请重新运行程序尝试重新输入...");
					}
				case 12:
					number=31+29+31+30+31+30+31+31+30+31+30+day;
					break;
			}
			printf("根据您输入的可以断定是这一年的第  %-4d天",number); 
		}
		else
		{
			//根据月份来确定这是这一年的多少天; 
			switch(month)
			{
				case 1:
					number=day;
					break;
				case 2:
					if(day<=28)
					{
						number=31+day;
						break;
					}
					else
					{
						printf("抱歉,你输入的该年份是平年,闰年的2月最多只有28天!!!请重新运行程序尝试重新输入...");
					}
				case 3:
					number=31+28+day;
					break;
				case 4:
					if(day<=30)
					{
						number=31+28+31+day;
						break;	
					}
					else
					{
						printf("抱歉,四月份最多只有30天!!!请重新运行程序尝试重新输入...");
					}
				case 5:
					number=31+28+31+30+day;
					break;
				case 6:
			 		if(day<=30)
					{
						number=31+28+31+30+31+day;
						break;	
					}
					else
					{
						printf("抱歉,六月份最多只有30天!!!请重新运行程序尝试重新输入...");
					}
				case 7:
					number=31+28+31+30+31+30+day;
					break;
				case 8:
					number=31+28+31+30+31+30+31+day;
					break;
				case 9:
					if(day<=30)
					{
						number=31+28+31+30+31+30+31+31+day;
						break;	
					}
					else
					{
						printf("抱歉,九月份最多只有30天!!!请重新运行程序尝试重新输入...");
					}
				case 10:
					number=31+28+31+30+31+30+31+31+30+day;
					break;
				case 11:
					if(day<=30)
					{
						number=31+28+31+30+31+30+31+31+30+31+day;
						break;	
					}
					else
					{
						printf("抱歉,十一月份最多只有30天!!!请重新运行程序尝试重新输入...");
					}
				case 12:
					number=31+28+31+30+31+30+31+31+30+31+30+day;
					break;
			}
			printf("根据您输入的可以断定是这一年的第  %-4d天",number); 
		}	
	}
	else{
		printf("抱歉,您输入的年份、月份、天数有误,请重新运行程序输入...");
	}
}


评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值