鱼C论坛

 找回密码
 立即注册
查看: 1712|回复: 9

[已解决]结果不对,不知道哪里的逻辑有错

[复制链接]
发表于 2020-11-2 00:12:10 | 显示全部楼层 |阅读模式

马上注册,结交更多好友,享用更多功能^_^

您需要 登录 才可以下载或查看,没有账号?立即注册

x
#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都是闰年我就知道出问题了
最佳答案
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);
        }
}
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

发表于 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)                                            ;
}
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 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);
        }
}
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 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 较劲的
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2020-11-2 08:34:26 | 显示全部楼层
风过无痕1989 发表于 2020-11-2 01:05
闰年的条件是:
1、能被4整除,同时还要保证不能被100整除,比如:2016年,能被4整除,不能被100整除,还 ...

很简洁,谢谢老哥,我的条件语句太多了看的我都蒙了
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

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

对对对,兄弟点醒了我,我才看到
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2020-11-2 08:54:08 | 显示全部楼层
jackz007 发表于 2020-11-2 01:40
难道传染?又一个喜欢和 leap 较劲的

不是与 leap 较劲,是他的程序本身就用了。一般情况下,我帮他修改错误,不会去修改他程序的变量,除非他的程序真的是无可救药
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

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

确实我的程序无药可救了,打的时候应该是我的脑子出问题了
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2020-11-2 09:18:57 | 显示全部楼层
dengjiaxi 发表于 2020-11-2 08:34
很简洁,谢谢老哥,我的条件语句太多了看的我都蒙了

刚看到,忘记加行号了,我修改加上。另程序你看明白了,我就将两句全成一句了
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2020-11-2 23:38:53 | 显示全部楼层
真的会传染吗?
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

小黑屋|手机版|Archiver|鱼C工作室 ( 粤ICP备18085999号-1 | 粤公网安备 44051102000585号)

GMT+8, 2025-1-10 21:14

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

快速回复 返回顶部 返回列表