In this video tutorial lets learn how to determine user input year is a leap year or not, using Macros and nested ternary / conditional operator.
Related Read:
C Program To Check Leap Year
C Program To Check Leap Year Using Ternary Operator
Using Macro Template In Macro Expansion: C Program
Page Contents
Leap Year Logic
1. If a year is century year(year ending with 00) and is perfectly divisible by 400, then it’s a leap year.
2. If a year is not a century year, and is perfectly divisible by 4, then it’s a leap year.
Video Tutorial: Determine Leap Year or Not using Macros: C Program
[youtube https://www.youtube.com/watch?v=Du7YNk8GGDk]
Source Code: C Program To Determine Leap Year or Not using Macros
#include<stdio.h> #define NOT_LEAP(x) printf("%d is not leap year\n", x) #define LEAP_YEAR(x) printf("%d is leap year\n", x) #define LEAP(x) ( (x % 100 == 0 && x % 400 == 0) ? LEAP_YEAR(x) : \ ( (x % 4 ==0) ? LEAP_YEAR(x) : NOT_LEAP(x)) ) int main() { int year; printf("Enter a year\n"); scanf("%d", &year); LEAP(year); return 0; }
Output 1:
Enter a year
2018
2018 is not leap year
Output 2:
Enter a year
2019
2019 is not leap year
Output 3:
Enter a year
2020
2020 is leap year
Output 4:
Enter a year
2023
2023 is not leap year
Output 5:
Enter a year
2024
2024 is leap year
In above program we’re writing NOT_LEAP(x) macro to display a message that the user input year is not a leap year. LEAP_YEAR(x) macro is used to display message that the user input year is a leap year.
We use both NOT_LEAP(x) and LEAP_YEAR(x) macro names or macro templates inside LEAP(x) macro expansion.
We’re also using macro continuation(\) to break the line and continue writing the logic in next line in macro expansion of LEAP(x).
List of some leap years
2000
2004
2008
2012
2016
2020
2024
2028
2032
2036
2040
2044
2048
For list of all c programming interviews / viva question and answers visit: C Programming Interview / Viva Q&A List
For full C programming language free video tutorial list visit:C Programming: Beginner To Advance To Expert