c语言帮我看为什么运行的结果会这样

来源:百度知道 编辑:UC知道 时间:2024/06/22 00:47:18
#include<stdio.h>
main()
{int year,leap;
for(year=1600;year<=2100;year++)
{
if(year/4!=0)
leap=0;
else if(year/100!=0)
leap=1;
else if(year/400!=0)
leap=0;
else
leap=1;
if(leap)
printf("%d是闰年\n",year);
else
printf("%d不是闰年\n",year);

}

}
2楼和3楼回答没有错把/改成%就可以了 但是为什么只输出1802到2100 没有输出关于1600到1801年份的信息麻烦高手指点一下

取余数要用%,而不是/。后者是除法运算符1600到2100除以4都不等于0,因此leap全为零。
把/该为%就好了

那是因为行数太多显示不开,所以只显示后面的..... understand?

首先你要懂闰年的定义,闰年有2种情况:(1)能被4整除,但不能被100整除,如2008.(2)能被4整除,又能被400整除,如2000.
程序中的这步2个条件都不符合:if(year/4!=0)
leap=0;
程序中的这步有个前提year/4=0,符合(1):else if(year/100!=0)
leap=1;
下面2不应该懂了吧!
还有这步的意思if(leap)等同于 if(leap=1)!
c语言的初学者可能会感到很难理解,多看多想并多尝试编写程序就很容易了!

// Note:Your choice is C++ IDE
#include <stdio.h>
#include "iostream.h"

main()
{int year,leap;
for(year=1600;year<=2100;year++)
{
if(year%4!=0)
leap=0;
else if(year%100!=0)
leap=1;
else if(year%400!=0)
leap=0;
else
leap=1;
if(leap)
printf("%d是闰年\n",year);
else
printf("%d不是闰年\n",year);

}
}