• c++日历改进版


    #include<iostream>  
    # include<fstream>  
    #include<time.h>  
    #include<string>  
    #include<iomanip>  
    using namespace std;  
    void bangzhu();  
    void xianzaishijian();  
    void chakanrili();  
    int runnian(int);  
    int tianshu(int,int);  
    void shuru();  
    int shurupanduan(int ,int,int);  
    void shuchu();  
    void shuxiang(int);  
    void shuchushuxiang();  
    void dijitian();  
    void nianli();  
    int main()  //主函数  
    {  
        int a;  
        bangzhu();  
        while(cin>>a)  
        {if(a==0)  
        break; 
    	system("cls");
    	
            switch(a)  
            {//case 0: break;break;  
            case 1: xianzaishijian(),bangzhu();break;  
            case 2: chakanrili();break;  
            case 3: shuchushuxiang();break;  
            case 4: dijitian();break;  
            case 5: nianli();break;  
      
            case 9: bangzhu();break;}  
              
    }  
    return 0;}  
      
    void xianzaishijian()    //输出现在时间以及当前月份日历  
    {   
    time_t t = time(NULL);   
    struct tm   *local = localtime(&t);   
    int year = local -> tm_year + 1900;   
    int month = local -> tm_mon + 1;   
    int day = local -> tm_mday;  
    int hour = local -> tm_hour;   
    int minute = local -> tm_min;   
    int second = local -> tm_sec;   
      
    int d,y,m,l;  
    y=year;  
    m=month;  
    d=day;  
    int z=1;  
    l=shurupanduan(y, m,z);  
     while(l==0)  
     {cin>>y>>m;  
    l=shurupanduan(y,m,z);  
    }  
        int q,s,i,sum=0;  
         for(i=1905;i<y;i++)  
         {sum+=365;  
           s=runnian(i);  
             if(s==1)  
               sum++;}  
         for(i=1;i<m;i++)  
         {s=runnian(y);  
    switch(i)  
    {case 1:q=31;break;  
    case 2:q=28;break;  
    case 3:q=31;break;  
    case 5:q=31;break;  
    case 7:q=31;break;  
    case 8:q=31;break;  
    case 10:q=31;break;  
    case 12:q=31;break;  
    case 4:q=30;break;  
    case 6:q=30;break;  
    case 9:q=30;break;  
    case 11:q=30;break;}  
    sum+=q;  
    }  
         if(s==1&&m>2)  
            sum++;  
    switch(m)  
    {case 1:q=31;break;  
    case 2:q=28;break;  
    case 3:q=31;break;  
    case 5:q=31;break;  
    case 7:q=31;break;  
    case 8:q=31;break;  
    case 10:q=31;break;  
    case 12:q=31;break;  
    case 4:q=30;break;  
    case 6:q=30;break;  
    case 9:q=30;break;  
    case 11:q=30;break;}  
    s=runnian(y);  
    if(s==1&&m==2)  
    q++;  
    int u,w;  
    u=sum%7;  
    w=3*u;  
    sum=sum+d;  
    d--;  
    d=sum%7;  
      
    cout <<"当前时间: "<<endl<<year<<"年"<<month<<"月"<<day<<"日"<<' '<<"星期";   
      
    switch(d)  
    {case 0:cout<<"日";break;  
    case 1:cout<<"一";break;  
    case 2:cout<<"二";break;  
    case 3:cout<<"三";break;  
    case 4:cout<<"四";break;  
    case 5:cout<<"五";break;  
    case 6:cout<<"六";break;  
    }  
    cout<<"  ";  
    shuxiang(year);  
    cout <<endl<<"     "<<hour<<":"<<minute<<":"<<second<<endl<<endl;   
    cout<<" 日 一 二 三 四 五 六"<<endl;  
    for(i=1;i<=w;i++)  
    cout<<' ';  
      for(i=1;i<=q;i++)  
      {if(u==6)  
      {cout<<fixed<<setw(2)<<i<<"              "<<endl;;  
      u=-1;}  
       else cout<<fixed<<setw(2)<<i<<' ';  
      
       u++;}  
       
      
    }   
    void bangzhu()                         //操作指令提示  
    {  cout<<"请输入以下指令"<<endl<<endl;   
          
        cout<<"    1.输出当前时间          " <<endl;  
        cout<<"============================"<<endl;  
        cout<<"    2.查看指定月份日历         "<<endl;  
        cout<<"============================"<<endl;  
        cout<<"    3.查看属相         "<<endl;  
        cout<<"============================"<<endl;  
        cout<<"    4,计算指定日期是一年中的第几天"<<endl;  
        cout<<"============================"<<endl;  
        cout<<"    5,显示输出任何一年的年历,并写入一文本"<<endl;  
        cout<<"============================"<<endl;  
        cout<<"    9.输出指令集"<<endl;  
        cout<<"============================"<<endl;  
        cout<<"    0.结束本程序          "<<endl ;  
        cout<<"============================"<<endl;  
    }  
      
    int shurupanduan(int a,int b,int c=1)   //判断输入年月是否正确  
    {int l=1,q;  
    if(a<=0||b<=0||b>12||c<0)  
    {l=0;  
    cout<<"您的输入有误请重新输入"<<endl;}  
    switch(b)  
    {case 1:q=31;break;  
    case 2:q=28;break;  
    case 3:q=31;break;  
    case 5:q=31;break;  
    case 7:q=31;break;  
    case 8:q=31;break;  
    case 10:q=31;break;  
    case 12:q=31;break;  
    case 4:q=30;break;  
    case 6:q=30;break;  
    case 9:q=30;break;  
    case 11:q=30;break;}  
    if(c>q)  
    {l=0;  
    cout<<"您的输入有误请重新输入"<<endl;}  
      
    return l;}  
      
    int runnian(int a) //判断是是否为闰年  
    {int l=0;  
    if((a%4==0&&a%100!=0)||(a%400==0))  
    l=1;  
    return l;  
    }  
      
    void chakanrili()   //查看指定月份日历  
    {cout<<"请输入年月中间用空格隔开如2013 1"<<endl;  
    int y,m,l;  
    cin>>y>>m;  
    int z=1;  
    l=shurupanduan(y,m,z);  
     while(l==0)  
     {cin>>y>>m;  
    l=shurupanduan(y,m,z);  
    }  
        int q,s,i,sum=0;  
         for(i=1905;i<y;i++)  
         {sum+=365;  
           s=runnian(i);  
             if(s==1)  
               sum++;}  
         for(i=1;i<m;i++)  
         {s=runnian(y);  
    switch(i)  
    {case 1:q=31;break;  
    case 2:q=28;break;  
    case 3:q=31;break;  
    case 5:q=31;break;  
    case 7:q=31;break;  
    case 8:q=31;break;  
    case 10:q=31;break;  
    case 12:q=31;break;  
    case 4:q=30;break;  
    case 6:q=30;break;  
    case 9:q=30;break;  
    case 11:q=30;break;}  
    sum+=q;  
    }  
         if(s==1&&m>2)  
            sum++;  
    switch(m)  
    {case 1:q=31;break;  
    case 2:q=28;break;  
    case 3:q=31;break;  
    case 5:q=31;break;  
    case 7:q=31;break;  
    case 8:q=31;break;  
    case 10:q=31;break;  
    case 12:q=31;break;  
    case 4:q=30;break;  
    case 6:q=30;break;  
    case 9:q=30;break;  
    case 11:q=30;break;}  
    s=runnian(y);  
    if(s==1&&m==2)  
    q++;  
    int u,w;  
    u=sum%7;  
    w=3*u;  
    cout<<" 日 一 二 三 四 五 六"<<endl;  
    for(i=1;i<=w;i++)  
    cout<<' ';  
      for(i=1;i<=q;i++)  
      {if(u==6)  
      {cout<<fixed<<setw(2)<<i<<"              "<<endl;;  
      u=-1;}  
       else cout<<fixed<<setw(2)<<i<<' ';  
      
       u++;}  
    cout<<endl;}  
      
    void shuxiang(int y)//判断属相  
    {int p;  
    p=y%12;  
    switch(p)   
     {case 1:cout<<"鸡年";break;  
     case 2:cout<<"狗年";break;   
     case 3:cout<<"猪年";break;  
     case 4:cout<<"鼠年";break;   
     case 5:cout<<"牛年";break;   
     case 6:cout<<"虎年";break;   
     case 7:cout<<"兔年";break;  
     case 8:cout<<"龙年";break;  
     case 9:cout<<"蛇年";break;  
     case 10:cout<<"马年";break;  
     case 11:cout<<"羊年";break;  
     case 12:cout<<"猴年";break;}  
    }  
    void shuchushuxiang() //输出属相  
    {  
        cout<<"请输入年份"<<endl;  
        int y;  
        cin>>y;  
        shuxiang(y);  
        cout<<endl;  
    }  
    void dijitian()  
    {int y,m,d,sum=0,i,l,s,q;  
    cout<<"请输入年月日"<<endl;  
    cin>>y>>m>>d;  
    l=shurupanduan(y,m,d);  
     while(l==0)  
     {cin>>y>>m;  
    l=shurupanduan(y,m,d);  
    }  
        for(i=1;i<m;i++)  
         {s=runnian(y);  
    switch(i)  
    {case 1:q=31;break;  
    case 2:q=28;break;  
    case 3:q=31;break;  
    case 5:q=31;break;  
    case 7:q=31;break;  
    case 8:q=31;break;  
    case 10:q=31;break;  
    case 12:q=31;break;  
    case 4:q=30;break;  
    case 6:q=30;break;  
    case 9:q=30;break;  
    case 11:q=30;break;}  
    sum+=q;  
    }  
         if(s==1&&m>2)  
            sum++;  
         sum=sum+d;  
         cout<<y<<"年"<<m<<"月"<<d<<"日是这一年中第"<<sum<<"天"<<endl;  
      
    }  
    void nianli()  
    {cout<<"请输入文本名称:";   
    char s[20];  
    cin>>s;   
    ofstream outfile(s,ios::out);  
    cout<<"请输入年份"<<endl;  
    int y,m,l;  
    cin>>y;  
    for(m=1;m<=12;m++)  
    {  
    int z=1;  
    l=shurupanduan(y,m,z);  
     while(l==0)  
     {cin>>y>>m;  
    l=shurupanduan(y,m,z);  
    }  
        int q,s,i,sum=0;  
         for(i=1905;i<y;i++)  
         {sum+=365;  
           s=runnian(i);  
             if(s==1)  
               sum++;}  
         for(i=1;i<m;i++)  
         {s=runnian(y);  
    switch(i)  
    {case 1:q=31;break;  
    case 2:q=28;break;  
    case 3:q=31;break;  
    case 5:q=31;break;  
    case 7:q=31;break;  
    case 8:q=31;break;  
    case 10:q=31;break;  
    case 12:q=31;break;  
    case 4:q=30;break;  
    case 6:q=30;break;  
    case 9:q=30;break;  
    case 11:q=30;break;}  
    sum+=q;  
    }  
         if(s==1&&m>2)  
            sum++;  
    switch(m)  
    {case 1:q=31;break;  
    case 2:q=28;break;  
    case 3:q=31;break;  
    case 5:q=31;break;  
    case 7:q=31;break;  
    case 8:q=31;break;  
    case 10:q=31;break;  
    case 12:q=31;break;  
    case 4:q=30;break;  
    case 6:q=30;break;  
    case 9:q=30;break;  
    case 11:q=30;break;}  
    s=runnian(y);  
    if(s==1&&m==2)  
    q++;  
    int u,w;  
    u=sum%7;  
    w=3*u;  
    outfile<<"   "<<y<<"年"<<m<<"月"<<endl;  
    outfile<<" 日 一 二 三 四 五 六"<<endl;  
    for(i=1;i<=w;i++)  
    outfile<<' ';  
      for(i=1;i<=q;i++)  
      {if(u==6)  
      {outfile<<fixed<<setw(2)<<i<<"              "<<endl;;  
      u=-1;}  
       else outfile<<fixed<<setw(2)<<i<<' ';  
      
       u++;}  
    outfile<<endl;  
    }  
    for(m=1;m<=12;m++)  
    {  
    int z=1;  
    l=shurupanduan(y,m,z);  
     while(l==0)  
     {cin>>y>>m;  
    l=shurupanduan(y,m,z);  
    }  
        int q,s,i,sum=0;  
         for(i=1905;i<y;i++)  
         {sum+=365;  
           s=runnian(i);  
             if(s==1)  
               sum++;}  
         for(i=1;i<m;i++)  
         {s=runnian(y);  
    switch(i)  
    {case 1:q=31;break;  
    case 2:q=28;break;  
    case 3:q=31;break;  
    case 5:q=31;break;  
    case 7:q=31;break;  
    case 8:q=31;break;  
    case 10:q=31;break;  
    case 12:q=31;break;  
    case 4:q=30;break;  
    case 6:q=30;break;  
    case 9:q=30;break;  
    case 11:q=30;break;}  
    sum+=q;  
    }  
         if(s==1&&m>2)  
            sum++;  
    switch(m)  
    {case 1:q=31;break;  
    case 2:q=28;break;  
    case 3:q=31;break;  
    case 5:q=31;break;  
    case 7:q=31;break;  
    case 8:q=31;break;  
    case 10:q=31;break;  
    case 12:q=31;break;  
    case 4:q=30;break;  
    case 6:q=30;break;  
    case 9:q=30;break;  
    case 11:q=30;break;}  
    s=runnian(y);  
    if(s==1&&m==2)  
    q++;  
    int u,w;  
    u=sum%7;  
    w=3*u;  
    cout<<"   "<<y<<"年"<<m<<"月"<<endl;  
    cout<<" 日 一 二 三 四 五 六"<<endl;  
    for(i=1;i<=w;i++)  
    cout<<' ';  
      for(i=1;i<=q;i++)  
      {if(u==6)  
      {cout<<fixed<<setw(2)<<i<<"              "<<endl;;  
      u=-1;}  
       else cout<<fixed<<setw(2)<<i<<' ';  
      
       u++;}  
    cout<<endl;  
    }  
    }  

  • 相关阅读:
    6月29日训练 题解
    python笔记
    零样本和少样本学习
    基于图的 Affinity Propagation 聚类计算公式详解和代码示例
    pandas.read_csv() 处理 CSV 文件的 6 个有用参数
    100+数据科学面试问题和答案总结 基础知识和数据分析
    基于趋势和季节性的时间序列预测
    Github Copilot 值得购买吗?使用GitHub Copilot进行快速EDA的示例
    ArgMiner:一个用于对论点挖掘数据集进行处理、增强、训练和推理的 PyTorch 的包
    一个简单但是能上分的特征标准化方法
  • 原文地址:https://www.cnblogs.com/oversea201405/p/3767040.html
Copyright © 2020-2023  润新知