[C语言]输出1000-2000年的闰年
闰年概念:
能被4整除且不能被100整除/能被400整除
直白一点就是说:四年一闰,百年不闰,四百年再闰
一 、方法:
1、一般写法
#include<stdio.h>
int main()
{
int year = 0;
int count = 0;
//for循环找出1000-2000的数字
for (year = 1000; year <= 2000; year++)
{
//判断并记录其中的闰年,四年一闰,百年不闰,四百年再闰(能被400整除)
if (year % 4 == 0&&(year % 100 != 0))//能被4整除且不能被100整除
{
printf("%d ", year);
count++;
}
if (year % 400 == 0)或者能被400整除
{
printf("%d ", year);
count++;
}
}
printf("\ncount = %d\n", count);
return 0;
}
2、 调用函数法
根据调用函数的返回值来判断
#include<stdio.h>
int is_leap_year(int n)
{
if ((n % 4 == 0 && n % 100 != 0) || (n % 400 == 0))
return 1;
else
return 0;
}
int main()
{
int y = 0; int count = 0;
for (y = 1000; y <= 2000; y++)
{
if (is_leap_year(y) == 1)//是闰年返回1,不是返回0
{
printf("%d\n", y);
count++;
}
}
printf("\ncount = %d", count);
return 0;
}
二、 代码优化:
优化1:
使用if语句将两种情况并列起来:if ((情况一)||(情况二))
for循环内部代码修改为:
if (((year % 4 == 0) && (year % 100 != 0)) || (year % 400 == 0))
{
printf("%d\n", year);
count++;
}
优化2(调用函数内部的优化):
调用函数时根据两种情况(为或)逻辑值直接返回
一般返回:
int is_leap_year(int n)
{
if ((n % 4 == 0 && n % 100 != 0) || (n % 400 == 0))
return 1;
else
return 0;
}
优化返回:
int is_leap_year(int n)
{
return ((n % 4 == 0 && n % 100 != 0) || (n % 400 == 0));
}