我必须编写一个程序,找到参数列表中五个整数中最小的一个。这是我的代码:
int min5(int a, int b, int c, int d, int e)
{
int answer;
if (a < b && a < c && a < d && a < e)
{
answer = a;
}
else if (b < a && b < c && b < d && b < e)
{
answer = b;
}
else if (c < a && c < b && c < d && c < e)
{
answer = c;
}
else if (d < a && d < b && d < c && d < e)
{
answer = d;
}
else if (e < a && e < b && e < c && e < d)
{
answer = e;
}
return answer;
}
这是我的测试用例:
void min5_tests(void)
{
int a, b, c, d, e, result;
a = 1;
b = 4;
c = 2;
d = 7;
result = min5(a, b, c, d, e);
checkit_int(result, 1);
}
int main()
{
min5_tests();
return 0;
}
当我运行我的测试时,它表示该值应为0而不是我预期的值,1。我认为我的代码是正确的,但我猜不是。 :(我不知道为什么会这样。
答案 0 :(得分:1)
好吧,你没有初始化e
一个开始,所以它将被设置为一个不确定的值,可能为零。
这也是......我们应该说,不是优雅的代码(没有冒犯的意图)来寻找最小值,除了在所有输入值相等时将返回的单位化值(没有{{1语句将是真的)。您可以使用if
而不是<=
来解决这个问题,但它会更具可读性:
<
答案 1 :(得分:1)
你没有给出一个价值。尝试设置e = 10;
答案 2 :(得分:0)
e未初始化,这也是一个相当,错误,不健康的代码。 此外,如果最小值由两个或多个变量共享,则代码可能会出现问题。 尝试初始化一个变量的答案,然后将答案的值与每个其他变量进行比较。换句话说,这里没有其他陈述,因为它必须将答案与所有其他4个变量进行比较,一次一个。