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 }
  • 相关阅读:
    Prim算法以及Kruskal算法
    PAT甲级考前整理(2019年3月备考)之三,持续更新中.....
    PAT甲级考前整理(2019年3月备考)之一
    PAT甲级考前整理(2019年3月备考)之二,持续更新中.....
    linux下挂载U盘
    opencv2已有的情况下,安装opencv3以及对应的opencv_contrib
    二维数组和二级指针做函数参数的问题
    ubuntu14.04下 python2.7怎么链接到安装在指定文件夹的opencv3
    使用opencv的nonfree模块
    PaddlePaddle开源平台的应用
  • 原文地址:https://www.cnblogs.com/ChenXh123/p/6530437.html
Copyright © 2011-2022 走看看