C++编程,求你自己活了多少天

说明:

用户需要输入自己的出生时间和当前的时间,程序会自动计算您活了多少天了=.=


/*C++编程,求你自己活了多少天*/
#include<iostream> 
using namespace std;
int main(){
	int y1,y2,m1,m2,d1,d2;
	int panduan(int y,int m,int d);//计算天数的函数的声明
	double total=0;
	cout<<"please input your birthday:";//输入你的出生日期
	cin>>y1>>m1>>d1;
	cout<<y1<<"/"<<m1<<"/"<<d1<<endl; 
	cout<<"please input now day date:";//输入现在的日期
	cin>>y2>>m2>>d2;
	cout<<y2<<"/"<<m2<<"/"<<d2<<endl; 
        //计算经过的年的天数
	for(int i=y1;i<y2;i++){
		if((i%4==0&&i%100!=0)||(i%400==0))total+=366;
		else total+=365;   	
	} 
	int duo1,duo2;
       duo1=panduan(y1,m1,d1);
       duo2=panduan(y2,m2,d2);
       total+=duo2-duo1+1;//计算经过的净天数
       cout<<"you have lived for "<<total<<" days"<<endl;
       return 1; 
}
int panduan(int y ,int m,int d){
	int db[2][12]={{31,28,31,30,31,30,31,31,30,31,30,31},{31,29,31,30,31,30,31,31,30,31,30,31}};
	int duo=0,i=0;
        if((y%4==0&&y%100!=0)||(y%400==0))   //闰年的情况 
          {     
              for(i=0;i<m-1;i++)    
               {    
                  duo+=db[1][i];          
                }    
          }else{//平年的情况
           for(i=0;i<m-1;i++)    
            {    
              duo+=db[0][i];    
             }    
           }
          cout<<(duo+=d)<<endl;
	  return duo;    
}

程序效果图:


对程序的一些思考

思考:其实,现在的时间可以不用输入,应该可以通过C++的函数来直接获取现在的日期,这样更加人性化。

找到了优化方法

哈哈,小编我又回来了~

C++获取当前日期的方法

查了下C++获取系统当前日期的方法,有篇文章不错,推荐下:http://blog.csdn.net/zjnig711/article/details/2419081/

我采用的最简单的,使用了windows API的方法,有就是那篇文章中的方法二用来优化该程序。

获取日期的方法示例代码:

#include <windows.h>//获取Windows API
#include<iostream>
using namespace std;
int main( void )
{
SYSTEMTIME sys;
GetLocalTime( &sys );
cout<<sys.wYear<<"年"<<sys.wMonth<<"月"<<sys.wDay<<"日"; 
return 0;
}

优化后的代码:

/*C++编程,求你自己活了多少天,优化版*/
#include<iostream> 
#include<windows.h> 
using namespace std;
int main(){
	int y1,y2,m1,m2,d1,d2;
	int panduan(int y,int m,int d);//计算天数的函数的声明
	double total=0;
	cout<<"please input your birthday:";//输入你的出生日期
	cin>>y1>>m1>>d1;
	cout<<"your birthday: "<<y1<<"/"<<m1<<"/"<<d1<<endl; 
    SYSTEMTIME sys;
    GetLocalTime( &sys );
    y2=sys.wYear;//获得当前的年分 
    m2=sys.wMonth;//获得当前月份 
    d2=sys.wDay;//获得当前的天 
	cout<<"now date: "<<y2<<"/"<<m2<<"/"<<d2<<endl; 
        //计算经过的年的天数
	for(int i=y1;i<y2;i++){
		if((i%4==0&&i%100!=0)||(i%400==0))total+=366;
		else total+=365;   	
	} 
	int duo1,duo2;
       duo1=panduan(y1,m1,d1);
       duo2=panduan(y2,m2,d2);
       total+=duo2-duo1+1;//计算经过的净天数
       cout<<"you have lived for "<<total<<" days"<<endl;
       return 1; 
}
int panduan(int y ,int m,int d){
	int db[2][12]={{31,28,31,30,31,30,31,31,30,31,30,31},{31,29,31,30,31,30,31,31,30,31,30,31}};
	int duo=0,i=0;
        if((y%4==0&&y%100!=0)||(y%400==0))   //闰年的情况 
          {     
              for(i=0;i<m-1;i++)    
               {    
                  duo+=db[1][i];          
                }    
          }else{//平年的情况
           for(i=0;i<m-1;i++)    
            {    
              duo+=db[0][i];    
             }    
           }
          duo+=d;
	  return duo;    
}

优化后的程序只需要输入你的出生日期即可,不再不需要输入现在的日期,更加人性化^_^

程序运行界面:


  • 4
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
YOLO高分设计资源源码,详情请查看资源内容中使用说明 YOLO高分设计资源源码,详情请查看资源内容中使用说明 YOLO高分设计资源源码,详情请查看资源内容中使用说明 YOLO高分设计资源源码,详情请查看资源内容中使用说明YOLO高分设计资源源码,详情请查看资源内容中使用说明YOLO高分设计资源源码,详情请查看资源内容中使用说明YOLO高分设计资源源码,详情请查看资源内容中使用说明YOLO高分设计资源源码,详情请查看资源内容中使用说明YOLO高分设计资源源码,详情请查看资源内容中使用说明YOLO高分设计资源源码,详情请查看资源内容中使用说明YOLO高分设计资源源码,详情请查看资源内容中使用说明YOLO高分设计资源源码,详情请查看资源内容中使用说明YOLO高分设计资源源码,详情请查看资源内容中使用说明YOLO高分设计资源源码,详情请查看资源内容中使用说明YOLO高分设计资源源码,详情请查看资源内容中使用说明YOLO高分设计资源源码,详情请查看资源内容中使用说明YOLO高分设计资源源码,详情请查看资源内容中使用说明YOLO高分设计资源源码,详情请查看资源内容中使用说明YOLO高分设计资源源码,详情请查看资源内容中使用说明YOLO高分设计资源源码,详情请查看资源内容中使用说明YOLO高分设计资源源码,详情请查看资源内容中使用说明YOLO高分设计资源源码,详情请查看资源内容中使用说明YOLO高分设计资源源码,详情请查看资源内容中使用说明YOLO高分设计资源源码,详情请查看资源内容中使用说明YOLO高分设计资源源码,详情请查看资源内容中使用说明YOLO高分设计资源源码,详情请查看资源内容中使用说明

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值