在接触流程控制语句switch case的时候,感觉这个很有意思,就花了点时间去慢慢的去深入了解它,并且和if语句一起嵌套使用,就找了个题目来练练手,
这个就是通过输入年份和月份,来判断年份是否为闰年,并且可以知道你输入的月份有多少天。
#include <iostream>
using namespace std;
void main(){
int year, month, mon;
cout << "请输入年份和月份,并用空格隔开" << endl;
cin >> year >> month;
if (month < 1 || month>12)
{
cout << "你输入的月份不正确!!!" << endl;
}
else {
if ((year % 4 == 0 && year % 100 != 0) || year % 100 == 0)
{
mon = 1;
cout << "你输入的年份是闰年。" << endl;
}
else
{
mon = 2;
cout << "你输入的年份为普通年。" << endl;
}
}
switch (month)
{
case 1:cout << "你输入的一月份共有31天"; break;
case 2:
if (mon==1)
{
cout << "你输入的二月份共有29天";
}
else
{
cout << "你输入的二月份共有28天";
}; break;
case 3:cout << "你输入的三月份共有31天" << endl; break;
case 4:cout << "你输入的四月份共有30天" << endl; break;
case 5:cout << "你输入的五月份共有31天" << endl; break;
case 6:cout << "你输入的六月份共有30天" << endl; break;
case 7:cout << "你输入的七月份共有31天" << endl; break;
case 8:cout << "你输入的八月份共有31天" << endl; break;
case 9:cout << "你输入的九月份共有30天" << endl; break;
case 10:cout << "你输入的十月份共有31天" << endl; break;
case 11:cout << "你输入的十一月份共有30天" << endl; break;
case 12:cout << "你输入的十二月份共有31天" << endl; break;
default:cout << "输入有误!" << endl;
break;
}
}
这个题目虽然说不是很难,可是也费了我不少的心神去弄,其实我并不是很清楚润年和平年是怎么的来的,无奈只有找了下度娘,得知
普通年(不能被100整除的年份)能被4整除的为闰年。(如2004年就是闰年, 1999年不是闰年);
世纪年(能被100整除的年份)能被400整除的是闰年。(如2000年是闰年,1900年不是闰年);
知道恍然大悟,为什么呢,因为闰年和普通年不同的地方在二月份,只要这里能够判断好,那么思路就很清晰了,就慢慢的摸索了出来,只是感觉这个代码太过于多了,应该还是可以进一步优化的。