zoukankan      html  css  js  c++  java
  • 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 }
  • 相关阅读:
    Linux eclipse 编译C++
    poj2774 Long Long Message(后缀数组or后缀自动机)
    ural 1297 Palindrome(Manacher模板题)
    bzoj 2049 Cave 洞穴勘测(LCT)
    codeforces 519E A and B and Lecture Rooms(LCA,倍增)
    hdu3830 (二分+LCA)
    codeforces 337D Book of Evil(dp)
    codeforces 22C System Administrator(构造水题)
    codeforces 144D Missile Silos(最短路)
    codeforces 505B Mr. Kitayuta's Colorful Graph(水题)
  • 原文地址:https://www.cnblogs.com/ChenXh123/p/6530437.html
Copyright © 2011-2022 走看看