结果不对,不知道哪里的逻辑有错
#include <stdio.h>void main()
{
int year,leap;
printf("please input year:");
scanf("%d",&year);
if(leap%4==0)
{
if (leap%100==0)
{
if (leap%400==0)
leap = 1;
else
leap = 0;
}
else
leap = 1;
}
else
leap = 0;
if (leap)
{
printf("%d is leap",year);
}
else
{
printf("%d is not leap",year);
}
}
这是小甲鱼的作业我试着自己按照自己的逻辑打了一遍,编译没有出错但是结果一直显示是闰年,1999都是闰年我就知道出问题了 本帖最后由 jackz007 于 2020-11-2 00:23 编辑
楼主的判断怎么总是在和 leap 较劲,难道不应该根据 year 的值来进行判断?
#include <stdio.h>
main(void)
{
int year ;
printf("please input a year : ") ;
scanf("%d" , & year) ;
if (! (year % 4) && (year % 100) || ! (year % 400)) printf("%d is a leap year.\n" , year) ;
else printf("%d is not a leap year.\n" , year) ;
} 本帖最后由 风过无痕1989 于 2020-11-2 09:21 编辑
闰年的条件是:
1、能被4整除,同时还要保证不能被100整除,比如:2016年,能被4整除,不能被100整除,还有今年,2020年也是闰年;1900年不是闰年;用一句话来概括就是:四年一闰,百年不闰
2、单独的能被400整除,比如:2000年,它就是闰年,这里也是一句话:四百年再闰
根据你的程序,修改如下:(其实2个判断条件可以合在同一个条件语句之中的)
#include <stdio.h>
void main()
{
int year, leap;
printf("please input year:");
scanf("%d", &year);
if (year % 4 == 0 && year % 100 != 0 || year % 400 == 0)
{
leap = 1;
}
else
{
leap = 0;
}
if (leap)
{
printf("%d is leap", year);
}
else
{
printf("%d is not leap", year);
}
}
本帖最后由 jackz007 于 2020-11-2 01:45 编辑
风过无痕1989 发表于 2020-11-2 01:05
闰年的条件是:
1、能被4整除,同时还要保证不能被100整除,比如:2016年,能被4整除,不能被100整除,还 ...
难道传染?又一个喜欢和 leap 较劲的{:5_109:} 风过无痕1989 发表于 2020-11-2 01:05
闰年的条件是:
1、能被4整除,同时还要保证不能被100整除,比如:2016年,能被4整除,不能被100整除,还 ...
很简洁,谢谢老哥,我的条件语句太多了看的我都蒙了 jackz007 发表于 2020-11-2 00:17
楼主的判断怎么总是在和 leap 较劲,难道不应该根据 year 的值来进行判断?
对对对,兄弟点醒了我,我才看到 jackz007 发表于 2020-11-2 01:40
难道传染?又一个喜欢和 leap 较劲的
不是与 leap 较劲,是他的程序本身就用了。一般情况下,我帮他修改错误,不会去修改他程序的变量,除非他的程序真的是无可救药 风过无痕1989 发表于 2020-11-2 08:54
不是与 leap 较劲,是他的程序本身就用了。一般情况下,我帮他修改错误,不会去修改他程序的变量,除非他 ...
确实我的程序无药可救了,打的时候应该是我的脑子出问题了 dengjiaxi 发表于 2020-11-2 08:34
很简洁,谢谢老哥,我的条件语句太多了看的我都蒙了
刚看到,忘记加行号了,我修改加上。另程序你看明白了,我就将两句全成一句了 真的会传染吗?
页:
[1]