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

原创 2012年03月24日 12:47:21

这个算法是把出生当作第一天,不算今天。

#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; 
}


版权声明:本文为博主原创文章,未经博主允许不得转载。

相关文章推荐

WPF程序设计指南中的一个计算你至今活了多少年多少月多少天的例子

WPF程序设计指南中的一个计算你至今活了多少年多少月多少天的例子这个程序是第六章讲Grid布局控件的时候用到了用了一个3行2列的grid来布局界面 这里我主要是跟大家分享下作者的算法 书中源程序如下:...

无聊写了个计算你活了多少天的Java程序

话说前些天在微博上看到一个可以看下你活了多少天的程序,是用新浪微博的API写的应用程序,我好奇地也想看下我到底活了多少天,于是就点进去了。哪知道还要允许它什么更新你的微博啊,把你的结果发布上去等等什么...

程序设计之二:测试你活了多少天(C)

今天看到一个网页,其功能是计算一个人从出生到今天,共有多少天,然而多次尝试,均提示输入格式错误,便萌生了自己用C语言写这个程序的想法。本程序实现的基本思想:采用控制台方式输入生日,并将该数据赋给一个结...

计算自己活了多少岁

public static void timu13(){ Scanner scanner=new Scanner(System.in); System.out.prin...

递归算法时间复杂度的计算方程式一个递归方程:

算法导论上的解递推公式的主函数法 递归算法时间复杂度的计算方程式一个递归方程:     在引入递归树之前可以考虑一个例子:   T(n) = 2T(n/2) + n2   迭代2次可...
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:深度学习:神经网络中的前向传播和反向传播算法推导
举报原因:
原因补充:

(最多只允许输入30个字)