从键盘输入年号和月号,求这一年的这一月共有多少天。
分析:
① 这个问题需要考虑闰年问题,因为二月份的天数与闰年有关。闰年的判断依据是:若某年能被4整除,但不能被100整除,则这一年是闰年;若某年能被400整除,则这一年也是闰年。请考虑:闰年如何表达?
② 本题13个分支(比1年12个月共需12个分支多1),编程可使用的多分支结构有哪些?else…if、if…else的嵌套和switch使用哪一个最为简捷?是switch吗?
程序如下:
- #include "stdio.h"
- main( )
- {
- int year, month, days;
- printf("Input year and month: ");
- scanf("%d%d",&year,&month);
- switch(month)
- {
- case 1:
- case 3:
- case 5:
- case 7:
- case 8:
- case 10:
- case 12: days=31; break;
- case 4:
- case 6:
- case 9:
- case 11: days=30; break;
- case 2:
- if(year%4==0 && year%100!=0 || year%400==0) days=29;
- else days=28;
- break;
- default: printf("Data error! "); break;
- }
- printf("Days=%d",days);
- }
第一次运行结果为:
Input year and month:2000 2↙
Days=29
第二次运行结果为:
Input year and month:2007 2↙
Days=28
第三次运行结果为:
Input year and month:2008 9↙
Days=30
请思考:本题用来判断闰年的表达式是year%4==0 && year%100!=0 || year%400==0,用来判断非闰年的表达式是什么?