yzx_jerry 2021-12-14 17:31 采纳率: 50%
浏览 25
已结题

各位,请问日期+1有简便方案吗?

问题遇到的现象和发生背景

求日期+1后的新日期

问题相关代码,请勿粘贴截图
#include <iostream>
using namespace std;
int n,b,b1,r,a[12]={31,28,31,30,31,30,31,31,30,31,30,31};
int main()
{
    cin>>n>>b>>r;
    if((n%100!=0&&n%4==0)||(n%400==0))
    {
    a[1]=29;
    }
    b1=a[b-1];
    if(r<b1)
    {
    r++;cout<<n<<"-"<<b<<"-"<<r;
    return 0;
    }
    if(r==b1) 
    {
    if(b<12) 
    {                 
    b++,r=1;cout<<n<<"-"<<b<<"-"<<r; 
             return 0;
    } 
    if(b==12)
    {
    n++,b=1,r=1;cout<<n<<"-"<<b<<"-"<<r;
     return 0;
    }
    }
    if(r>b1)
    {
    cout<<"您输入的不是一个正确的日期";//界面友好
    }
    return 0;                              
}
运行结果及报错内容
我的解答思路和尝试过的方法

数组法,存日期

我想要达到的结果

更简便

  • 写回答

1条回答 默认 最新

  • 关注

    先判断日期是否合法,合法的话,日期+1,然后跟数组a进行比较,如果大于a[b-1],就把b+1,如果b+1大于12,就把n+1
    参考如下:

    #include <iostream>
    using namespace std;
    int n,b,b1,r,a[12]={31,28,31,30,31,30,31,31,30,31,30,31};
    int main()
    {
        cin>>n>>b>>r;
        if((n%100!=0&&n%4==0)||(n%400==0))
        {
            a[1]=29;
        }
        if(b>12 || b<1 || r<1 || r>a[b-1])
            cout << "输入的日期不合法"<<endl;
        else
        {
            r++; //日期加1
            if(r > a[b-1])
            {
                r = 1;
                b++; //月份+1
            }
            if(b>12)
            {
                n++; //年+1
                b = 1;
            }
            cout << n <<"-"<<b<<"-"<<r<<endl;
        }
        return 0;                              
    }
    
    
    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论 编辑记录

报告相同问题?

问题事件

  • 已结题 (查看结题原因) 12月14日
  • 已采纳回答 12月14日
  • 创建了问题 12月14日

悬赏问题

  • ¥15 为什么提交不了?接口测试都是对的
  • ¥15 有可能用平板通过拓展坞来烧录程序吗(keil5的那种)
  • ¥15 网络分析设施点无法识别
  • ¥15 状态图的并发态问题咨询
  • ¥15 PFC3D,plot
  • ¥15 VAE模型编程报错无法解决
  • ¥100 基于SVM的信息粒化时序回归预测,有偿求解!
  • ¥15 物体组批优化问题-数学建模求解答
  • ¥350 麦克风声源定位坐标不准
  • ¥15 apifox与swagger使用