唉,日期输出问题,麻烦来看看
书看完了,我一直在做书后的练习,遇到了麻烦,主要是输出的时候,总是不对不齐,尤其是当一个月到另一个月的时候。希望能给个解决方法。
#include<iostream>#include<iomanip>#include<math.h>using namespace std;//int firstday;static void coutmonth(int m);//m 表示月份static int daysofmonth(int);static void head(int);int weekday,days,year;int main(){ int firstday; cout<<"请输入年"<<endl; cin>>year; firstday=(year-1+(year-1)/4-(year-1)/100+(year-1)/400+1)%7;//计算元旦是星期几 weekday=firstday;//星期(它将会在后面输出号数的时候发生改变) for(int i=1;i<=12;i++) { head(i); coutmonth(i); cout<<"\n"; } return 0; }void coutmonth(int m){ days=daysofmonth(m); for(int i=1;i<=days;i++) { cout<<setw(8)<<i; weekday=(weekday+1)%7; if(weekday==0) { cout<<"\n"; } }}int daysofmonth(int m){ switch(m) { case 1: case 3: case 5: case 7: case 8: case 10: case 12:return 31; case 4: case 6: case 9: case 11:return 30; case 2:if((year%4==0&&year%100!=0)||(year%400==0)){return 29;}else{return 28;}//((year%4==0&&year%100!=0)||(year%400==0))?return 29:return 28;//2月很特殊哦 }}void head(int m){ cout<<m<<"月 日 一 二 三 四 五 六 "/*分别隔了一tab*/<<"\n"<<" ";//隔了一空格为了过那个“月”字 for(int i=0;i<=weekday;i++)//这个循环有些拿不准 { cout<<" ";//隔了一个空格 }}void coutmonth(int m){ days=daysofmonth(m); for(int i=1;i<=days;i++) { cout<<'\t'<<i;......void head(int m){ cout<<m<<"月\t日\t一\t二\t三\t四\t五\t六 "/*分别隔了一tab*/<<"\n"<<" ";//隔了一空格为了过那个“月”字 for(int i=0;i<weekday;i++)//这个循环有些拿不准 { cout<<"\t";//隔了一个空格 }}
[解决办法]