读书人

如何判断这一天是否是这个月的最后一天

发布时间: 2012-03-22 17:43:57 作者: rapoo

怎么判断这一天是否是这个月的最后一天啊,能给出c++ 代码不??????
怎么判断这一天是否是这个月的最后一天啊,能给出c++ 代码不??????

[解决办法]
简单做个表遍历一遍应该就行了。
[解决办法]
用map<int,int>先把月份,天数对应的信息初始化,然后根据你要查询的条件,月份,用map中的find算法查找,返回一个iterator ,这个iterator 的second包含的就是这个月的最后一天。

[解决办法]
[code=C/C++][/code]
#include"iostream.h"
void main()
{
int month,day;
cout<<"Today is:";
cout<<endl;
cin>>month;
cin>>day;
if(month==1 || month==3 || month==5 || month==7 ||month==8 || month==10 ||month==12)
{
if(day==31)
cout<<"today is the last day!";
}
else
if(month==2)
{
if(day==29)
cout<<"today is the last day!";
}
else
{
if(day==30)
cout<<"today is the last day!";
}
}
[解决办法]
#include<iostream>
using namespace std;
int Is_Leap_Year(int year);//判断该年是否是闰年
int main()
{
int mDay,mMonth,mYear,day;
day = 0;
cout<<"请输入年月日"<<endl;
cin>>mYear>>mMonth>>mDay;
if(Is_Leap_Year(mYear)==1)
{
switch(mMonth)
{
case 1:
case 3:
case 5:
case 7:
case 8:
case 10:
case 12:
day = 31;
break;
case 4:
case 6:
case 9:
case 11:
day = 30;
break;
case 2:
day = 29;
break;
}
}
if(Is_Leap_Year(mYear)==2)
{
switch(mMonth)
{
case 1:
case 3:
case 5:
case 7:
case 8:
case 10:
case 12:
day = 31;
break;
case 4:
case 6:
case 9:
case 11:
day = 30;
break;
case 2:
day = 28;
break;
}
}
if(mDay == day)
{
cout<<"是本月最后一天"<<endl;
}
else
cout<<"不是本月最后一天"<<endl;
return 0;
}
int Is_Leap_Year(int year)
{
//闰年可以被4或者400整除 但是不能被100整除
if(year % 4 ==0 && year % 100 !=0 || year % 400 ==0)
return 1;
else
return 2;
}
[解决办法]
我也来来做习题:

C/C++ code
int IsLastDate(int year,int month,int day)  //也可以bool{   int months[]={31,0,31,30,31,30,31,31,30,31,30,31};    if(year <= 0)         return 0;       if(month < 1|| month > 12)         return 0;       if(year % 4 ==0 && year % 100 !=0 || year % 400 ==0)          months[1]=29;       else           months[1]=28;    if(day==months[month-1])        return 1;    else        return 0;}int main(){   int y=2008;    int m=2;    int d=28;    printf("%d\n",IsLastDate(y,m,d));    return 0;}
[解决办法]
C/C++ code
bool CheckLastDay(int year, int month, int day){    bool bLeapYear;    if(year%100 != 0)    {        bLeapYear = !(bool)(year%4);    }    else    {        bLeapYear = !(bool)(year%400);    }    if(month == 2)    {        if(bLeapYear)        {            return (day==29);        }        else        {            return (day==28);        }    }    else if( ((month <=7) && (bool)(month%2))        || ((month >= 8) && !(bool)(month%2)) )    {        return (day==31);    }    else    {        return (day==30);    }}
------解决方案--------------------


C/C++ code
//用bool更好点吧?bool IsLastDate(int year,int month,int day){   int months[]={31,0,31,30,31,30,31,31,30,31,30,31};    if(year <= 0)         return false;       if(month < 1|| month > 12)         return false;       if(year % 4 ==0 && year % 100 !=0 || year % 400 ==0)          months[1]=29;       else           months[1]=28;    return day == months[month-1];}
[解决办法]
int IsLastDate(int year,int month,int day) //也可以bool
{ int months[]={31,0,31,30,31,30,31,31,30,31,30,31};
if(year <= 0)
return 0;
if(month < 1|| month > 12)
return 0;
if(year % 4 ==0 && year % 100 !=0 || year % 400 ==0)
months[1]=29;
else
months[1]=28;
if(day==months[month-1])
return 1;
else
return 0;
}

int main()
{ int y=2008;
int m=2;
int d=28;
printf("%d\n",IsLastDate(y,m,d));
return 0;
}


其实个人觉得int比较好,以前这种类型都是用bool的,后来进了公司都提倡用int

[解决办法]
[code=C/C++][/code]#include<iostream>
using namespace std;
int IsLastDate(int day,int month,int year)
{
int months[]={31,0,31,30,31,30,31,31,30,31,30,31};
if(year<=1)
return 0;
if(month<1||month>12)
return 0;
if(year % 4 ==0 && year % 100 !=0 || year % 400 ==0)
months[1]=29;
else months[2]=28;
if(day==months[month-1])
cout<<year<<"年"<<month<<"月"<<day<<"日"<<"是"<<month<<"月最后一天!"<<endl;
else if(day<0||day>31)
cout<<"输入错误!";
else
cout<<year<<"年"<<month<<"月"<<day<<"日"<<"不是"<<month<<"月最后一天!"<<endl;


}
int main()
{ int y;
int m;
int d;
cout<<"请输入日期:"<<endl;
cin>>d;
cout<<"请输入月份:"<<endl;
cin>>m;
cout<<"请输入年份:"<<endl;
cin>>y;
IsLastDate(d,m,y);
return 0;
}

读书人网 >C++

热点推荐