?? 打印年歷.cpp
字號:
//-----------------------------
#include<iostream.h>
#include<iomanip.h> //其文件中包含了setw()函數的原型
//-----------------------------
int FirstDayOfYear(int y);
int DaysOfMonth(int m);
void PrintMonth(int m);
void PrintHead(int m);
bool IsLeapYear(int y);
//------------------------------
int year,weekDay;
//------------------------------
main(){
//為了輸出到屏幕上而不受重定向的影響,下面用cerr輸出
cerr<<"請輸出您想要打印的年份\n";
cin>>year;
if(year<1){
cout<<"對不起,輸入的年份不能小于公元1年:\n";
return 0;
}
//打印年歷
cout<<"\n\n\n"<<year<<" 年\n";
cout<<"\n=================================================\n";
weekDay=FirstDayOfYear(year);
//打印每個月
for(int i=1;i<13;i++)
PrintMonth(i);
cout<<"\n";
system("pause");
}
//--------------------------
void PrintMonth(int m)
{
PrintHead(m);
int days=DaysOfMonth(m);
for(int i=1;i<=days;i++){
cout<<setw(2)<<i<<setw(3)<<" "; //為三空格
weekDay=(weekDay+1)%7;
if(weekDay==0){
cout<<"\n";
cout<<"\t";
}
}
}
//----------------------------
void PrintHead(int m)
{
cout<<"\n\n"<<setw(2)<<m<<"月 日 一 二 三 四 五 六\n\t"; //字與字間為三個空格
if(weekDay!=7){
for(int i=1;i<=weekDay;i++) //表頭和日期要嚴格對齊,\t所占域寬等于八個空格,一個數字域寬等于一個空格,一個漢字域寬等于兩個空格
cout<<" "; //五個空格
}
}
int DaysOfMonth(int m){
switch(m){
case 1:
return 31;
case 3:
return 31;
case 5:
return 31;
case 7:
return 31;
case 8:
return 31;
case 10:
return 31;
case 12:
return 31;
case 4:
return 30;
case 6:
return 30;
case 9:
return 30;
case 11:
return 30;
case 2:
if(IsLeapYear(year))
return 29;
else
return 28;
}
return 0;
}
//----------------------------
bool IsLeapYear(int y){
return ((y%4==0&&y&100!=0)||y%400==0);
}
//----------------------------
int FirstDayOfYear(int y){
long n;
n=y*365;
for(int i=1;i<y;i++)
n+=IsLeapYear(i);
return n%7;
}
//------------------------------
?? 快捷鍵說明
復制代碼
Ctrl + C
搜索代碼
Ctrl + F
全屏模式
F11
切換主題
Ctrl + Shift + D
顯示快捷鍵
?
增大字號
Ctrl + =
減小字號
Ctrl + -