读书人

一晚上也没看出来的if嵌套异常

发布时间: 2012-03-05 11:54:02 作者: rapoo

一晚上也没看出来的if嵌套错误
int CheckDate(struct data *today)
{
if((today-> month > 12) || (today-> month < 1))
{
cout < < "月份输入错误请重来! " < < "\n ";
return 0;
}
else
{
if(today-> month ==2)
{
if (IsLoopYear(today) ==1)
{
if((today-> day > 29) || (today-> day < 1))
{
cout < < "日期输入错误请重来! " < < "\n ";
return 0;
}
else
{
if((today-> day > 28) ||(today-> day < 1))
{
cout < < "日期输入错误请重来! " < < "\n ";
return 0;
}
else return 1;
}
}
else
{

if((today-> month == 1) || (today-> month == 3) ||(today-> month == 5)||(today-> month == 7)||(today-> month == 8)||(today-> month == 10)||(today-> month == 12))
{if((today-> day > 31) ||(today-> day < 1))
{
cout < < "日期输入错误请重来! " < < "\n ";
return 0;
}
else return 1;
}
else
{

if((today-> month == 4) || (today-> month == 6) ||(today-> month == 9)||(today-> month == 11))


if((today-> day > 30) ||(today-> day < 1))
{
cout < < "日期输入错误请重来! " < < "\n ";
return 0;
}
else return 1;
}
}
}
}
}

[解决办法]
int CheckDate(struct data *today)
{
//daysPerMonth[0]: 表示润年二月的天数
//daysPerMonth[i]: 表示第i月的天数(i> =1 && i <=12)
static int daysPerMonth[] =
{29, 31, 28, 31, 30, 31,30, 31, 31, 30, 31, 30, 31};

if (today-> month> 12 || (today-> month <1) {
cout < < "月份输入错误请重来! " < < "\n ";
return 0;
}

if (today-> day <1) {
cout < < "日期输入错误请重来! " < < "\n ";
return 0;
}

int pseudoMonth = today-> month;
if (IsLoopYear(today)==1 && pseudoMonth == 2) pseudoMonth = 0;


if ( (today-> day) > daysPerMonth[pseudoMonth]) {
cout < < "日期输入错误请重来! " < < "\n ";
return 0;
}

return 1;
}

读书人网 >C++

热点推荐