public int get_max(int x,int y,int z)
{ int max;
if(x>=y)
{ max=x;}
else
{ max=y;}
if(x>=z)
{ max = z;}
Return max;}
(1)试分析该程序有何逻辑错误。
(2)设计一个测试数据,使执行该测试时会执行到缺陷代码但不会触发错误。
(3)设计一个测试数据,使执行该测试时会执行到缺陷代码并触发错误,但不会引起失败。
(4)设计一个测试数据,使执行该测试时会执行到缺陷代码,触发错误,并引起失败。
建议抄同学的
当x最大时,两个if都会执行,返回不了最大值
判断三个数的最大值的判断条件不充足
(1)x=y=z时
(2)x>y且x>z时
(3)z>x>y时
我们一起来审题: 输入三个数,取其中最大的一个数并返回。
第一个if:首先x和y相比,max赋值为 x或y中最大的数。
第二个if:然后再对比x和z,x大于z就把max赋值为 z
答:(仅供参考)
(1)
错误1:第二个if,不应该是x和z相比,而应该是max和z相比,因为x和y已经计算出了最大数并赋值给了max。不拿max和z相比,出现x是最小数的情况怎么办?
错误2:第二个if,方法体内,不应该将max赋值为z,因为if中z是比较小的数。