您的位置:首页 > 其它

第十八周项目四-1 定义结构体算两人生日相差多少天

2014-12-23 16:40 253 查看
问题及代码

/*
*ALL rights reserved.
*文件名称:shibazhouxiangmu4(2)
*作者:李长鸿
*完成时间:2014.12.23
*问题描述:生日相差多少天
*/
#include <iostream>
using namespace std;
int days(int,int,int);
int change(int,int,int,int);
bool R(int);
void W(int,int,int);
struct Date
{
int year;
int mouth;
int day;
} date1 ,date2,date;
int d[13]= {0,31,28,31,30,31,30,31,31,30,31,30,31};
int main()
{
cout<<"请依次输入两个人的生日:"<<endl;
cin>>date1.year>>date1.mouth>>date1.day;
W(date1.year,date1.mouth,date1.day);
cin>>date2.year>>date2.mouth>>date2.day;
W(date2.year,date2.mouth,date2.day);
int a,b;
if(date1.year>date2.year){date=date2;date2=date1;date1=date;}
a=days(date1.year,date1.mouth,date1.day);
b=days(date2.year,date2.mouth,date2.day);
cout<<"两人生日相差:"<<change(date1.year,date2.year,a,b)<<"天"<<endl;
return 0;
}

int days(int a,int b,int c)
{
int days=0,i;
for(i=1; i<b; i++)
days=days+d[i];
days=days+c;
if(R(a)&&b>2)
days=days+1;
return days;
}

int change(int y1,int y2,int a,int b)
{
int c=0;
if(y1==y2)
{
c=b-a;
if(c<0)
c=-c;
}
else
{
for(y1; y1<y2;y1++)
{
c=c+365;
if(R(y1))
c+=1;
}
c=c+b-a;
}
return c;
}

bool R(int x)
{
if((x%4==0&&x%100!=0)||(x%400==0))
return 1;
else return 0;
}

void W(int y,int m,int t)
{
while(m>12||m<0||t>d[m]||t<0||(m==2&&t>29))
{
cout<<"输入有误,请再次输入正确的日期:"<<endl;
cin>>y>>m>>t;
}
}








总结:感觉好麻烦,又要考虑闰年,输入错误之类的——平年的二月29的情况还未除去——头都大了!好几次写结构体变量的时候都用错了。

思路一清晰的话,还算比较好,可就是容易晕。

对结构体的用法掌握的更多了。比较熟练了
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: