教你夺冠


私信TA

用户名:835685327

访问量:148612

签 名:

相互交流 相互学习

等  级
排  名 13
经  验 21606
参赛次数 0
文章发表 84
年  龄 0
在职情况 学生
学  校 辣鸡施工大学
专  业

  自我简介:

努力刷题 熟能生巧!

最早写这个题目的时候,是采用的下面的方法:

一开始处理最特殊的情况,以后再处理更为普遍的情况,会轻松一点。

if (year % 400 == 0)
	leap_year = 1;
else if (year % 100 == 0)
	leap_year = 0;
else if (year % 4 == 0)
	leap_year = 1;
else
	leap_year = 0;

根据上面这个方法写出宏函数,参考代码如下所示:

#include <stdio.h>

#define LEAP_YEAR(y)    ( (y % 400) == 0 ) ? ('L') : ( ( (y % 100) == 0 ) ? ('N') : ( (y % 4 == 0) ? ('L') : ('N') ))

int main()
{
    int year;
    scanf("%d", &year);

    char res = LEAP_YEAR(year);
    printf("%c\n", res);

    return 0;
}

注意括号配对的问题!


不过这样的方法看上去有点繁琐,换种写法:

只有当 (1) year%400 == 0 或者 (2) year%100 != 0并且year%4 == 0时,year才是闰年。

#include <stdio.h>

#define LEAP_YEAR(y)    ( (year%400 == 0) || ( (year%100 != 0) && (year%4 == 0) ) ) ? 'L' : 'N'

int main()
{
    int year;
    scanf("%d", &year);

    char res = LEAP_YEAR(year);
    printf("%c\n", res);

    return 0;
}


 

0.0分

0 人评分

看不懂代码?想转换其他语言的代码? 或者想问其他问题? 试试问问AI编程助手,随时响应你的问题:

编程语言转换万能编程问答  

代码解释器

代码纠错

SQL生成与解释

  评论区