代码1如下
运行环境 :VS2013
代码作用:输入三个数然后判断其中最小的一位数然后输出的
#include<stdio.h>
#include<stdlib.h>
int main()
{
int x, y, z, min;
min = 0;
scanf_s("%d %d %d", &x, &y, &z);
if (x < y)
{
min = x;
}
else if (y < x) //这个if不起作用
{
min = y;
}
else if (min > z) //这样写构成了一个级联的if -else if 语句
{
min = z;
}
printf("%d", min);
system("pause");
return 0;
}
代码2如下:
#include<stdio.h>
#include<stdlib.h>
int main()
{
int x, y, z, min;
min = 0;
scanf_s("%d %d %d", &x, &y, &z);
if (x < y)
{
min = x;
}
else (y < x) //删除if后
{
min = y;
}
if (min > z) //删除else后
{
min = z;
}
printf("%d", min);
system("pause");
return 0;
}
附:
这两个程序那个比较好呢?运行的结果都是一样的,不知道1好还是2好。请同胞们给些意见 多谢了!
if (x < y)
{
min = x;
}
else if (y < x) //这个if不起作用
{
min = y;
}
else if (min > z) //这样写构成了一个级联的if -else if 语句
{
min = z;
}
if(x<y)和else if(y<x)几乎是矛盾的。也就是说只有当x==y的时候才会去做最下面的那个min和z的比较。而当做到这个比较的时候,min还是0,
if (x < y)
{
min = x;
}
else (y < x) //删除if后
{
min = y;
}
else后面不能跟条件。这里应该是语法错误,编译不能通过。如果要改的话,可以
else //(y < x) //删除if后
你想问多个if好,还是用一个联级的if,都差不多。
这个从编译的角度看。。。。。
先把程序写对再说
第一个程序x=1 y=2 z=0 结果都不对。
因为后面的分支没执行。
第二段代码根本不能编译。
正确写法:
int min = x;
if (y < min) min = y;
if (z < min) min = z;
当然是第二种代码好的啊
第一个代码,后面的if判断是否发生会受到前面判断结果的影响,第二个代码,把else改成if的话(这个错误编译都通过不了)后,是三个if语句,一定会判断三次。
用哪个好,要根据你的逻辑~
第一个代码,后面的if判断是否发生会受到前面判断结果的影响,第二个代码,把else改成if的话(这个错误编译都通过不了)后,是三个if语句,一定会判断三次。
用哪个好,要根据你的逻辑~
一比较好 具体分析已有人回答
用三目运算符简洁而方便
这两段程序都不太对,可以看一下C语言书,关于if-else 里面讲的很清楚的
这个问题有点高难度,我建议你去问你的老师或者公司里的一些同事比较好
直接用,条件语句解决就ok
max=x>y?(x>z?x:z):(y>z?y:z);
min=x<y?(x<z?x:z):(y<z?y:z);
你这两个代码都不行,漏洞百出,没有一个好的!
你的代码好像有问题,请再检查一下
第一个代码最多判断两次,但第二个代码最多判断3次,第一种好
第一段代码果断不能正常处理XYZ的大小啊,楼主!!!看看知常曰明的答案吧,补补基础。
min = x < y ? x : y;
min = min < z ? min : z;
解决战斗。
第二段代码不能编译。建议改一下再问。
从代码的可读性来看,第一个比较好
结果一样,但是程序有问题。在好好了解if else if的执行顺序把
显然1好,2看似化简了程序,却不便理解