gpt4 book ai didi

c - 为什么我在测试中得到 '0' 作为返回值?

转载 作者:太空宇宙 更新时间:2023-11-04 08:56:15 25 4
gpt4 key购买 nike

我必须编写一个程序来找到参数列表中五个整数中最小的一个。这是我的代码:

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。我认为我的代码是正确的,但我猜不是。 :( 我不确定这是为什么。

最佳答案

好吧,你还没有初始化e一开始,它会被设置为一个不确定的值,可能为零。

这也相当......我们应该说,寻找最小值的代码不够优雅(无意冒犯),除了如果所有输入值都相等(if 中的任何一个)都将返回的单位化值之外陈述将是真实的)。您可以通过使用 <= 来解决这个问题而不是 <但它会大大提高可读性:

int min5 (int a, int b, int c, int d, int e) {
int answer = a;
if (b < answer) answer = b;
if (c < answer) answer = c;
if (d < answer) answer = d;
if (e < answer) answer = e;
return answer;
}

关于c - 为什么我在测试中得到 '0' 作为返回值?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16827698/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com