输入一个日期(yyyy-mm-dd),计算该日期时自公元元年1月1日的第多少天

方法一:

#include 

int main(int argc,const char* argv[])
{
	unsigned short year = 0 , month = 0 , day = 0;
	printf("请输入一个日期(yyyy mm dd)");
	scanf("%hu%hu%hu",&year,&month,&day);

	if(month > 12 || day > 31)
	{
		printf("输入的日期有误!\n");
		return 0;
	}

	int sum = 0;
	for(int y=1; y<year; y++)
	{
		sum = sum+365+(0==y%4 && 0!=y%100 || 0==y%400);
	}

	for(int m=1; m<month; m++)
	{
		switch(m)
		{
			case 2:
				sum = sum+28+(0==year%4 && 0!=year%100 || 0==year%400);
				break;
			case 4: case 6: case 9: case 11:
				sum+=30;break;
			default:
				sum+=31;break;
		}
	}

	printf("相差%d天\n",sum+day-1);
}

方法二:

#include 
#include 

int main(int argc,const char* argv[])
{
	uint16_t year = 0 , month = 0 , day = 0;
	printf("请输入一个日期:");
	scanf("%hu%hu%hu",&year,&month,&day);

	int arr[12] = {31,28,31,30,31,30,31,31,30,31,30,31};
	arr[1] += (0==year%4 && 0!=year%100 || 0==year%400);
	if(month > 12 || day > arr[month-1])
	{
		printf("输入的日期有误!\n");
		return 0;
	}

	uint32_t sum = 0;
	for(uint16_t y=1; y<year; y++)
	{
		sum = sum+365+(0==y%4 && 0!=y%100 || 0==y%400);
	}
	

	for(int m=0; m<month-1; m++)
	{
		sum += arr[m];
	}

	printf("%u\n",sum+day-1);
}

你可能感兴趣的:(输入一个日期(yyyy-mm-dd),计算该日期时自公元元年1月1日的第多少天)