鱼C论坛

 找回密码
 立即注册
查看: 963|回复: 6

[已解决]问题求助

[复制链接]
发表于 2020-3-7 20:56:51 | 显示全部楼层 |阅读模式

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

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

x
本帖最后由 张世来4610484 于 2020-3-8 00:22 编辑
#include <stdio.h>
main ()
{
        int a,b,c;
        int  s,w,t;
        s=w=t=0;
        a=-1;b=3;c=3;
        if(c>0) s=a+b;
        if(a<=0)
        {
                if(b>0)
                        if(c<=0)  w=a-b;
        }
        else if(c>0)  w=a-b;
        else t=c;
        printf("%d %d %d\n",s,w,t);
}
这样的一段代码,我写的是2   -4  3最后输出的结果为2  0   0;求高人指点下怎么来的,还有就是
else t=c;这句没有表达式,隐含的是什么判断条件呢
最佳答案
2020-3-7 21:07:30
您好按照您的逻辑,请检查大括号和缩进。
下面是我按照你的答案改造的
#include <stdio.h>
main ()
{
        int a,b,c;
        int  s,w,t;
        s=w=t=0;
        a=-1;b=3;c=3;
        if(c>0) s=a+b;
        if(a<=0)
        {
            if(b>0)
            {
               if(c<=0) w=a-b;
            

                else if(c>0)  w=a-b;
                
            }
            t=c;
        }
        printf("%d %d %d\n",s,w,t);
}

希望对你有所帮助
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

发表于 2020-3-7 21:07:30 | 显示全部楼层    本楼为最佳答案   
您好按照您的逻辑,请检查大括号和缩进。
下面是我按照你的答案改造的
#include <stdio.h>
main ()
{
        int a,b,c;
        int  s,w,t;
        s=w=t=0;
        a=-1;b=3;c=3;
        if(c>0) s=a+b;
        if(a<=0)
        {
            if(b>0)
            {
               if(c<=0) w=a-b;
            

                else if(c>0)  w=a-b;
                
            }
            t=c;
        }
        printf("%d %d %d\n",s,w,t);
}

希望对你有所帮助
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2020-3-7 23:11:48 | 显示全部楼层
dlnb526 发表于 2020-3-7 21:07
您好按照您的逻辑,请检查大括号和缩进。
下面是我按照你的答案改造的

不是,我发的那个是书上的题目,我现在看不懂else t=c;这个的判断条件是什么,不是让你给我改
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2020-3-7 23:50:53 | 显示全部楼层
如果你的代码没问题,那么当你abc分别为2,-4,3时,输出的结果应该是-2,6,0
首先判断c是否大于0,c=3,大于0 执行if里的语句s=a+b=2+(-4)=-2
再判断a是否小于0,a=-2,不小于,不执行第二个if里的条件
同理判断else if 成立,w=a-b=6

if是条件判断语句,只有if的条件成立(表达式的值为真)后,才会执行if部分的代码,否则将会执行else的代码。
如果是if...else if,则满足第一个if执行第一个if里的代码,如果不满足第一个if,而满足第二个if,则执行第二个if(即else if)的代码,如果都不满足,就不执行。
如果后面有else(不带if的else),则只要前面的if和else if都没执行,就执行最后一个else。
但是前面执行了所以最后一个else=t,不执行,所以t=最初始的0
最终输出为-2 6 0
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2020-3-8 00:03:43 | 显示全部楼层
叫我miniQ 发表于 2020-3-7 23:50
如果你的代码没问题,那么当你abc分别为2,-4,3时,输出的结果应该是-2,6,0
首先判断c是否大于0,c=3, ...

你都没看懂我在说什么,都没有输人语句,哪来的abc,我说的是最后的输出结果
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2020-3-8 01:30:44 From FishC Mobile | 显示全部楼层
第二个if语句成立后,后面紧跟的else都不成立,我没记错的话,明天拿电脑验证下
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2020-3-8 04:13:34 From FishC Mobile | 显示全部楼层
张世来4610484 发表于 2020-3-8 00:03
你都没看懂我在说什么,都没有输人语句,哪来的abc,我说的是最后的输出结果


这样的一段代码,我写的是2   -4  3最后输出的结果为2  0   0;求高人指点下怎么来的,



这句话解释一下是什么意思。。。。我一开始看到你的这句话以为你把他三个数改了自己算一遍,毕竟这个代码没有任何意义,对已知数判断条件还不用输入那就直接对着比啊。。
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

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

本版积分规则

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

GMT+8, 2025-1-15 23:27

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

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