第9周-本月有几天?两种方法
方法一:if-else型#include <iostream>using namespace std;int main(){ int year,month; cout<<"请输入年、月"<<endl;cin>>year>>month;if ( month==1 || month==3 || month==5 || month==7 || month==8 || month==10 || month==12 )//应注意“==”才是“等于”的意思cout<<"本月有31天。"; else if ( month==4 || month==6 || month==9 || month==11 ) cout<<"本月有30天。"; else if ((year%4==0 && year%100!=0)||(year%400==0))//翻译一下:(能被4整除的非整百年份)或(能被400整除的年份) cout<<"本月有29天。"; else cout<<"本月有28天。";return 0;}方法二:switch型#include<iostream>using namespace std; int main() { int year, month; cout << "请输入年、月: "<<endl;cin >> year >> month;switch(month){case 1:case 3:case 5:case 7:case 8:case 10:case 12: cout<<"本月有31天。"; break;case 4:case 6:case 9:case 11:cout<<"本月有30天。";break;case 2:if((year%4==0 && year%100!=0) ||(year%400==0))cout<<"本月有29天。";elsecout<<"本月有28天。";}return 0; }
运行结果:





木有输出,表示不尴尬~
心得体会:
其实这 两种方法大同小异。
注意“==”才是“等于”的意思。
- 3楼KISS_BEN4天前 16:44
- 木有输出可以在if-else型中最后加上一个else分支说明输入出错,在第switch型中加上一个default语句说明输入有误。。。这样感觉用户体验较好
- Re: xvkaixvan4天前 16:48
- 回复KISS_BENn嗯嗯。是的。这个没有想到,以后会注意了。谢谢!
- 2楼xuchao12294天前 14:19
- 直接判断年份是否为闰年就行了,再根据分支结构来算出月份就行了,没那么复杂的啊
- Re: xvkaixvan4天前 14:20
- 回复xuchao1229n哦?貌似先判定年份比这个要麻烦的。
- Re: xuchao12294天前 14:57
- 回复xvkaixvanny%400==0||y%4==0&&y%100!=0
- 1楼zfive55天前 20:16
- 还是有更好的,放到之字典里,这样可以减少Switch
- Re: xvkaixvan5天前 20:38
- 回复zfive5n之字典? 前辈。。 我不懂啊。。
- Re: zfive54天前 13:03
- 2012-10-1 -1 求出日期最大
- Re: zfive54天前 14:18
- Map<int, int> days;n days.insert(pair<int, int>(1, 31));n days.insert(pair<int, int>(2, 28));n days.insert(pair<int, int>(3, 31));n days.insert(pair<int, int>(4, 30));n days.insert(pair<int, int>(5, 31));n days.insert(pair<int, int>(6, 30));n days.insert(pair<int, int>(7, 31));n days.insert(pair<int, int>(8, 31));n days.insert(pair<int, int>(9, 30));n days.insert(pair<int, int>(10, 31));n days.insert(pair<int, int>(11, 30));n days.insert(pair<int, int>(12, 31));