方法一:
#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);
}