说明:
用户需要输入自己的出生时间和当前的时间,程序会自动计算您活了多少天了=.=
/*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; }
优化后的程序只需要输入你的出生日期即可,不再不需要输入现在的日期,更加人性化^_^
程序运行界面:
原文链接: https://www.cnblogs.com/zhezh/archive/2013/06/07/3773445.html
欢迎关注
微信关注下方公众号,第一时间获取干货硬货;公众号内回复【pdf】免费获取数百本计算机经典书籍
原创文章受到原创版权保护。转载请注明出处:https://www.ccppcoding.com/archives/91521
非原创文章文中已经注明原地址,如有侵权,联系删除
关注公众号【高性能架构探索】,第一时间获取最新文章
转载文章受原作者版权保护。转载请注明原作者出处!