/*
* 程序的版权和版本声明部分
* Copyright (c)2012, 烟台大学计算机学院学生
* All rightsreserved.
* 文件名称: fun.cpp
* 作 者:王飞
* 完成日期:2013 年3月 13日
* 版本号: v1.0
* 对任务及求解方法的描述部分:天数与结构体问题
* 输入描述:略
* 问题描述:略
* 程序输出:如下
*/
#include <iostream>
using namespace std;
struct Date //声明结构体Date
{
int year;
int month;
int day;
};
int main()
{
Date date1;
Date date2;
cout<<"请输入第一个年月日:"<<endl;
cin>>date1.year>>date1.month>>date1.day;
if(date1.month>12||date1.month<1)
{
cout<<"输入有误!"<<endl;
}
cout<<"请输入第二个年月日:"<<endl;
cin>>date2.year>>date2.month>>date2.day;
if(date2.month>12||date2.month<1)
{
cout<<"输入有误!"<<endl;
}
int days1=0,days2=0,x=0,y=0,z1=28,z2=28,H; //数据的初始化
if((date1.year%4==0&&date1.year%100!=0)||(date1.year%400==0)) //闰年判断
{
z1=29;
}
if((date2.year%4==0&&date2.year%100!=0)||(date2.year%400==0)) //闰年判断
{
z2=29;
}
switch(date1.month) //对月份进行核对
{
case 1: x=0,z1=0;break;
case 2: x=1,z1=0;break;
case 3: x=1;break;
case 4: x=2;break;
case 5: x=2,y=1;break;
case 6: x=3,y=1;break;
case 7: x=3,y=2;break;
case 8: x=4,y=2;break;
case 9: x=5,y=2;break;
case 10: x=5,y=3;break;
case 11: x=6,y=3;break;
case 12: x=6,y=4;break;
}
days1=31*x+30*y+z1+date1.day; //天数的计算公式
switch(date2.month) //对月份进行核对
{
case 1: x=0,z2=0;break;
case 2: x=1,z2=0;break;
case 3: x=1;break;
case 4: x=2;break;
case 5: x=2,y=1;break;
case 6: x=3,y=1;break;
case 7: x=3,y=2;break;
case 8: x=4,y=2;break;
case 9: x=5,y=2;break;
case 10: x=5,y=3;break;
case 11: x=6,y=3;break;
case 12: x=6,y=4;break;
}
days2=31*x+30*y+z2+date2.day; //计算天数
cout<<endl<<endl;
cout<<date1.month<<"月"<<date1.day<<"日是"<<date1.year<<"年的第"<<days1<<"天"<<endl;
cout<<date2.month<<"月"<<date2.day<<"日是"<<date2.year<<"年的第"<<days2<<"天"<<endl;
if(days1>days2)
{
H=days1-days2;
}
else
{
H=days2-days1;
}
cout<<"两者相差为:"<<H<<"天"<<endl;
return 0;
}
输出结果:
心得体会:
对于一些不常见的程序感觉力不从心,自己学习不到位!