最早写这个题目的时候,是采用的下面的方法:
一开始处理最特殊的情况,以后再处理更为普遍的情况,会轻松一点。
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 人评分