#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;
}
出生年份的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;
}
您好,我是有问必答小助手,您的问题已经有小伙伴帮您解答,感谢您对有问必答的支持与关注!