dengjiaxi 发表于 2020-11-2 00:12:10

结果不对,不知道哪里的逻辑有错

#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:17:03

本帖最后由 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 01:05:17

本帖最后由 风过无痕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:40:58

本帖最后由 jackz007 于 2020-11-2 01:45 编辑

风过无痕1989 发表于 2020-11-2 01:05
闰年的条件是:
1、能被4整除,同时还要保证不能被100整除,比如:2016年,能被4整除,不能被100整除,还 ...

      难道传染?又一个喜欢和 leap 较劲的{:5_109:}

dengjiaxi 发表于 2020-11-2 08:34:26

风过无痕1989 发表于 2020-11-2 01:05
闰年的条件是:
1、能被4整除,同时还要保证不能被100整除,比如:2016年,能被4整除,不能被100整除,还 ...

很简洁,谢谢老哥,我的条件语句太多了看的我都蒙了

dengjiaxi 发表于 2020-11-2 08:42:55

jackz007 发表于 2020-11-2 00:17
楼主的判断怎么总是在和 leap 较劲,难道不应该根据 year 的值来进行判断?

对对对,兄弟点醒了我,我才看到

风过无痕1989 发表于 2020-11-2 08:54:08

jackz007 发表于 2020-11-2 01:40
难道传染?又一个喜欢和 leap 较劲的

不是与 leap 较劲,是他的程序本身就用了。一般情况下,我帮他修改错误,不会去修改他程序的变量,除非他的程序真的是无可救药

dengjiaxi 发表于 2020-11-2 09:16:46

风过无痕1989 发表于 2020-11-2 08:54
不是与 leap 较劲,是他的程序本身就用了。一般情况下,我帮他修改错误,不会去修改他程序的变量,除非他 ...

确实我的程序无药可救了,打的时候应该是我的脑子出问题了

风过无痕1989 发表于 2020-11-2 09:18:57

dengjiaxi 发表于 2020-11-2 08:34
很简洁,谢谢老哥,我的条件语句太多了看的我都蒙了

刚看到,忘记加行号了,我修改加上。另程序你看明白了,我就将两句全成一句了

乐乐学编程 发表于 2020-11-2 23:38:53

真的会传染吗?
页: [1]
查看完整版本: 结果不对,不知道哪里的逻辑有错