C语言--输入一个日期,输出当前日期是这一年的第几天(完整代码)

介绍

输入一个日期,输出当前日期是这一年的第几天
注意考虑平年闰年问题
2021.3.24
输出:2021年3月24日是2021年的第83天

代码如下(部分注释)

#include <stdio.h>

int main(int argc, const char *argv[])
{
	int year = 0;
	int month = 0;
	int month2 = 0;
	int day = 0;
	//int temp = 0;

	printf("请输入年月日(用回车分割):\n");
	scanf("%d%d%d",&year,&month,&day);
	printf("您输入的日期是:%d年 %d月 %d日\n ",year,month,day);
    //判断年月日的合法性
    if(year <0 ||month >12 ||month < 1)
	{
		printf("xia  TM  xie\n");
		return 0;
	}
    //判断是不是31天的合法性
	if(month == 1 ||month == 3||month == 5||month == 7||month ==8||month==10||month==12)
	{
		if(day > 31)
		{
			printf("又特么瞎写!!!\n");
			return 0;
		}
	}
	if(month == 2||month==4||month==6||month==9||month==11)
	{
		if(day > 30)
		{
			printf("又特么瞎写!!!\n");
			return 0;
		}
	}
	//根据输入的年份,判断一下是不是闰年
	if(((year%4==0)&&(year%100!=0))||year%400==0)
	{//闰年  	2yue 29day
		if(month == 2)
		{
			if(day > 29)
			{
				printf("又特么瞎写!!!\n");
				return 0;
			}
		}
		month2 = 29;
	}
	else
	{//平年 	2yue 28day
		month2 = 28;
		if(month == 2)
		{
			if(day > 28)
			{
				printf("又特么瞎写!!!\n");
				return 0;
			}
		}
	}

	switch(month){
		case 12 :
			printf("第%d天\n",31+month2+31+30+31+30+31+31+30+31+30+day);
			break;
		case 11 :
			printf("第%d天\n",31+month2+31+30+31+30+31+31+30+31+day);
			break;
		case 10 :
			printf("第%d天\n",31+month2+31+30+31+30+31+31+30+day);
			break;
		case 9 :
			printf("第%d天\n",31+month2+31+30+31+30+31+31+day);
			break;
		case 8 :
			printf("第%d天\n",31+month2+31+30+31+30+31+day);
			break;
		case 7 :
			printf("第%d天\n",31+month2+31+30+31+30+day);
			break;
		case 6 :
			printf("第%d天\n",31+month2+31+30+31+day);
			break;
		case 5 :
			printf("第%d天\n",31+month2+31+30+day);
			break;
		case 4 :
			printf("第%d天\n",month2+31+31+day);
			break;
		case 3 :
			printf("第%d天\n",month2+31+day);
			break;
		case 2 :
			printf("第%d天\n",31+day);
			break;
		case 1 :
			printf("第%d天\n",day);
			break;
	}

	return 0;
}

执行结果如下

在这里插入图片描述

输入错误情况如下

在这里插入图片描述

– 文明 使人进步 –

在这里插入图片描述

评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值