2008年北理复试上机题计算年月日间隔

设计一个程序能计算日期的间隔,如输入两个日期分别为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;
	}
}
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值