【学点C语言系列】02 判断年份是否为闰年

写在前面:【学点C语言系列】是新开的专栏,博主电子信息工程专业毕业后,从事了4年硬件工程师,最近一次接触C语言还是4年前的毕设,想重新系统的学习一下C语言,从最基本的Hello World开始。

上一篇:

【学点C语言系列】01 求阿姆斯特朗数


1. 问题描述

判断一个年份是否是闰年?输入年份,输出判断结果:是或者否。

2. 解题思路

润年有两种,一种是普通润年,另一种是世纪闰年。

  • 普通闰年:年份能被4整除但不能被100整除,如2008为普通闰年。
  • 世纪闰年:能被400整除的为世纪闰年,如2000为世纪闰年。

可以将两个判断放在1个if语句中,成立则返回YESelse返回NO

if (y % 4 == 0 && y % 100 != 0 || y % 400 == 0)

3. 代码实现

#define _CRT_SECURE_NO_WARNINGS 10
/*
文件名:rnpd.c
作者:记得诚
问题:闰年判断
*/
#include <stdio.h>
int main()
{
	int y;
	printf("请输人年份:");
	scanf("%d", &y);  //键盘输入赋值到y
	if (y % 4 == 0 && y % 100 != 0 || y % 400 == 0)  //y被4整除且不能被100整除或者y被400整除
		printf("YES");
	else
		printf("NO");
	printf("\n");     //换行
	return 0;
}

编译,键盘输入2012,返回YES,是闰年;

请输人年份:2012
YES
请按任意键继续. . .

编译,键盘输入2013,返回NO,不是闰年;

请输人年份:2013
NO
请按任意键继续. . .

4. 延伸一下

打印出1900~2000之间的全部闰年数?

#define _CRT_SECURE_NO_WARNINGS 10
/*
文件名:rndy.c
作者:记得诚
问题:闰年打印
*/
#include <stdio.h>
int main()
{
	int y;
	y = 1900;
	while (y <= 2000)
	{
		if (y % 4 == 0 && y % 100 != 0 || y % 400 == 0)
		{
			printf("%d(yes) ",y);
			y++;
		}
		else
			y++;
	} 
	printf("\n");     //换行
	return 0;
}

编译,打印出1900~2000之间闰年的年份如下:

1904(yes) 1908(yes) 1912(yes) 1916(yes) 1920(yes) 1924(yes) 1928(yes) 1932(yes) 1936(yes) 
1940(yes) 1944(yes) 1948(yes) 1952(yes) 1956(yes) 1960(yes) 1964(yes) 1968(yes) 1972(yes) 
1976(yes) 1980(yes) 1984(yes) 1988(yes) 1992(yes) 1996(yes) 2000(yes)
请按任意键继续. . .

永远相信美好的事情即将发生!作者记得诚,写于安徽合肥,时间2020-04-04 PM17:12

发布了80 篇原创文章 · 获赞 1303 · 访问量 16万+

猜你喜欢

转载自blog.csdn.net/Albert992/article/details/105309698
今日推荐