注册 登录
编程论坛 C++教室

怎样输出某一年的日历啊,我的程序怎么老是错

xiaodong5800 发布于 2010-04-29 17:46, 612 次点击
#include<iostream>
#include<math.h>
#include<iomanip>
using namespace std;
int main()
{
    int i,year,firstday,k,j,number,a;
    char b;
    b=' ';
    cin>>year;
    firstday=(year-2010)%7+5;
    if(firstday<=0)
    {
        firstday=firstday+7;
    }
    if(firstday>7)
        firstday=firstday-7;
    for(i=1;i<=12;i++)
    {
        
        j=1;
        if(i==1||i==3||i==5||i==7||i==8||i==10||i==12)
            number=31;
        else if(i==2)
        {
            if((year%4==0&&year%100!=0)||year%400==0)
            number=29;
            else
            number=28;
        }
        else
            number=30;
        cout<<setw(2)<<i;
        cout<<setw(6)<<"one"
            <<setw(6)<<"two"
            <<setw(6)<<"three"
            <<setw(6)<<"four"
            <<setw(6)<<"five"
            <<setw(6)<<"six"
            <<setw(6)<<"seven"<<endl;;
        
        k=1;
        while(k!=firstday)
        {
            cout<<setw(6)<<b;
            k++;
        }
        while(j<=number)
        {
            for(;k<=7;k++)
            {
                if(j==number+1)
                    break;

                cout<<setw(6)<<j;
                k++;
                j++;
                a=k;
            }
            k=1;
            cout<<endl;
        }
        if(a==8)
            firstday=1;
        else
            firstday=a;
    }
}

            




3 回复
#2
2010-04-29 22:41
为了方便你看懂 我尽量少改了你的程序 希望对你有帮助
#include<iostream>
#include<math.h>
#include<iomanip>
using namespace std;
int main()
{
    int i,year,firstday,k,j,number,l;
    char b;
    b=' ';
    cin>>year;
    int sum=1;
    for(int t=1;t<year;t++)
        if((t%4==0&&t%100!=0)||t%400==0)
            sum=sum+366;
        else sum=sum+365;
    if(sum%7==0) firstday=7;
        else firstday=sum%7;
    for(i=1;i<=12;i++)
    {
        int h=0;
        j=1;
        if(i==1||i==3||i==5||i==7||i==8||i==10||i==12)
            number=31;
        else if(i==2)
        {
            if((year%4==0&&year%100!=0)||year%400==0)
            number=29;
            else
            number=28;
        }
        else
            number=30;
        cout<<setw(2)<<i;
        cout<<setw(6)<<"one"
            <<setw(6)<<"two"
            <<setw(6)<<"three"
            <<setw(6)<<"four"
            <<setw(6)<<"five"
            <<setw(6)<<"six"
            <<setw(6)<<"seven"<<endl;;
        
        k=1;
        while(k!=firstday)
        {
            cout<<setw(6)<<b;
            k++;
        }
        while(j<=number)
        {
            int a=0;
            if(h==0) l=7-firstday+1;
                else l=7;
            for(k=1;k<=l;k++)
            {
                cout<<setw(6)<<j;
                j++;
                a++;
                if(j==number+1)
                    break;
                h++;
            }
            cout<<endl;
            if((a%7+firstday)%7==0)
                firstday=7;
            else firstday=(a%7+firstday)%7;
        }

    }
    return 0;
}
#3
南国利剑2010-05-03 19:46
建议楼上两位,把各个功能独立成块实现,
这样,层次比较清晰。也便于别人看你的代码。
#4
2010-05-03 20:24
新手来报到!
1