说明:
用户需要输入自己的出生时间和当前的时间,程序会自动计算您活了多少天了=.=
/*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;
}
优化后的程序只需要输入你的出生日期即可,不再不需要输入现在的日期,更加人性化^_^
程序运行界面: