我是联系了两年半的练习生蔡徐坤 2022-12-31 11:32 采纳率: 33.3%
浏览 22
已结题

有错的C++代码,谁能帮我看看

这个代码是怎么回事,有错


```c++
#include<iostream>
using namespace std;
int a[13]={0,31,28,31,30,31,30,31,31,30,31,30,31};
int y,m,d;
bool runpinnian(int y){ 
    if(y%4==0&&y%100!=0||y%400==0){ 
        return true; 
    } 
    return false; 
} 
 int main(){
    scanf("%d-%d-%d",&y,&m,&d);
    d+=1;
    if(y%4==0&&y%100!=0||y%400==0){
        a[3]=29;
    }
    else{
        a[3]=28;
    }
    if(a[2]==31||a[4]==31||a[5]==30||a[6]==31||a[7]==30||a[8]==31||a[9]==31||a[10]==30||a[11]==31||a[12]==30||a[13]==31){
        m+=1;
        d=1;
    }
    if(y%4==0&&y%100!=0||y%400==0&&m==2&&d==29){
        d=1;
        m+=1;
    }
    else if(y%4!=0&&y%100!=0||y%400!=0&&m==2&&d==28){
        d=1;
        m+=1;
    }
    cout<<y<<"-"<<m<<"-"<<d;
    return 0;
}

```

  • 写回答

3条回答 默认 最新

  • 浪客 2022-12-31 11:45
    关注

    你这是要实现啥功能?是不是计算输入的日期+1天后的日期
    main里的第二个if看懵了。a的值本身就是赋值好的,不需要判断。

    #include <iostream>
    using namespace std;
    int a[13] = {0, 31, 28, 31, 30, 31, 30, 31, 31, 30, 31, 30, 31};
    int y, m, d;
    
    int runpinnian(int y)
    {
        if (y % 4 == 0 && y % 100 != 0 || y % 400 == 0)
        {
            return 1;
        }
        return 0;
    }
    int main()
    {
        scanf("%d-%d-%d", &y, &m, &d);
        d += 1;
    
        // if (y % 4 == 0 && y % 100 != 0 || y % 400 == 0)
        // {
        //     a[3] = 29;
        // }
        // else
        // {
        //     a[3] = 28;
        // }
        a[2] += runpinnian(y); // 闰年加1// if (a[2] == 31 || a[4] == 31 || a[5] == 30 || a[6] == 31 || a[7] == 30 || a[8] == 31 || a[9] == 31 || a[10] == 30 || a[11] == 31 || a[12] == 30 || a[13] == 31)
        if (d > a[m])//日期超出后月增加
        {
            m += 1;
            d = 1;
         }
        // if (y % 4 == 0 && y % 100 != 0 || y % 400 == 0 && m == 2 && d == 29)
        // {
        //     d = 1;
        //     m += 1;
        // }
        // else if (y % 4 != 0 && y % 100 != 0 || y % 400 != 0 && m == 2 && d == 28)
        // {
        //     d = 1;
        //     m += 1;
        // }
        if(m>12)//月超出后年增加
        {
            m = 1;
            y += 1;
        }
        cout << y << "-" << m << "-" << d;
        return 0;
    }
    
    
    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论 编辑记录
查看更多回答(2条)

报告相同问题?

问题事件

  • 系统已结题 1月12日
  • 已采纳回答 1月4日
  • 创建了问题 12月31日

悬赏问题

  • ¥15 虚幻5 UE美术毛发渲染
  • ¥15 CVRP 图论 物流运输优化
  • ¥15 Tableau online 嵌入ppt失败
  • ¥100 支付宝网页转账系统不识别账号
  • ¥15 基于单片机的靶位控制系统
  • ¥15 真我手机蓝牙传输进度消息被关闭了,怎么打开?(关键词-消息通知)
  • ¥15 装 pytorch 的时候出了好多问题,遇到这种情况怎么处理?
  • ¥20 IOS游览器某宝手机网页版自动立即购买JavaScript脚本
  • ¥15 手机接入宽带网线,如何释放宽带全部速度
  • ¥30 关于#r语言#的问题:如何对R语言中mfgarch包中构建的garch-midas模型进行样本内长期波动率预测和样本外长期波动率预测