输入一个日期(*年*月*日),通过计算返回该日期的前一天日期值。C语言 5
输入一个日期(*年*月*日),通过计算返回该日期的前一天日期值(比如,输入1999-3-6,则输出1999-3-5)。提示:(1)定义一个结构体MyDate,包括三个成员...
输入一个日期(*年*月*日),通过计算返回该日期的前一天日期值(比如,输入1999-3-6,则输出1999-3-5)。
提示:
(1)定义一个结构体MyDate,包括三个成员(year、month、day)。
(2)定义一个函数MyDate PreDate(MyDate date),用来实现题目1所描述的功能。
(3)定义一个函数bool isLeapyear(int year),用来判断某一年是否是闰年。 展开
提示:
(1)定义一个结构体MyDate,包括三个成员(year、month、day)。
(2)定义一个函数MyDate PreDate(MyDate date),用来实现题目1所描述的功能。
(3)定义一个函数bool isLeapyear(int year),用来判断某一年是否是闰年。 展开
1个回答
展开全部
#include<stdio.h>
typedef struct TDate{
int year,month,day;
} MyDate;
int isLeapyear(int y){
int r=y%400==0 || y%4==0 && y%100!=0;
return r;
}
MyDate input(){
MyDate d;
scanf("%d%d%d", &d.year, &d.month, &d.day);
return d;
}
void display(MyDate d){
printf("%4d-%02d-%02d\n", d.year, d.month, d.day);
}
MyDate PreDate(MyDate date){
MyDate td=date;
td.day--;
if(td.day==0){
td.month--;
if(td.month==0){
td.day=31;
td.month=12;
td.year--;
}else{
switch(td.month){
case 1:
case 3:
case 5:
case 7:
case 8:
case 10:
td.day=31; break;
case 4:
case 6:
case 9:
case 11:
td.day=30; break;
case 2:
td.day=( isLeapyear(td.year) ? 29 : 28 );
break;
}
}
}
return td;
}
void main(){
MyDate d1,d2;
d1=input();
display(d1);
d2=PreDate(d1);
display(d1);
display(d2);
}
typedef struct TDate{
int year,month,day;
} MyDate;
int isLeapyear(int y){
int r=y%400==0 || y%4==0 && y%100!=0;
return r;
}
MyDate input(){
MyDate d;
scanf("%d%d%d", &d.year, &d.month, &d.day);
return d;
}
void display(MyDate d){
printf("%4d-%02d-%02d\n", d.year, d.month, d.day);
}
MyDate PreDate(MyDate date){
MyDate td=date;
td.day--;
if(td.day==0){
td.month--;
if(td.month==0){
td.day=31;
td.month=12;
td.year--;
}else{
switch(td.month){
case 1:
case 3:
case 5:
case 7:
case 8:
case 10:
td.day=31; break;
case 4:
case 6:
case 9:
case 11:
td.day=30; break;
case 2:
td.day=( isLeapyear(td.year) ? 29 : 28 );
break;
}
}
}
return td;
}
void main(){
MyDate d1,d2;
d1=input();
display(d1);
d2=PreDate(d1);
display(d1);
display(d2);
}
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询