推算日期 感谢帮忙
Description输入三个正整数,分别代表一个日期的年,月,日,输出这个日期的后一天的年,月,日。
Input
输入三个正整数,分别代表一个日期的年,月,日。
Output
输出这个日期的后一天的年,月,日。
Samples
input
2007 2 28
output
2007 3 1
程序代码:#include <stdio.h>
class Date {
private:
int year, month, day;
int IsLeapYear(int y)
{
return ((y % 4 == 0 && y % 100 != 0) || (y % 400 == 0));
}
int DaysOfMonth(int y, int m)
{
int a[12] = { 31,28,31,30,31,30,31,31,30,31,30,31 };
if (IsLeapYear(y) && m == 2) return a[m - 1] + 1;
return a[m - 1];
}
public:
Date(): year(2022), month(2), day(28) {}
Date(int y,int m,int d):year(y),month(m),day(d){}
void Show()const
{
printf("%d %d %d\n", year, month, day);//年-月-日 格式
}
Date IncOneDay()
{
Date tmp = *this;
if (day == DaysOfMonth(year, month))
{
tmp.day = 1;
if (month == 12){
tmp.month = 1;
tmp.year++;
}
else {
tmp.month++;
}
}
else {
tmp.day++;
}
return tmp;
}
};
int main()
{
int y, m, d;
Date* D;
printf("input\n");
scanf("%d%d%d", &y, &m, &d);
D = new Date(y, m, d);
printf("output\n");
D->IncOneDay().Show();
return 0;
}[此贴子已经被作者于2022-1-27 16:05编辑过]
程序代码:#include <stdio.h>
int IsLeapYear(int y)
{
return ((y % 4 == 0 && y % 100 != 0) || (y % 400 == 0));
}
int DaysOfMonth(int y, int m)
{
int a[12] = { 31,28,31,30,31,30,31,31,30,31,30,31 };
if (IsLeapYear(y) && m == 2) return a[m - 1] + 1;
return a[m - 1];
}
void Show(int year,int month,int day)
{
printf("%d %d %d\n", year, month, day);//年-月-日 格式
}
void IncOneDay(int *year,int *month,int *day)
{
if ((*day) == DaysOfMonth(*year, *month))
{
(*day) = 1;
if ((*month) == 12) {
(*month) = 1;
(*year)++;
}
else {
(*month)++;
}
}
else {
(*day)++;
}
}
int main()
{
int y, m, d;
printf("input\n");
scanf("%d%d%d", &y, &m, &d);
IncOneDay(&y, &m, &d);
printf("output\n");
Show(y, m, d);
return 0;
}[此贴子已经被作者于2022-2-21 09:11编辑过]