双列的万年历

作者在 2011-03-27 01:24:09 发布以下内容
#include<iostream>
#include<iomanip>
#include<stdlib.h>
#include<conio.h>
using namespace std;
void print()
{
    cout<<"  SUN  MON  TUR  WED  THU  FRI  SAT";
}
inline void print_day(int day)
{
    cout<<setw(5)<<day;
}
inline void print_space()
{
   cout<<"     ";
}
int main()
  {
          system("color 9a");
      while(1)
    {
    string Month[]={"January  ","February ","March    ","April   ","May       ","June    ",
                    "July     ","August   ","September","October ","November","December"};
    int month_day[][13]={{0,31,28,31,30,31,30,31,31,30,31,30,31},
                         {0,31,29,31,30,31,30,31,31,30,31,30,31}};
    int sum,sum_left,sum_right;
    int left_month,right_month;
    int left_space_before,right_space_before;
    int Year,year,month,leap,i,j,k,n,m;
    char key;
    cout<<"please input the year that you want to know:";
    cin>>year;
    cout<<endl;
   for(k=1;k<6;k++)
   print_space();
    cout<<"LET'S SEE THIS YEAR'S CALENDAR"<<endl<<endl;
    cout<<setw(53)<<"/*press any key to start*/"<<endl<<endl;
    getch();
    leap=year%4==0&&year%100!=0||year%400==0;
    sum=(year-1)*365%7;
     for(k=0,Year=1;Year<=year-1;Year++)
       {
          if(Year%4==0&&Year%100!=0||Year%400==0)
           k++;
           if(k%7==0)
           k=0;
       }
          sum+=k;
    sum_left=sum%7;
    for(month=1;month<=12;month+=2)
    {
      print_space();
       cout<<"             "<<setiosflags(ios::right)<<Month[month-1];
        for(k=1;k<6;k++)
         print_space();
        cout<<setiosflags(ios::left)<<Month[month];
       cout <<endl<<"\n";
        print();
       cout<<"    ";
        print();
        cout<<endl;
        for(i=1;i<month;i++)
            sum_left+=month_day[leap][i-1]%7;
        if(month==1)
          {
           sum_left=sum;
           sum_right=(sum_left+31)%7;
          }
        else if(month>1)
           {
           sum_left=sum_right+month_day[leap][month-1];
           sum_right=sum_left+month_day[leap][month]%7;
            }
        left_space_before=(sum_left+1)%7;
        for(n=1;n<=left_space_before;n++)
          {
            print_space();
            if(n==left_space_before)
              break;
           }
        for(n=1;n<=7;n++)
              {
                  print_day(n);
                   if(left_space_before+n==7)
                   break;
              }
                cout<<"    ";
         right_space_before=(sum_right+1)%7;
       for(m=1;m<=right_space_before;m++)
                {
                  print_space();
                   if(m==right_space_before)
                    break;
                }
     for(m=1;m<=7;m++)
        {
            print_day(m);
            if(right_space_before+m==7)
             {
                cout<<endl;
                break;
             }
       }
loop:  for(i=1,n++;n<=month_day[leap][month];n++,i++)
     {
           print_day(n);
         if(i==7)
          {
             cout<<"    ";
             break;
          }
        if(n==month_day[leap][month]&&i<7)
          {
         for(k=1;k<=7-i;k++)
           print_space();
           cout<<"    ";
           break;
          }
     }
     for(j=1,m++;m<=month_day[leap][month+1];m++,j++)
      {
             print_day(m);
      if(j==7)
        {
        if(n<month_day[leap][month])
            cout<<endl;
             goto loop;
             break;
        }
        if(m==month_day[leap][month+1]&&n<month_day[leap][month])
          {
            cout<<endl;
            for(n++;n<=month_day[leap][month];n++)
            print_day(n);
            break;
          }
        if(n==month_day[leap][month]&&m+1<=month_day[leap][month+1])
         {
            for(k=1,m++;m<=month_day[leap][month+1];k++,m++)
             {
              print_day(m);
                 if(j+k==7)
                {
                cout<<endl;
                 break;
                }
             }
                 for(k=1;k<=7;k++)
                    print_space();
                    cout<<"    ";
            for(m++;m<=month_day[leap][month+1];m++)
                {
                    print_day(m);
                    break;
                }
        }
     }
       cout<<endl;
   }
  cout<<endl<<"Do you want to continue? Y/N or y/n\t";
      L : cin>>key;
          if(key!='Y'&&key!='y'&&key!='N'&&key!='n')
             {
              cout<<endl<<"please input Y/No or y/n"<<endl<<endl;
              goto L;
           }
           else if(key=='N'||key=='n')
                {
             cout<<endl<<setw(50)<<"Thank you for your using"<<endl\
                 <<setw(53)<<"**********GOOD BYE!!!**********"<<"\n\n\n\n";
             return 0;
                }
          else if (key=='Y'||key=='y')
              system("cls");
   }
   //.system("PAUSE");
    return 0;
}
 
数学算法类 | 阅读 1042 次
文章评论,共0条
游客请输入验证码