学习循环语句遇到的问题,例如在判断xx年是否为闰年时,为什么会出现判断不上的问题?
如下图:2000按道理可以被4整除也可以被100整除 因此只能进入else if中判断,且2000是能够被400所整除的。但是在屏幕中却没有打印出闰年。
原来是因为if和else if两者出现时是只能选一条路走,程序进入到if就不会走else if,因此 改进方式就是将else去掉。如下图:
这个时候输入2000会发现问题解决了。
当然还有更简洁的代码。如下:
#include<stdio.h>
int main()
{
int year = 0;
scanf("%d", &year);
if (((year % 4 == 0) && (year % 100 != 0)) || (year % 400 == 0))
printf("闰年\n");
return 0;
}
总结:(1)多个if在时是同心协力,相当于条条大路通罗马,除非都不满足。
(2)if和else if在时就相当于分岔路,要么走左边,要么走右边。