设计一个程序能计算日期的间隔,如输入两个日期分别为2008-2-3和2008-3-9计算相隔多少天,或2008-2-3加上100天后的日期是多少。
本题解题思路,一开始想让两者直接相减,这是没有使用计算机思维导致的结果,如果用计算机思维就是从开始时间到结束时间一天一天加, 只需要写一个加一天的函数就可以。
#include<iostream>
using namespace std;
void addday1(int &y,int &m,int &d){
int month[13]={0,31,28,31,30,31,30,31,31,30,31,30,31};
if(y%4==0&&y%100!=0||y%400==0)//闰年
month[2]++;
if(d==month[m]){
d=1;
if(m==12){
m=1;
y++;
}
else m++;
}
else d++;
}
int main(){
int function;
int count=0;
int y,m,d;
int ys=0,ms=0,ds=0;
int ye=0,me=0,de=0;
while(1){
cout<<"选择功能:输入1 为计算年份差值,输入2 为加多少天,输入其他结束"<<endl;
cin>>function;
if(function==1)
{
cout<<"请输入开始年份:"<<endl;
cin>>ys>>ms>>ds;
cout<<"请输入结束年份:"<<endl;
cin>>ye>>me>>de;
while(ys!=ye||ms!=me||ds!=de){
count++;
addday1(ys,ms,ds);
}
cout<<"两者相差的天数为"<<count<<endl;
count=0;
}
else if(function==2){
int adday;
cout<<"请输入年月日:"<<endl;
cin>>y>>m>>d;
cout<<"请输入要增加的天数:"<<endl;
cin>>adday;
while(adday--){
addday1(y,m,d);
}
cout<<y<<" "<<m<<" "<<d<<endl;
}
else break;
}
}