C++ 创建日历,输出格式问题
正在尝试为我在学校的实验室创建日历,需要一些帮助。我的程序可以很好地根据月份显示日期,如果是闰年或不是闰年。但它在显示日期和相应的日期时效果不佳。例如,我的输出如下:C++ 创建日历,输出格式问题,c++,c++11,C++,C++11,正在尝试为我在学校的实验室创建日历,需要一些帮助。我的程序可以很好地根据月份显示日期,如果是闰年或不是闰年。但它在显示日期和相应的日期时效果不佳。例如,我的输出如下: Jan 1996 --------------------------------- 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 3
Jan 1996
---------------------------------
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
如你所见,数字与日期不一致,我似乎无法正确地排列它们。我想了解这一点,所以如果有人能帮忙,请让我知道我做错了什么,而不是直截了当地告诉我答案
完整代码:
class Calendar {
public:
int Year;
int Month;
int Day;
string MonthNames[12] = { "Jan","Feb","March","April","May", "June","July", "August", "Sept","Oct","Nov","Dec" };
string Name;
string DayNames[7] = { "Sun", "Mon", "Tue", "Wed","Thu", "Fri", "Sat" };
int AmountOfDays = 31; //base value
void AskForDate() {
cout << "Enter Year" << endl;
cin >> Year;
SetUpCalendarUI();
}
void SetUpCalendarUI()
{
if (LeapYear()) {
SetDaysUI();
}
else {
cout << "Not Leap year";
}
}
bool LeapYear() {
if (Year % 4 == 0 || Year % 400 == 0 && Year % 100 != 0) {
return true;
}
else {
return false;
}
}
int ChangeAmountOfDays(int Month) {
switch (Month) {
case 1: return 31;
case 2:
if (!LeapYear()) {
return 28;
}
else {
return 29;
}
case 3: return 31;
case 4: return 30;
case 5: return 31;
case 6: return 30;
case 7: return 31;
case 8: return 31;
case 9: return 30;
case 10: return 31;
case 11: return 30;
case 12: return 31;
}
return 0;
}
void SetDaysUI() {
int i;
//print out month names 1 by 1
for (int k = 0; k < 12; k++) {
AmountOfDays = ChangeAmountOfDays(k+1);
cout << "\t" << MonthNames[k] << " " << Year << "\n";
cout << "---------------------------------" << "\n";
//print out days 1 by 1
for (int DayOfWeek = 0; DayOfWeek < 7; DayOfWeek++) {
cout << DayNames[DayOfWeek] << setw(5);
}
cout << "\n";
//we want to set the amount of days == to the month.
//i = current Day put a space in between.
//j = Total Amount of days
for (i = 0; i < Day; i++)
cout << " ";
for (int j = 1; j <= AmountOfDays; j++) {
cout << j << setw(3);
if (i++ > 5) {
i = 0;
cout << "\n";
}
}
if (i) {
cout << "\n";
Day = i;
}
}
return;
}
};
课程日历{
公众:
国际年;
整月;
国际日;
字符串MonthNames[12]={“一月”、“二月”、“三月”、“四月”、“五月”、“六月”、“七月”、“八月”、“九月”、“十月”、“十一月”、“十二月”};
字符串名;
字符串DayNames[7]={“Sun”、“Mon”、“Tue”、“Wed”、“Thu”、“Fri”、“Sat”};
int AmountOfDays=31;//基值
void AskForDate(){
过去一年;
SetUpCalendarUI();
}
void SetUpCalendarUI()
{
如果(LeapYear()){
SetDaysUI();
}
否则{
你能接近吗。setw
需要在你要对齐的值之前使用。建议:用一个较小的程序练习对齐列,该程序只打印两行简单的预设数据。当你完成这项工作后,把你学到的知识应用到你的较大的程序中。@cigien真棒,谢谢!我把它对齐了p完美!@user4581301好的,我会试试这个,谢谢!有关此区域的更多示例代码: