问题描述
- 这万年历的代码错哪了?
-
#include<iostream> using namespace std; #include<iomanip> int daysofmonth[13]={0,31,28,31,30,31,30,31,31,30,31,30,31}; int Isleap_year(int year) { if((year%4==0&&year%100!=0)||year%400==0) return 1; else return 0; } int get_days(int y,int m,int d) { int i,count=d; //公年元年1月1日是星期1 for(i=1;i<y;i++) { if(Isleap_year(i)) count++; } count+=(365*(y-1)); if(Isleap_year(y)) daysofmonth[2]=29; for(i=1;i<m;i++) count+=daysofmonth[i]; return count; } void printf_year() { system("cls");//清屏 int sum,year,month; int a[10],b[10]; cout<<"你想知道哪一年的年历呢?请输入:"; cin>>year; cout<<"======================= The calender of year "<<year<<"========================"<<endl; int i=1; int j; for(i=1;i<=12/3;i++)//每一行显示三个月的月历 { cout<<"----------------------------------------------------------------------------"<<endl; for(int h=1;h<=3;h++) { int m=3*(i-1)+h; cout<<" "<<m<<"月 ";//月份名 } cout<<endl<<"-----------------------------------------------------------------------------"<<endl; for( j=0;j<3;j++) cout<<"日"<<" 一"<<" 二"<<" 三"<<" 四"<<" 五"<<" 六 "<<" "; cout<<endl; for( j=0;j<3;j++) { month=3*(i-1)+j+1; sum=get_days(year,month,1); sum=sum%7; for(int m=0;m<sum;m++) cout<<" "; if(Isleap_year(year)) daysofmonth[2]=29; b[j]=daysofmonth[month]; for(int k=1;k<8-sum;) { cout<<setw(2)<<setfill(' ')<<k<<" "; k++; a[j]=k; } cout<<" "; } cout<<endl; for(int w=1;w<=5;w++) { for(int j=0;j<3;j++) { int m; for(m=1;m<=7;m++,a[j]++) { if(a[j]>b[j]) break; cout<<setw(2)<<setfill(' ')<<a[j]<<" "; } for(int n=1;a[j]>b[j],n<=8-m+1;n++) cout<<" "; if(a[j]>b[j]&&m!=8) cout<<" "; } cout<<endl; } } cout<<"================================================="<<endl; } void main() { printf_year(); system("pause"); }
解决方案
修改:
for(int w=1;w<=5;w++)
{
for(int j=0;j<3;j++)
{
int m;
for(m=1;m<=7;m++,a[j]++)
{
if(a[j]>b[j]) cout<<" ";
else cout<<setw(2)<<setfill(' ')<<a[j]<<" ";
}
cout<<" ";
}
cout<<endl;
}
解决方案二:
程序本身没大问题,就是输出的时候空格计算不对
解决方案三:
仔细看了下,问题不少,参考下这个
http://blog.sina.com.cn/s/blog_7745925a0100w2t1.html
解决方案四:
http://blog.csdn.net/xianfajushi/article/details/44811153
解决方案五:
大帅手把手教你做日历控件——WinForm窗体控件库和日历算法
时间: 2024-08-31 04:23:23