将2D阵列集成到日历打印程序中
Integrating a 2D Array into a Calendar Printing Program
我决定开始从C++教科书中学习自己的代码,其中一个挑战是创建一个程序,以这种方式打印给定年份的日历,每个月:
-------------January-------------
Sun Mon Tue Wed Thu Fri Sat
1 2
3 4 5 6 7 8 9
10 11 12 13 14 16 17
18 19 20 21 22 23 24
25 26 27 28 29 30 31
我在Microsoft Visual Studio中编写了整个程序,但另一个挑战是使用以下数组将来自getMonthName和dayNumber函数的两个1D数组的数据转换为一个具有2D数组的函数:
// the first number is the month and second number is the last day of the month.
int yearly[12][2] =
{{1,31},{2,28},{3,31},{4,30},{5,31},{6,30},{7,31},{8,31},{9,30},{10,31},{11,30},{12,31}};
这本教科书没有很好地解释2D阵列,但我知道基本知识。我只是不知道如何引用数组的内容。我可以分配所有的";月份编号";数组的值到一个变量,就像我在这里为变量monthNumber所做的那样,然后从那里开始?如果有人能提供一个如何做到这一点的例子,我将不胜感激。我正在努力吸收尽可能多的信息,所以如果你能解释你的例子是如何运作的,我会欣喜若狂。
#include <iomanip>
#include <string>
#include <iostream>
using namespace std;
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;
}
string getMonthName(int monthNumber)
{
string months[] = { "January", "February", "March",
"April", "May", "June",
"July", "August", "September",
"October", "November", "December"};
return (months[monthNumber]);
}
//number of days in month
int numberOfDays(int monthNumber, int year)
{
// january
if (monthNumber == 0)
return (31);
// february
if (monthNumber == 1)
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);
}
// display calendar function
void printCalendar(int year)
{
printf (" Calendar - 2021", year);
int days;
// day from 0 - 6
int current = dayNumber(1, 1, year);
for (int i = 0; i < 12; i++)
{
days = numberOfDays(i, year);
// current month display
printf("n ------------%s-------------n",
getMonthName(i).c_str());
//columns
printf(" Sun Mon Tue Wed Thu Fri Satn");
// 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("n");
}
}
if (k)
printf("n");
current = k;
}
return;
}
// main function
int main()
{
int year = 2021;
printCalendar(year);
return (0);
}
如果你需要更多信息,请告诉我,我很乐意提供更多。
我声明了一个全局变量int yearly[12][2];
代码段第90行:
for (int i = 0; i < 12; i++)
{
days = numberOfDays(i, year);
yearly[i][0] = i; //month
yearly[i][1] = days;//days
... ...
for循环执行12次,每个i对应一个月。
Yearly[i][0]是月份,Yearly[i][1]是月份的天数。
2D阵列的样子:
column
Row 0 [0][1]
1 [0][1]
2 [0][1]
... ...
11[0][1]
打印2D阵列的示例:
for (int Row= 0; Row< 12; Row++)
{
std::cout << "{";
for (int column= 0; column< 2; column++)
{
std::cout << yearly[Row][column]<<",";
}
std::cout << "}"<<std::endl;
}
相关文章:
- 以螺旋方式打印矩阵的程序.(工作不好)
- 为什么这个 c++ 代码打印出长度 5,当我打印出字符串时,程序会自动终止?
- 为什么它只打印双链接列表的第一个值,而我的程序却崩溃了
- 为什么有时我输入一个整数,程序将第一个输入的数字打印成十进制数?
- 为什么这个程序没有打印返回的迭代器的正确第二个元素?
- 程序打印 % 后预期输出
- c ++控制台应用程序,如何在控制台外部打印字符
- 如何打印源文件中与 GDB 中的程序流关联的所有行号
- 此程序不会打印整个字符串
- 为什么Qt Creator的应用程序输出不能从spdlog记录器打印
- 问题导致程序停止响应,并且姓氏未正确打印
- 为什么这个程序接受整数和字母数字输入并打印它们? C++ 中的 std::string 也采用整数值吗?
- 该程序没有产生输出,而是卡在一个循环中,几秒钟后消失并打印被杀死?
- 每(n)秒打印一次的程序
- 如何编写一个程序来打印特定基数的前N个数字
- 我的C++程序如何访问计算机的日期和时间以打印和使用当前年份?
- 为什么如果我从键盘输入EOF克里昂不要在运行窗口打印程序的输出?
- 随机打印程序,尽管 sleep() 功能,一次打印多个输出
- 基本的控制台打印程序
- C++中的向量:为什么这个简单的复制和打印程序出现这么多错误?