您的位置:首页 > 其它

算出某日是这一年的第几天

2011-08-10 15:55 92 查看
/*

算出某日是这一年的第几天.

算法:

1.定义变量,年月日,计算天数

2.输入年月日

3.构造一个年的类。判断是否闰年,算出各月份天数,及当前月份天数

4.返回当前天数

by adengou

2011.08.10

win7平台 dev c++5.0,vs 2010 编译通过

*/

#include <iostream>

using namespace std;

//3.

class count_Date

{

private:

int year,month,day,Feb_day;

int sum_day;//计算天数

bool ly;//判断闰平年

public:

int YN;

count_Date(int y, int m,int d);//构造函数

bool leap_year(void);//判断润平年

int count_year(void);//这一年的天数,与题目问题关系不大,可省

int count_month(void);//计算月份天数

int count_day(void);//计算当前天数

};

count_Date::count_Date(int y, int m,int d):sum_day(0),YN(0)//变量初始化

{

year=y;month=m;day=d;

}

bool count_Date::leap_year(void)

{

if(year%400==0||(year%4==0&&year%100!=0)) /*判断是不是闰年*/

{ly=1;} else{ ly=0; }

return ly;

}

int count_Date::count_year(void)

{

if(ly){return 366;}else{return 365;}

}

int count_Date::count_month(void)

{

int i;

for(i=1;i<month;i++)

{

switch(i)

{

case 1:sum_day+=31;break;

case 2:if(ly){sum_day+=29;}else{sum_day+=28;}break;

case 3:sum_day+=31;break;

case 4:sum_day+=30;break;

case 5:sum_day+=31;break;

case 6:sum_day+=30;break;

case 7:sum_day+=31;break;

case 8:sum_day+=31;break;

case 9:sum_day+=30;break;

case 10:sum_day+=31;break;

case 11:sum_day+=30;break;

case 12:sum_day+=31;break;

default:break;

}

}

if(month<1||month>12){cout<<"日期月份不正确"<<endl;return YN-=1;} else{return sum_day;}

}

int count_Date::count_day(void)

{

if (month==2)

{

if(ly){

if(day>0&&day<30){ return sum_day+=day;;}else{cout<<"日期号数不正确"<<endl;return YN-=1;}

}

if(!ly){

if(day>0&&day<29){ return sum_day+=day;}else{cout<<"日期号数不正确"<<endl;return YN-=1;}

}

}

if(month==1 ||month==3 || month==5 || month==7&& month==8 || month==10 ||month==12)

{

if (day>0&&day<32){ return sum_day+=day;}else{cout<<"日期号数不正确"<<endl;return YN-=1;}

}

if( month==4 ||month==6 || month==9 || month==11)

{

if (day>0&&day<31){ return sum_day+=day;}else{cout<<"日期号数不正确"<<endl;return YN-=1;}

}

}

int main(void)

{

//1.

int i,y,m,d,countDay,countYear;

//2.

cout<<"请输入年,月,日:" ;

cin>>y>>m>>d;

cin.ignore();

//3.

count_Date this_day(y,m,d);

this_day.leap_year();

countYear=this_day.count_year();

countDay=this_day.count_month();

countDay=this_day.count_day();

//4.

cout<<y<<"-"<<m<<"-"<<d<<" 是 ";

switch(countYear)

{

case 365:cout<<"平年 ";break;

case 366:cout<<"润年 ";break;

default:break;

}

if(this_day.YN==0)

{

cout<<" 这天是这一年的第"<<countDay<<"天"<<endl;

}

system("pause");

return 0;

}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: