定义一个结构体变量(包括年、月、日),要求输入年、月、日,计算输出该日是该年的第几天?
定义一个结构体变量(包括年、月、日),输入两个人的生日,求出他们相差多少天。
/*
* 程序的版权和版本声明部分
* Copyright (c)2013, 烟台大学计算机学院学生
* All rightsreserved.
* 文件名称: date.cpp
* 作 者:
* 完成日期: 年 月 日
* 版本号: v1.0
* 输入描述:年月日
* 问题描述:输出对应的那一天是这一年的第几天
* 输出:第几天
*/
#include <iostream>
using namespace std;
struct Date
{
int year;
int month;
int day;
};
int calculate(Date &a);
int difference(Date &a,Date &b);
int main()
{
int days;
Date date;
date.year=1983;
date.month=11;
date.day=17;
// cout<<"input year,month,day:";
// cin>>date.year>>date.month>>date.day;
days=calculate(date);
cout<<date.month<<"月"<<date.day<<"日是"<<date.year<<"年的第"<<days<<"天."<<endl;
Date date2;
date2.year=1989;
date2.month=3;
date2.day=20;
days=calculate(date2);
cout<<date2.month<<"月"<<date2.day<<"日是"<<date2.year<<"年的第"<<days<<"天."<<endl;
days=difference(date2,date);
cout<< "这两个日期相差:"<<days<<"天。。"<<endl;
return 0;
}
int calculate(Date &a)
{
int num, i;
int sum=0;
if((0==a.year%4&&a.year%100!=0)||0==a.year%400)num=29;
else num=28;
for(i=1;i<a.month;i++)
{
switch(i)
{
case 4:
case 6:
case 9:
case 11:sum+=30;break;
case 2: sum+=num;break;
default : sum+=31;break;
}
}
sum+=a.day;
return sum;
}
int difference(Date &a,Date &b)
{
Date c;
if(a.year>b.year){c=a;a=b;b=c;}
int days1;
int days2;
days1=calculate(a);
days2=calculate(b);
int i;int sum=0;
for( i=a.year+1;i<b.year;i++)
{
if((0==i%4&&i%100!=0)||0==i%400)
sum+=366;
else sum+=365;
}
sum+=days2-days1;
return sum;
}