求助!!!!关于计算闰年的 复合关系表达式 && 和 || 的用法???
int main (void)
{
int year, rem_4, rem_100, rem_400;
printf ( "Enter the year to be tested: ");
scanf( "%i ",&year);
rem_4 = year % 4;
rem_100 = year % 100;
rem_400 = year % 400;
if ( rem_4 == 0 && rem_100 != 0 || rem_400 == 0 )
printf ( "It 's a leap year.\n ");
else
printf ( "Nope,it 's not a leap year.\n ");
return 0;
}
上面是求闰年的源程序,其中
( rem_4 == 0 && rem_100 != 0 || rem_400 == 0 )
我就是理解不了! 我认为意思是
当rem_4等于0并且rem_100不等于0时执行下面语句,或者是条件满足rem_400等于0时执行下面语句.也就是当条件满足rem_4 == 0 && rem_100 != 0 或者rem_400 == 0 任意一个条件时,执行下面语句!!
我知道我理解的不对 ,请问不对在那里,您的思路是什么!谢谢 !
[解决办法]
满足下述两个条件之一即可:
1.rem_4 == 0 且 rem_100 != 0
2.rem_400 == 0
[解决办法]
( rem_4 == 0 && rem_100 != 0 || rem_400 == 0 )
==》
分解:
1.rem_4 == 0 且 rem_100 != 0
2.rem_400 == 0
闰年的条件:
年份 能被4整除但是不能被100整除(条件1) 或者 能被400整除(条件2)
[解决办法]
在这种情况下,最后用括号括起来.
&&优先级高于||,故应该是
(( rem_4 == 0 && rem_100 != 0 )|| rem_400 == 0 )
[解决办法]
#include <stdio.h>
void main()
{
int year, rem_4, rem_100, rem_400;
printf ( "Enter the year to be tested: ");
scanf( "%i ",&year);
rem_4 = year % 4;
rem_100 = year % 100;
rem_400 = year % 400;
if ( (rem_4 == 0 && rem_100 != 0 || rem_400 == 0) )
printf ( "It 's a leap year.\n ");
else
printf ( "Nope,it 's not a leap year.\n ");
}
&&优先级要比||高 要加括号