题解:
#include <stdio.h>
#include <string.h>
int leapyear(int year)//判断是否为闰年
{
if(year%4==0&&year%100!=0||year%400==0)
return 1;
else
return 0;
}
int days(int year,int month,int *a)//函数返回各个月的天数
{
if(month!=2)
return a[month-1];
else
return 28+leapyear(year);
}
void main()
{
char num[10];
int n[10];
int a[12]={31,28,31,30,31,30,31,31,30,31,30,31};//枚举各个月的天数
gets(num);
for(int i=0;i<8;i++)
{
n[i]=num[i]-'0';
}
int year=n[0]*1000+n[1]*100+n[2]*10+n[3];//将字符串对应部分转换成数
int month=n[4]*10+n[5];
int day=n[6]*10+n[7];
int sum=0;
int j=2022,k=3,l=19;//存储今天的日期,后面就进行条件判断
if(year>j)
{
for(j=2023;j<year+1;j++)
{
if(leapyear(j)==1)
{sum+=366;
}
else
{sum+=365;
}
}
}
else if(year<j)
{
for(j=2022;j>year;j--)
{
if(leapyear(j)==1)
{sum-=366;
}
else
{sum-=365;
}
}
}
if(k<month)
{
for(int i=0;i<month-k;i++){
sum+=days(year,month-1-i,a);
}
}
else if(k>month)
{
for(int i=0;i<k-month;i++){
sum-=days(year,month+i,a);
}
}
sum+=day-l;
if(sum<0)
{
printf("guo qv %d tian",-sum);
}
if(sum>0)
{
printf("hai you %d tian",sum);
}
if(year==2022&&month==3&&day==19)
{
printf("jiu shi jin tian!");
}
}
结果: