编程学习网 > 编程语言 > C/C++开发 > 如何用c语言编程求解闰年
2022
08-27

如何用c语言编程求解闰年

对于学习C语言的小伙伴来说,用C语言编程求解闰年是比较基础且必须要掌握的内容,这包含了运算符、表达式和逻辑结构知识,通过具体的实例可以让学习者更能熟练的掌握知识。接下来就给大家分享一下如何用c语言编程求解闰年

我们要判断闰年有两种情况:

一种是能被400整除

另一种能被4整除但不能被100整除的数

进行分段测试如下:

四年一闰:(y%4==0)

百年不闰:(y%100!=0)

四百年再闰:(y%400==0) 

综合起来判断闰年的表达式可得:(y%400==0) || (y%100!=0)&&(y%4==0) 

这是最常见的且效率低下的算法之一,因为它总是先执行400年和100年的测试,在连续400年的判断中(y%400 == 0)为假的概率是99.75%,(y%100!=0)为真的概率是99%,因此继续判断(y%4==0)是否为真,也就是C程序几乎要进行全部3个条件的判断。


 我们重新排序算法,尝试提高程序执行的效率,先来执行第4年测试:   (y%4==0)&&(y%100!=0) || (y%400==0)

由逻辑运算的短路特性,大约75%的时间会执行 (y%4==0)为假和(y%400 == 0)的判断;而(y%4==0)为真时,(y%100!=0)为真的概率时24/25;因此不会执行400年测试;3个条件都需要执行的概率是1%左右。

可见C程序99%的情况下只要进行2个条件的判断即可确定是否为闰年的判断结果,因此执行效率变高。
1)(y%400==0) || (y%100!=0)&&(y%4==0)2)(y%4==0)&&(y%100!=0) || (y%400==0)3)(y%100!=0)&&(y%4==0) || (y%400==0)
以上3种表达式都是正确的,但执行效率却不一样。
【测试实例】
设计C语言程序,判断所输入的年份是否是闰年,2月多少天。

#include <stdio.h>
int main()

{

    int y;

    printf("请输入年份:\n");

    scanf("%d",&y);

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

        printf("%d年是闰年,该2月份有29天\n",y);

    else

        printf("%d年是平年,该2月份有28天\n",y);

    printf("\n");	

}
以上就是“如何用c语言编程求解闰年”的详细内容,想要了解更多C语言教程欢迎持续关注编程学习网

扫码二维码 获取免费视频学习资料

Python编程学习

查 看2022高级编程视频教程免费获取