问题求助
本帖最后由 张世来4610484 于 2020-3-8 00:22 编辑#include <stdio.h>
main ()
{
int a,b,c;
ints,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 -43最后输出的结果为20 0;求高人指点下怎么来的,还有就是
else t=c;这句没有表达式,隐含的是什么判断条件呢 您好按照您的逻辑,请检查大括号和缩进。
下面是我按照你的答案改造的
#include <stdio.h>
main ()
{
int a,b,c;
ints,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);
}
希望对你有所帮助 dlnb526 发表于 2020-3-7 21:07
您好按照您的逻辑,请检查大括号和缩进。
下面是我按照你的答案改造的
不是,我发的那个是书上的题目,我现在看不懂else t=c;这个的判断条件是什么,不是让你给我改 如果你的代码没问题,那么当你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{:10_280:} 叫我miniQ 发表于 2020-3-7 23:50
如果你的代码没问题,那么当你abc分别为2,-4,3时,输出的结果应该是-2,6,0
首先判断c是否大于0,c=3, ...
你都没看懂我在说什么,都没有输人语句,哪来的abc,我说的是最后的输出结果 第二个if语句成立后,后面紧跟的else都不成立,我没记错的话{:10_245:},明天拿电脑验证下 张世来4610484 发表于 2020-3-8 00:03
你都没看懂我在说什么,都没有输人语句,哪来的abc,我说的是最后的输出结果
这样的一段代码,我写的是2 -43最后输出的结果为20 0;求高人指点下怎么来的,
这句话解释一下是什么意思。。。。我一开始看到你的这句话以为你把他三个数改了自己算一遍,毕竟这个代码没有任何意义,对已知数判断条件还不用输入那就直接对着比啊。。
页:
[1]