------<a href="http://www.itheima.com" target="blank">Java培训、Android培训、iOS培训、.Net培训</a>期待与您交流! ------
黑马的C语言基础测试题,有一道是这样的:小明从2006年1月1日开始每2天遇到一个美女,每3天遇到一个帅哥。设计一个程序,输入任意日期,可以判断出小明遇到的是美女还是帅哥。
这道题目思路挺简单的,无非是把日期计算成到06年1月1日的天数,然后对2和3取余。关键问题是怎么计算天数。
想到的方法是分别计算年差值转换过来的天数、月差值转换过来的天数、日差值。
这道题目的整体思路稍后详叙,今天仅谈这个问题里很小的一部分:如何计算某个月有多少天(考虑闰年)。
这个问题需要考虑闰年问题,因为二月份的天数与闰年有关。闰年的判断依据是:若某年能被4整除,但不能被100整除,则这一年是闰年;若某年能被400整除,则这一年也是闰年。请考虑:闰年如何表达?
本题13个分支(比1年12个月共需12个分支多1),编程可使用的多分支结构有哪些?else…if、if…else的嵌套和switch使用哪一个最为简捷?是switch吗?
代码如下:
</pre><pre name="code" class="objc">#include <stdio.h>
int main()
{
int year, month, days;
//输入日期
printf("请输入年:");
scanf("%d",&year);
printf("输入月份:");
scanf("%d", &month);
switch(month)
{
case 1:
case 3:
case 5:
case 7:
case 8:
case 10:
case 12:
days=31;
break; //充分利用switch的“不撞南墙心不死”特性
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("错误月份。");
break;
}
printf("这个月有%d天\n", days);
}
OK就是这样~ 这段代码里有两点需要注意:
1. 闰年判断方法
2. switch用法