关闭

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

标签: 算法timersystem
1635人阅读 评论(0) 收藏 举报
分类:

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

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


0
0

猜你在找
【直播】机器学习&数据挖掘7周实训--韦玮
【套餐】系统集成项目管理工程师顺利通关--徐朋
【直播】3小时掌握Docker最佳实战-徐西宁
【套餐】机器学习系列套餐(算法+实战)--唐宇迪
【直播】计算机视觉原理及实战--屈教授
【套餐】微信订阅号+服务号Java版 v2.0--翟东平
【直播】机器学习之矩阵--黄博士
【套餐】微信订阅号+服务号Java版 v2.0--翟东平
【直播】机器学习之凸优化--马博士
【套餐】Javascript 设计模式实战--曾亮
查看评论
* 以上用户言论只代表其个人观点,不代表CSDN网站的观点或立场
    个人资料
    • 访问:602445次
    • 积分:8633
    • 等级:
    • 排名:第2203名
    • 原创:255篇
    • 转载:13篇
    • 译文:0篇
    • 评论:133条
    最新评论