万年历c语言编程

2024-11-15 19:46:43
推荐回答(1个)
回答1:

#include  
using namespacestd;  
  
const intmon_day[2][12]={31,28,31,30,31,30,31,31,30,31,30,31,
31,29,31,30,31,30,31,31,30,31,30,31}; 
int IsLeap(int year) //判断是不是闰年
{  
     if(year%400==0 || (year%4==0 &&year%100!=0)) 
     return 1;  
     else
     return 0;  
}  
  
voidShowCalenDar(int y,int m)  //打印输出y年m月的日历 就和日历一样的

    if(m==0)
    {
        m=12,y=y-1;
    }
    if(m==13)
    {
        m=1,y=y+1;
    }
    int i=0,j=0,t=0,n=0;
     t =y-1;  
     t =(1+t+t/4-t/100+t/400)%7;      //t为当前年份一月一号的星期
  
     n =IsLeap(y);
  
    for(i=1;i     {
      t+=mon_day[n][i-1];
      t %=7;
     }
    if(t==0)
        t = 7;    //计算后的t为当前年份当前月份一号的星期
 
cout<     cout<     cout<<"------------------------------"<     cout<<"  一  二  三  四  五  六  日"<  
     for(j=1;j     cout<<"    ";
  
     for(j=1;j<=mon_day[n][m-1];j++)
     {  
         printf("%4d",j);
        
         t++;  
             if(t==8)
             {  
              cout<              t = 1;  
             } 
     }  
     if(t!=1) 
     cout<  
     cout<<"------------------------------"<     cout<}  
  
int main()  
{  
 int year,month;  
 while(1)
 {  
  cout<<"请输入年份和月份 :";
  cin>>year>>month;
  ShowCalenDar(year,month-1);
  ShowCalenDar(year,month);
  ShowCalenDar(year,month+1);
  
 }  
 return 0;  
}

这是C++的  核心算法都一样的 你自己改改 吧