• UT源码 005


    NextDate函数问题 

    NextDate函数说明一种复杂的关系,即输入变量之间逻辑关系的复杂性

           NextDate函数包含三个变量month、day和year,函数的输出为输入日期后一天的日期。 要求输入变量month、day和year均为整数值,并且满足下列条件:

       条件1  1≤ month ≤12  否则输出,月份超出范围

       条件2  1≤ day ≤31 否则输出,日期超出范围

       条件3  1912≤ year ≤2050  否则输出:年份超出范围

         String  nextdate(int m,int d,int y)

       注意返回值是字符串。

    程序要求:

    1)先显示“请输入日期”

    2)不满足条件1,返回:“月份超出范围”;不满足条件2,返回:“日期超出范围”;不满足条件3,返回:“年份超出范围”;如果出现多个不满足,以最先出现不满足的错误返回信息。

    3)条件均满足,则输出第二天的日期:格式“****年**月**日”(如果输入2050年12月31日,则正常显示2051年1月1日

    源码:

     1 #include <iostream>
     2 #include <sstream>
     3 #include <string>
     4 using namespace std;
     5 
     6 string nextdate(int month,int day,int year)
     7 {
     8     int isleap[]={31,29,31,30,31,30,31,31,30,31,30,31};
     9     int noleap[]={31,28,31,30,31,30,31,31,30,31,30,31};
    10     stringstream m,d,y;
    11     
    12     if (month<1 || month>12)
    13     {
    14         return "月份超出范围";
    15     }
    16     if (day<1 || day>31)
    17     {
    18         return "日期超出范围";
    19     }
    20     if (year<1912 || year>2050)
    21     {
    22         return "年份超出范围";
    23     }
    24 
    25     if ((year%4==0 && year%100!=0) || year%400==0)//闰年
    26     {
    27         if (day<isleap[month-1])
    28         {
    29             d<<day+1;
    30             m<<month;
    31             y<<year;
    32         } 
    33         else if (day==isleap[month-1])//该月的最后一天
    34         {
    35             if (month==12)//一年的最后一天
    36             {
    37                 d<<1;
    38                 m<<1;
    39                 y<<year+1;
    40                 return y.str()+""+m.str()+""+d.str()+"";
    41             }
    42             d<<1;
    43             m<<month+1;
    44             y<<year;
    45         }
    46         else
    47         {
    48             return "日期超出范围";
    49         }
    50         
    51     } 
    52     else//非闰年
    53     {
    54         if (day<noleap[month-1])
    55         {
    56             d<<day+1;
    57             m<<month;
    58             y<<year;
    59         } 
    60         else if (day==noleap[month-1])//该月的最后一天
    61         {
    62             if (month==12)//一年的最后一天
    63             {
    64                 d<<1;
    65                 m<<1;
    66                 y<<year+1;
    67                 return y.str()+""+m.str()+""+d.str()+"";
    68             }
    69             d<<1;
    70             m<<month+1;
    71             y<<year;
    72         }
    73         else
    74         {
    75             return "日期超出范围";
    76         }
    77     }
    78     return y.str()+""+m.str()+""+d.str()+"";
    79     
    80 }
    81 
    82 
    83 int main()
    84 {
    85     while(1)
    86     {
    87         cout<<"请输入日期(格式: 月 日 年):"<<endl;
    88         int month,day,year;
    89         cin>>month>>day>>year;
    90         cout<<nextdate(month,day,year)<<endl;
    91 
    92     }
    93     return 0;
    94 }
  • 相关阅读:
    [Noip2010]乌龟棋
    vijos次小生成树
    hdu3579-Hello Kiki-(扩展欧几里得定理+中国剩余定理)
    hdu1573-X问题-(扩展欧几里得定理+中国剩余定理)
    poj2115-Looooops-(扩展欧几里得定理)
    hdu2669-Romantic-(扩展欧几里得定理)
    poj1061-青蛙的约会-(贝祖定理+扩展欧几里得定理+同余定理)
    hdu1576-A/B-(同余定理+乘法逆元+费马小定理+快速幂)
    hdu4497-GCD and LCM-(欧拉筛+唯一分解定理+组合数)
    hdu3189-Just Do It-(埃氏筛+唯一分解定理)
  • 原文地址:https://www.cnblogs.com/ChenXh123/p/6530437.html
Copyright © 2020-2023  润新知