原题链接:[编程入门]宏定义之闰年判断
最早写这个题目的时候,是采用的下面的方法:
一开始处理最特殊的情况,以后再处理更为普遍的情况,会轻松一点。
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 人评分
C语言网提供由在职研发工程师或ACM蓝桥杯竞赛优秀选手录制的视频教程,并配有习题和答疑,点击了解:
一点编程也不会写的:零基础C语言学练课程
解决困扰你多年的C语言疑难杂症特性的C语言进阶课程
从零到写出一个爬虫的Python编程课程
只会语法写不出代码?手把手带你写100个编程真题的编程百练课程
信息学奥赛或C++选手的 必学C++课程
蓝桥杯ACM、信息学奥赛的必学课程:算法竞赛课入门课程
手把手讲解近五年真题的蓝桥杯辅导课程
发表评论 取消回复