您的位置:首页 > 其它

一个计算活了多少天的小算法

2012-03-24 12:47 260 查看
这个算法是把出生当作第一天,不算今天。

#include<iostream>
#include<time.h>
#include<windows.h>
using namespace std;
bool leapyear(int y){
	if(y%400==0||(y%100!=0&&y%4==0))
	return 1;
	else
	return 0;
}

void getSystemTime(int &yn,int &mn,int &dn) 
{ 
 time_t timer; 
 time(&timer); 
 tm* t_tm = localtime(&timer); 
 yn=t_tm->tm_year+1900;
 mn=t_tm->tm_mon+1;
 dn=t_tm->tm_mday;
 cout<<"今天是  "<<yn<<"年"<<mn<<"月"<<dn<<"日"<<endl;
} 

int Days(int y,int m,int d ){
	//计算该年月日是该年的第几天
	int cont=0;
	for(int i=1;i<m;i++){
		switch(i){
			case 1:
			case 3:
			case 5:
			case 7:
			case 8:
			case 10:
			case 12:
			  cont+=31;break;
			case 2:
			   cont+=28;break;
			default: 
			    cont+=30;     
		}
	}
	if(leapyear(y)&&m>2)
	cont+=1;
	cont+=d;
	return cont;
} 

int main(){
	int y,m,d;
	int yn,mn,dn;
	int sum=0;	
	cout<<"请输入年月日(例如:1990 01 01):"<<endl; 
	cin>>y>>m>>d;
	getSystemTime(yn,mn,dn);
    if(yn==y){
    	cout<<"error!"<<endl;
    	cout<<"本软件仅能提供 "<<yn<<"年之前的计算!"<<endl;
		exit(0); 
    }
	
	//计算第一年的全部天数和中间的几年 
    for(int i=y;i<yn;i++)
	{
		if(leapyear(i)) sum+=366;
	        else sum+=365;	
	} 
	//删除第一年算多了的
	sum=sum-Days(y,m,d);
	
	
	
	//计算今年的
	sum+=Days(yn,mn,dn);
	//输出	
	cout<<"今天是你人生的第 "<<sum<<" 天!"<<endl;
	cout<<"距离你人生的10000天还有 "<<10000-sum<<" 天"<<endl;  
	system("pause");
	return 0; 
}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: 
相关文章推荐