本人刚学编程,求大神改进代码,指出不足,谢谢
#include <iostream>
using namespace std;
int main()
{
int total_day = 0; //从输入年份到1900年间的总天数
int first_day = 2; //1900年的第一天是周二,0~6分别代表周日、周一。。。周六
int year; //定义输入的年份
bool isleapyear_1; //判断是否闰年
cout << "input the year: ";
cin >> year;
for( int i = 1900; i < year; ++i ) //进行总天数计算
{
int b = i - 1;
bool isleapyear_2 = (b % 4 == 0 && b % 100 != 0) || (b % 400 == 0);
if(isleapyear_2)
total_day += 366;
else
total_day += 365;
}
isleapyear_1 = (year % 4 == 0 && year % 100 != 0) || (year % 400 == 0);
first_day = (first_day + total_day % 7 ) % 7;
string s[] = { "January", "February", "March", "April", "May","June", "July", "August", "September", "October", "November", "December"};
for ( int i = 0; i < 12; ++i ){
cout << " " << s[i] << " " << year << "\n";
cout << "Sun Mon Tue Wed Thu Fri Sat " << "\n";
int x = i+1;
switch(x)
{
case 1:
case 3:
case 5:
case 7:
case 8:
case 10:
case 12:
{
int counter1 = 0; //counter1计数器用来控制换行
for(int j = 0; j < first_day; ++j ){
++counter1;
cout << " ";
}
for(int k = 1; k <= 31; ++k ){
if( ++counter1 % 7 != 0 ){
cout << k << " ";
}
else{
cout << k << " ";
cout <<"\n";
}
}
first_day = (31+first_day)%7;
cout << "\n";
}
break;
case 2:
if(isleapyear_1){
int counter2 = 0; //counter2计数器用来控制换行
for(int j = 0; j < first_day; ++j ){
++counter2;
cout << " ";
}
for(int k = 1; k <= 29; ++k ){
if( ++counter2 % 7 != 0 )
cout << k << " ";
else{
cout << k << " ";
cout <<"\n";
}
}
first_day = (29+first_day)%7;
cout << "\n";
}
if(!isleapyear_1){
int counter2 = 0;
for(int j = 0; j < first_day; ++j ){
++counter2;
cout << " ";
}
for(int k = 1; k <= 28; ++k ){
if( ++counter2 % 7 != 0 ){
cout << k << " ";
}
else{
cout << k << " ";
cout <<"\n";
}
}
first_day = (28+first_day)%7;
cout << "\n";
}
break;
default:
if(1){
int counter3 = 0; //counter3计数器用来控制换行
for(int j = 0; j < first_day; ++j ){
++counter3;
cout << " ";
}
for(int k = 1; k <= 30; ++k ){
if( ++counter3 % 7 != 0 )
cout << k << " ";
else{
cout << k << " ";
cout <<"\n";
}
}
first_day = (30+first_day)%7;
cout << "\n";
}
break;
}
}
return 0;
}