「学点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

记得诚 CSDN认证博客专家 电子爱好者 原创洁癖患者
微信搜索【记得诚电子设计】,第一时间阅读原创干货文章,一位硬件工程师的原创分享,涵盖电路设计、PCB设计、电子元器件、电子电路和硬件科普等内容,涉及无线通信、嵌入式、物联网、GNSS定位和车载等领域。
©️2020 CSDN 皮肤主题: 编程工作室 设计师: CSDN官方博客 返回首页
实付0元
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、C币套餐、付费专栏及课程。

余额充值