c++的switch-case语句里面为什么不能使用if-else命令??

这是个输入年月份,输出这个月份有多少天的程序:
#include <iostream>
int main()
{
using namespace std;
int a,b;
cout<<"请输入年份、月份:";
cin>>a>>b;
system("cls");
switch(b)
{
case 1:
case 3:
case 5:
case 7:
case 8:
case 10:
case 12:
cout<<"31天\n";
break;
case 2:
if (((a/4==0)&&(a/100!=0))||(a/400==0))
cout<<"29天\n";
else
cout<<"28天\n";
break;
case 4:
case 6:
case 9:
case 11:
cout<<"30天\n";
default:
cout<<"输入有误";
}
system("pause");
return 0;
}
但为什么我输入2000年 2月输出的却是28天???
2000年2月是闰年呀!
我一直怀疑switch语句里面的case 2:语句段有问题,请问是什么问题呀??
望各位大虾指点哈~~

if (((a/4==0)&&(a/100!=0))||(a/400==0))

改为

if (((a%4==0)&&(a%100!=0))||(a%400==0))

这里应该用%计算余数,而不能用/计算整倍数。
温馨提示:内容为网友见解,仅供参考
第1个回答  2010-07-19
if((a%400==0)||(a%4==0&&a%100!=0))
第2个回答  2010-07-19
用花括号括起来试试呢?
相似回答