我是联系了两年半的练习生蔡徐坤 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 Python中的request,如何使用ssr节点,通过代理requests网页。本人在泰国,需要用大陆ip才能玩网页游戏,合法合规。
  • ¥100 为什么这个恒流源电路不能恒流?
  • ¥15 有偿求跨组件数据流路径图
  • ¥15 写一个方法checkPerson,入参实体类Person,出参布尔值
  • ¥15 我想咨询一下路面纹理三维点云数据处理的一些问题,上传的坐标文件里是怎么对无序点进行编号的,以及xy坐标在处理的时候是进行整体模型分片处理的吗
  • ¥15 CSAPPattacklab
  • ¥15 一直显示正在等待HID—ISP
  • ¥15 Python turtle 画图
  • ¥15 stm32开发clion时遇到的编译问题
  • ¥15 lna设计 源简并电感型共源放大器