【技巧】 - 关于计算某个月有多少天 - 黑马程序员

  ------<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用法

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值