对于学习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语言教程欢迎持续关注编程学习网
扫码二维码 获取免费视频学习资料
- 本文固定链接: http://phpxs.com/post/9973/
- 转载请注明:转载必须在正文中标注并保留原文链接
- 扫码: 扫上方二维码获取免费视频资料