这个C语程序的if语句,我不太明白

来源:百度知道 编辑:UC知道 时间:2024/05/12 11:13:56
这是一个判断润年的程序。
我对这里面的IF语句的执行过程不太明白!谁能给我讲讲?
main()
{
int year,leap;
scanf("%d",&year);
if(year%4==0)
{if(year%100==0)
{if(year%400==0)
leap=1;
else leap=0;}
else
leap=1;}
else
leap=0;
if(leap)
printf("%d is ",year);
else
printf("%d is not ",year);
printf("a leap year.\n");
}
if(leap)
从第5行的if语句这里我就不太明白了,为什么if(year%100==0)的后面不用写leap=0呢?
if(leap)这个地方为什么也没有给leap值呢?那怎么判断呀?》

if(year%100==0)的意思是year的值除以100的余数是否是0,是的话继续执行
{if(year%400==0),
否的话就执行
else
leap=1;}

if(leap)这里leap的值由前面的语句执行得出,可能是0,也可能是1,如果leap=1,则if(leap)为真,继续执行
printf("%d is ",year);
如果leap=0,则if(leap)为假,程序则执行
else
printf("%d is not ",year);

C语言里面
if(条件)
{
条件真执行的语句;
}
else
{
条件为假执行的语句;
}

你按照格式写上花括号,还不知道是怎么回事吗?

第2个问题
c语言中,变量值为0则为假,非0为真,if(leap)只要根据变量leap是否为0,就判断执行什么语句。

判定公历闰年遵循的一般规律为: 四年一闰,百年不闰,四百年再闰.
if(year%100==0)的前提是if(year%4==0),如果if(year%100==0)不成立则表示不是世纪年,普通年能被4整除的为闰年。if(leap)中的leap值在前面的代码中已经给了1或0.

我先说说这个程序的算法 要判断year是不是闰年
要判断year是不是闰年有2种方法
第一种方法 year要能被4整除,不能被100整除 是闰年
第二种方法 year能被400整除 是闰年

这里的第一个if if(year%4==0)
判断能不能被4整除 能被整除的继续判断
不能整除 leap=0 year不是闰年

第2个if if(year%100==0)
判断能不能被100整除 能被整除的继续判断<