题目:输入今天的日期,输出明天的日期
#include <stdio.h>
#include <stdbool.h>
struct date {
int month;
int day;
int year;
};
bool isLeap(struct date d);
int numberOfDays(struct date d);
int main(int argc, char **argv) {
struct date today, tomorrow;
printf("请输入today的年月日:");
scanf("%d.%d.%d", &today.year ,&today.month, &today.day);
if(today.day != numberOfDays(today)){ //如果不是一个月的最后一天
tomorrow.day = today.day + 1; //day+1
tomorrow.month = today.month; //month不变
tomorrow.year = today.year; //year不变
} else if(today.month == 12){ //12月的最后一天
tomorrow.day = 1; //day变成1号
tomorrow.month = 1; //month变成1月
tomorrow.year = today.year +1; //year+1
} else{ //不是12月的最后一天
tomorrow.day = 1; //day变成1号
tomorrow.month = today.month + 1; //month+1
tomorrow.year = today.year; //year不变
}
printf("tomorrow的日期是%d-%d-%d\n",tomorrow.year, tomorrow.month, tomorrow.day);
return 0;
}
int numberOfDays(struct date d){
int days;
const int daysPerMonth[12] = {31,28,31,30,31,30,31,31,30,31,30,31};
if(d.month ==2 && isLeap(d)){ //如果是2月,并且是闰年的话,day需要变成29
days = 29;
} else {
days = daysPerMonth[d.month-1];
}
return days;
}
bool isLeap(struct date d){ //判断是否是闰年
bool leap = false;
if( (d.year%4==0 && d.year%100!=0) || d.year%400==0){
leap = true;
}
return leap;
}
记录。来自中国大学mooc的课程。