C++中给定年份的打印日历

先决条件: 查找给定日期的星期几 问题: 打印任何给定年份的日历。该程序应该能够打印任何输入年份的日历。 实施:

null

CPP

// A C++ Program to Implement a Calendar
// of an year
#include<bits/stdc++.h>
using namespace std;
/*A Function that returns the index of the day
of the date- day/month/year
For e.g-
Index     Day
0         Sunday
1         Monday
2         Tuesday
3         Wednesday
4         Thursday
5         Friday
6         Saturday*/
int dayNumber( int day, int month, int year)
{
static int t[] = { 0, 3, 2, 5, 0, 3, 5, 1,
4, 6, 2, 4 };
year -= month < 3;
return ( year + year/4 - year/100 +
year/400 + t[month-1] + day) % 7;
}
/*
A Function that returns the name of the month
with a given month number
Month Number     Name
0                January
1                February
2                March
3                April
4                May
5                June
6                July
7                August
8                September
9                October
10               November
11               December */
string getMonthName( int monthNumber)
{
string months[] = { "January" , "February" , "March" ,
"April" , "May" , "June" ,
"July" , "August" , "September" ,
"October" , "November" , "December"
};
return (months[monthNumber]);
}
/* A Function to return the number of days in
a month
Month Number     Name        Number of Days
0                January     31
1                February    28 (non-leap) / 29 (leap)
2                March       31
3                April       30
4                May         31
5                June        30
6                July        31
7                August      31
8                September   30
9                October     31
10               November    30
11               December    31
*/
int numberOfDays ( int monthNumber, int year)
{
// January
if (monthNumber == 0)
return (31);
// February
if (monthNumber == 1)
{
// If the year is leap then February has
// 29 days
if (year % 400 == 0 ||
(year % 4 == 0 && year % 100 != 0))
return (29);
else
return (28);
}
// March
if (monthNumber == 2)
return (31);
// April
if (monthNumber == 3)
return (30);
// May
if (monthNumber == 4)
return (31);
// June
if (monthNumber == 5)
return (30);
// July
if (monthNumber == 6)
return (31);
// August
if (monthNumber == 7)
return (31);
// September
if (monthNumber == 8)
return (30);
// October
if (monthNumber == 9)
return (31);
// November
if (monthNumber == 10)
return (30);
// December
if (monthNumber == 11)
return (31);
}
// Function to print the calendar of the given year
void printCalendar( int year)
{
printf ( "         Calendar - %d" , year);
int days;
// Index of the day from 0 to 6
int current = dayNumber (1, 1, year);
// i --> Iterate through all the months
// j --> Iterate through all the days of the
//       month - i
for ( int i = 0; i < 12; i++)
{
days = numberOfDays (i, year);
// Print the current month name
printf ( "  ------------%s-------------" ,
getMonthName (i).c_str());
// Print the columns
printf ( "  Sun  Mon  Tue  Wed  Thu  Fri  Sat" );
// Print appropriate spaces
int k;
for (k = 0; k < current; k++)
printf ( "     " );
for ( int j = 1; j <= days; j++)
{
printf ( "%5d" , j);
if (++k > 6)
{
k = 0;
printf ( "" );
}
}
if (k)
printf ( "" );
current = k;
}
return ;
}
// Driver Program to check above functions
int main()
{
int year = 2016;
printCalendar(year);
return (0);
}


输出:

 Calendar - 2016  ------------January-------------  Sun  Mon  Tue  Wed  Thu  Fri  Sat                             1    2    3    4    5    6    7    8    9   10   11   12   13   14   15   16   17   18   19   20   21   22   23   24   25   26   27   28   29   30   31  ------------February-------------  Sun  Mon  Tue  Wed  Thu  Fri  Sat         1    2    3    4    5    6    7    8    9   10   11   12   13   14   15   16   17   18   19   20   21   22   23   24   25   26   27   28   29  ------------March-------------  Sun  Mon  Tue  Wed  Thu  Fri  Sat              1    2    3    4    5    6    7    8    9   10   11   12   13   14   15   16   17   18   19   20   21   22   23   24   25   26   27   28   29   30   31  ------------April-------------  Sun  Mon  Tue  Wed  Thu  Fri  Sat                             1    2    3    4    5    6    7    8    9   10   11   12   13   14   15   16   17   18   19   20   21   22   23   24   25   26   27   28   29   30  ------------May-------------  Sun  Mon  Tue  Wed  Thu  Fri  Sat    1    2    3    4    5    6    7    8    9   10   11   12   13   14   15   16   17   18   19   20   21   22   23   24   25   26   27   28   29   30   31  ------------June-------------  Sun  Mon  Tue  Wed  Thu  Fri  Sat                   1    2    3    4    5    6    7    8    9   10   11   12   13   14   15   16   17   18   19   20   21   22   23   24   25   26   27   28   29   30  ------------July-------------  Sun  Mon  Tue  Wed  Thu  Fri  Sat                             1    2    3    4    5    6    7    8    9   10   11   12   13   14   15   16   17   18   19   20   21   22   23   24   25   26   27   28   29   30   31  ------------August-------------  Sun  Mon  Tue  Wed  Thu  Fri  Sat         1    2    3    4    5    6    7    8    9   10   11   12   13   14   15   16   17   18   19   20   21   22   23   24   25   26   27   28   29   30   31  ------------September-------------  Sun  Mon  Tue  Wed  Thu  Fri  Sat                        1    2    3    4    5    6    7    8    9   10   11   12   13   14   15   16   17   18   19   20   21   22   23   24   25   26   27   28   29   30  ------------October-------------  Sun  Mon  Tue  Wed  Thu  Fri  Sat                                  1    2    3    4    5    6    7    8    9   10   11   12   13   14   15   16   17   18   19   20   21   22   23   24   25   26   27   28   29   30   31  ------------November-------------  Sun  Mon  Tue  Wed  Thu  Fri  Sat              1    2    3    4    5    6    7    8    9   10   11   12   13   14   15   16   17   18   19   20   21   22   23   24   25   26   27   28   29   30  ------------December-------------  Sun  Mon  Tue  Wed  Thu  Fri  Sat                        1    2    3    4    5    6    7    8    9   10   11   12   13   14   15   16   17   18   19   20   21   22   23   24   25   26   27   28   29   30   31

时间复杂性 –O(1)。所用的时间不取决于输入年份。任何一年都是一样的。 辅助空间 –O(1) 本文由 拉希特·巴尔维里亚 .如果你喜欢GeekSforgek,并想贡献自己的力量,你也可以使用 写极客。组织 或者把你的文章寄去评论-team@geeksforgeeks.org.看到你的文章出现在Geeksforgeks主页上,并帮助其他极客。 如果您发现任何不正确的地方,或者您想分享有关上述主题的更多信息,请写下评论。

© 版权声明
THE END
喜欢就支持一下吧
点赞10 分享