#include <stdio.h>
int irn;
//判断是闰年还是平年,闰年返回1,平年返回0
int isRunNian(int *y)
{
//判断是否为闰年
if((*y%4==0 && *y%100!=0) || *y%400==0) //如果是闰年
{
return (1);
}else //如果是平年
{
return (0);
}
}
void yesterday(int *y, int *m, int *d)
{
int day=*d-1;
int month=*m;
int newYear=*y;
if(day==0){
month=*m-1;
if(month==0){
newYear=*y-1; month=12;day=31;
}else{
if(month==1 || month==3 || month==5 || month==7 || month==8 || month==10){
day=31;
}else if(month==4 || month==6 || month==9 || month==11){
day=30;
}else if(month==2){
irn=isRunNian(y);
if(irn==1){
day=29;
}else{
day=28;
}
}
}
}
printf("昨天是%d年%d月%d日。\n", newYear,month,day);
}
void tomorrow(int *y, int *m, int *d)
{
int newDay=*d+1;
int newMonth=*m;
int newYear=*y;
if(*m==1 || *m==3 || *m==5 || *m==7 || *m==8 || *m==10 || *m==12)
{
if(*d==31)
{
if(*m==12)
{
newYear=*y+1;
newMonth=1;
newDay=1;
}
}
}else if(*m==4 || *m==6 || *m==9 || *m==11)
{
if(*d==30)
{
newDay=1;
newMonth=*m+1;
}
}else if(*m==2)
{
irn=isRunNian(y);
if(irn)
{
if(*d==29)
{
newDay=1; newMonth=*m+1;
}
}else{
if(*d==28)
{
newDay=1; newMonth=*m+1;
}
}
}
printf("明天是%d年%d月%d日。", newYear,newMonth,newDay);
}
void main()
{
int y=0,m=0,d=0;
int irn;
printf("请输入年份");scanf("%d",&y);
while(y<1)
{
printf("请重新输入年份");scanf("%d",&y);
}
irn=isRunNian(&y);
printf("请输入月份"); scanf("%d",&m);
while(m<1 || m>12)
{
printf("请重新输入月份"); scanf("%d",&m);
}
printf("请输入日期"); scanf("%d",&d);
do{
if(d<1 || d>31)
{
printf("请重新输入日期"); scanf("%d",&d);
}else
{
if((m==4 || m==6 || m==9 || m==11) && d==31)
{
printf("输入错误,%d月没有%d天,请重新输入日期",m,d); scanf("%d",&d);
}else if(m==2)
{
if(irn==0 && d>28)
{
printf("输入错误,%d是平年,%d月没有%d天,请重新输入日期",y,m,d); scanf("%d",&d);
}else if(irn==1 && d>29)
{
printf("输入错误,%d是闰年,%d月没有%d天,请重新输入日期",y,m,d); scanf("%d",&d);
}else
{
break;
}
}else
{
break;
}
}
}while(1);
printf("您输入的是%d年%d月%d日\n", y,m,d);
yesterday(&y,&m,&d);
tomorrow(&y,&m,&d);
putchar('\n');
}
编写函数,求出并设置y年m月d日的前一天或后一天的日期(能正确判断闰年)
最新推荐文章于 2023-04-11 20:19:12 发布