Appleby972 2022-03-23 14: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;
    }
    

    展开全部

    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论 编辑记录

    运行结果如下:

    img


    如有帮助,望采纳,谢谢。

    img

    回复
    Appleby972 回复 技术专家团-小桥流水 2022-03-23 15:24

    请问printf是啥

    回复
    Appleby972 回复 技术专家团-小桥流水 2022-03-23 15:25

    day[2]=29又是什么

    回复
    展开全部4条评论
查看更多回答(1条)
编辑
预览

报告相同问题?

问题事件

  • 系统已结题 3月30日
  • 已采纳回答 3月23日
  • 修改了问题 3月23日
  • 修改了问题 3月23日
  • 展开全部
手机看
程序员都在用的中文IT技术交流社区

程序员都在用的中文IT技术交流社区

专业的中文 IT 技术社区,与千万技术人共成长

专业的中文 IT 技术社区,与千万技术人共成长

关注【CSDN】视频号,行业资讯、技术分享精彩不断,直播好礼送不停!

关注【CSDN】视频号,行业资讯、技术分享精彩不断,直播好礼送不停!

客服 返回
顶部