用C语言实现,输入一个日期(**** ** **),然后输入一个数字,代表多少天之后,然后输出整数天后的日期

日期(**** ** **)
2025-03-13 20:55:54
推荐回答(3个)
回答1:

#include 
#include 

int CheckYear(int year)
{
if((year%4==0 && year%100!=0 ) || (year%400==0))
{
return 1;
}
else
{
return 0;
}
}

int GetMonthDays(int year,int month)
{
switch(month)
{
case 1:
case 3:
case 5:
case 7:
case 8:
case 10:
case 12:
return 31;
break;
case 4:
case 6:
case 9:
case 11:
return 30;
break;
case 2:
if(CheckYear(year)==1)
{
return 29;
}
else
{
return 28;
}
break;
default:
printf("month error!");
return 0;
break;
}
}

int main()
{
int year,month,day;
int add;
scanf("%d %d %d",&year,&month,&day);
scanf("%d",&add);
int i;
for(i=1;i<=add;i++)
{
day++;
if(day>GetMonthDays(year,month))
{
day=1;
month++;
if(month>12)
{
month=1;
year++;
}
}
}
printf("\n%d %d %d",year,month,day);
return 0;
}

回答2:

#include
main()
{
int y,m,d,x,i,k=0;
printf("请输入年月日及所加天数,以空格分开\n");
scanf("%d %d %d %d",&y,&m,&d,&x);
i=d+x;
if((y%4==0&&y%100!=0)||(y%400==0))k=1;
loop:
switch(m)
{
case 12:{ if(i<=62){if(i>31) {y++;m=1;d=i-31;break;}else d=i;break;}else {y++;m=1;i=i-31;goto loop;}}
case 11:{ if(i<=61){if(i>30) {m++;d=i-30;break;} else d=i;break;}else {m++;i=i-30;goto loop;}}
case 10:{ if(i<=61){if(i>31) {m++;d=i-31;break;} else d=i;break;}else {m++;i=i-31;goto loop;}}
case 9:{ if(i<=61){if(i>30) {m++;d=i-30;break;} else d=i;break;}else {m++;i=i-30;goto loop;}}
case 8:{ if(i<=61){if(i>31) {m++;d=i-31;break;} else d=i;break;}else {m++;i=i-31;goto loop;}}
case 7:{ if(i<=62){if(i>31) {m++;d=i-31;break;} else d=i;break;}else {m++;i=i-31;goto loop;}}
case 6:{ if(i<=61){if(i>30) {m++;d=i-30;break;} else d=i;break;}else {m++;i=i-30;goto loop;}}
case 5:{ if(i<=61){if(i>31) {m++;d=i-31;break;} else d=i;break;}else {m++;i=i-31;goto loop;}}
case 4:{ if(i<=61){if(i>30) {m++;d=i-30;break;} else d=i;break;}else {m++;i=i-30;goto loop;}}
case 3:{ if(i<=61){if(i>31) {m++;d=i-31;break;} else d=i;break;}else {m++;i=i-31;goto loop;}}
case 2:{if(k==1)
{ if(i<=60)
if(i>29)
{ m++;d=i-29;break;}
else
{ d=i;break;}
else
{m++;i=i-29;goto loop;}
}
else
{ if(i<=59)
if(i>28)
{ m++;d=i-28;break;}
else
{ d=i;break;}
else
{ m++;i=i-28;goto loop;}
}
}
case 1:{ if(k==1)
{ if(i<=60)
if(i>31)
{ m++;d=i-31;break;}
else
{ d=i;break;}
else
{m++;i=i-31;goto loop;}
}
else
{ if(i<=59)
if(i>31)
{ m++;d=i-31;break;}
else
{ d=i;break;}
else
{m++;i=i-31;goto loop;}
}
}
}
printf("%d %d %d\n",y,m,d);
}

回答3:

用一个数组存放每个月的天数,当然2月份初始化为29或者28都可以;然后用一个int型数来接收你的月份,利用switch来计算多少天后的日期