Appleby972 2022-03-23 22:14 采纳率: 60%
浏览 26
已结题

VSC++程序改正,要求一个程序可以输入出生日期到目标日期的天数

#include
using namespace std;
int main()
{
cout << "请输入生日" << endl;
int y = 0;
int m = 0;
int d = 0;
int f = 0;
cin >> y, m, d;
cout << "请输入日期" << endl;
int y1, m1, d1 = 0;
cin >> y1 >> m1 >> d1;
//y,m,d是生日 y1,m1,d1是日期,day是最后输出的天数,a是中间年份天数,b是输入日期当年天数,c是输入生日当年天数,f是输入生日当年天数减去c

int a, b, c = 0;

for ( int y = y + 1; y < y1; y++)
{
    if (y%4==0&& y%100!=0||y%400 ==0)
    {
        a = a + 366;
    }
    else
    {
        a = a + 365;
    }

}

switch (m1)
{
case 12:
    b = 30 + b;
case 11:
    b = 31 + b;
case 10:
    b = 30 + b;
case 9:
    b = 31 + b;
case 8:
    b = 31 + b;
case 7:
    b = 30 + b;
case 6:
    b = 31 + b;
case 5:
    b = 30 + b;
case 4:
    b = 31 + b;
case 3:
    if (y1%4==0&&y1%100!=0||y1 %400 == 0)
    {
        b = 29 + b;
    }
    else
    {
        b = 30 + b;
    }
case 2:
    b = 31 + b;
case 1:
    b = b + d1;
}




switch (m)
{
case 12:
    c = 30 + c;
case 11:
    c = 31 + c;
case 10:
    c = 30 + c;
case 9:
    c = 31 + c;
case 8:
    c = 31 + c;
case 7:
    c = 30 + c;
case 6:
    c = 31 + c;
case 5:
    c = 30 + c;
case 4:
    c = 31 + c;
case 3:
    if (y%4==0&&y%100!=0||y%400==0)
    {
        c = 29 + c;
    }
    else
    {
        c = 28 + c;
    }
case 2:
    c = 31 + c;
case 1:
    c = c + d;
}

if (y%4==0&&y%100!=0||y%400==0)
{
    f = 366 - c;
}
else
{
    f = 365 - c;
}

cout << "二者相差天数为" << a + f + b << endl;

system("pause");

return 0;

}

  • 写回答

2条回答 默认 最新

  • 关注

    出生年份的y在第一个for循环中被更改了,出生年的天数没有算进去。还有一些其他错误,稍后给你代码。
    代码修改如下:

    #include <iostream>
    using namespace std;
    int main()
    {
        int days[13]={0,31,28,31,30,31,30,31,31,30,31,30,31};
        cout << "请输入生日" << endl;
        int y = 0;
        int m = 0;
        int d = 0;
        //int f = 0;
        int i;
        cin >> y>> m>> d;
        cout << "请输入日期" << endl;
        int y1, m1, d1 = 0;
        cin >> y1 >> m1 >> d1;
        //y,m,d是生日 y1,m1,d1是日期,day是最后输出的天数,a是中间年份天数,b是输入日期当年天数,c是输入生日当年天数,f是输入生日当年天数减去c
    
        int a, b, c = 0;
    
        //先计算当年的天数
        if(y < y1)
        {
            a = 0;
            if(y%4==0 && y%100!=0|| y%400==0)
                days[2] = 29;
            else
                days[2] = 28;
            for( i=m+1;i<=12;i++)
                a += days[i];
            a += days[m] - d;
            //然后计算年之间的天数
            b=0;
            for( i=y+1;i<y1;i++)
            {
                if(i%4==0 && i%100!=0|| i%400==0)
                    b += 366;
                else
                    b += 365;
            }
            //计算y1年的天数
            c = 0;
            if(y1%4==0 && y1%100!=0|| y1%400==0)
                days[2] = 29;
            else
                days[2] = 28;
            for( i=1;i<m1;i++)
            {
                c += days[i];
            }
            c += d1;
        }else if (y == y1) //同年
        {
            a = 0;
            b = 0;
            c = 0;
            if(m1 < m)
            {
                cout << "日期比生日早,输入错误";
                return 0;
            }else
            {
                if(m1==m)
                    c = d1 - d;
                else
                {
                    if(y%4==0 && y%100!=0|| y%400==0)
                        days[2] = 29;
                    else
                        days[2] = 28;
                    for( i = m+1;i<m1;i++)
                        b += days[i];
                    b += days[m]- d;
                    c = d1;
                }
            }
        }else
        {
            //y1<y,说明输入错误
            cout <<"日期比生日早,输入错误";
            return 0;
        }
    
    
    
    
    
        cout << "二者相差天数为" << a + b + c << endl;
    
        system("pause");
    
        return 0;
    }
    
    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论 编辑记录
查看更多回答(1条)

报告相同问题?

问题事件

  • 系统已结题 3月31日
  • 已采纳回答 3月23日
  • 修改了问题 3月23日
  • 修改了问题 3月23日
  • 展开全部

悬赏问题

  • ¥15 matlab答疑 关于海上风电的爬坡事件检测
  • ¥88 python部署量化回测异常问题
  • ¥30 酬劳2w元求合作写文章
  • ¥15 在现有系统基础上增加功能
  • ¥15 远程桌面文档内容复制粘贴,格式会变化
  • ¥15 关于#java#的问题:找一份能快速看完mooc视频的代码
  • ¥15 这种微信登录授权 谁可以做啊
  • ¥15 请问我该如何添加自己的数据去运行蚁群算法代码
  • ¥20 用HslCommunication 连接欧姆龙 plc有时会连接失败。报异常为“未知错误”
  • ¥15 网络设备配置与管理这个该怎么弄