问题描述:
(1)定义一个结构体变量(包括年、月、日),要求输入年、月、日,计算输出该日是该年的第几天。
(2)输入两个人的生日,求出他们相差多少天。
代码:
#include <iostream>
using namespace std;
int mydate(int y,int m,int d) //自定义函数days,其中有三个整型变量。
{
int a=0,b=0; //声明2个变量a,b为整型并都赋予初值为0。
switch (m) //switch语句执行,变量为月份。
{
case 1:
a=0;
break;
case 2:
a=1;
break;
case 3:
a=-1;
break;
case 4:
a=0;
break;
case 5:
a=0;
break;
case 6:
a=1;
break;
case 7:
a=1;
break;
case 8:
a=2;
break;
case 9:
a=3;
break;
case 10:
a=3;
break;
case 11:
a=4;
break;
case 12:
a=4;
break;
}
if (m>2&&((y%4==0&&y%100!=0)||(y%400==0))) //当出现比2月大的月份考虑闰年问题。
b=1;
else b=0;
return (d=(30*(m-1)+d+a+b)); //返回求的天数。
}
struct Date
{
int year;
int month;
int day;
};
int main()
{
Date date1,date2;
int days1,days2,sum,i;
cout<<"输入俩位同学的生日"<<'\n';
cin>>date1.year>>date1.month>>date1.day;
days1=mydate(date1.year,date1.month,date1.day);
cin>>date2.year>>date2.month>>date2.day;
days2=mydate(date2.year,date2.month,date2.day);
sum=days2-days1;
sum=sum>0?sum:-sum;
i=date1.year-date2.year;
i=i>0?i:-i;
sum+=i*365;
if (i>=4)
sum+=i/4;
else for(i=date1.year+1; i<date2.year; i++)
{
if((i%4==0&&i%100!=0)||(i%400==0))
sum++;
}
cout<<"两人生日相差"<<sum<<"天"<<endl;
return 0;
}
运行结果: