带参宏定义

来源:百度知道 编辑:UC知道 时间:2024/06/22 15:07:16
给年份 year 定义一个宏,以判别该年份是否闰年。提示:宏名可以定义为 LEAP_YEAR ,形参为 y 。

说明:( 1 )从键盘输入四位数的年份;

( 2 )输出该年份是否是闰年;

测试用例:输入
测试用例:输出

2005< 回车 >
2005 is not a leap year!

2008< 回车 >
2008 is a leap year!

158< 回车 >
Input error!

11159< 回车 >
Input error!

1900< 回车 >
1900 is not a leap year!

#include<stdio.h>
#define LEAP_YEAR(year) (year)%4==0?((year)%100==0?((year)%400==0?1:0):1):0

void main(){
int year;
scanf("%d", &year);
if(year >= 1000 && year <= 9999)
{
if(LEAP_YEAR(year))
{
printf("%d is a leap year!\n", year);
}
else
{
printf("%d is not a leap year!\n", year);
}
}
else
{
printf("Input error!\n");
}
}

#define LEAP_YEAR(y) (((!((y)%4)&&y%100)||!(y%400))?1:0)