如何解决在函数中返回三个 int 中的最小值不返回任何内容
我想像这样返回三个给定数字中的最小值。
我不知道为什么它不返回任何东西
#include <stdio.h>
int minimum3(int un,int deux,int trois)
{
int minimum;
if (un<deux && un <trois)
minimum= un;
else if (deux<trois && deux<un)
minimum= deux;
else if (trois<deux && trois<un )
minimum= trois;
return minimum;
}
int main(void) {
minimum3(4,88,8999);
return 0;
}
解决方法
正如评论中提到的其他人,您忽略返回的值,对此的快速解决方法是:
int main(void) {
int min = minimum3(4,88,8999);
printf("min: %d\n",min);
return 0;
}
尽管如此,您的算法并不是那么有效,正如乔纳森所说,如果您处理的数字中有 2 个相等,则无法计算最小值。最好的办法是,imo,有另一个函数来计算 2 个数字的最小值,然后使用它与第三个数字进行比较。这样更干净。
#include <stdio.h>
int min2(int a,int b)
{
return ((a <= b) ? a : b);
}
int min3(int a,int b,int c)
{
int mintmp = 0;
mintmp = min2(a,b);
return ((mintmp <= min2(mintmp,c)) ? mintmp : min2(mintmp,c));
}
int main(void)
{
printf("%d\n",min2(5,10));
printf("%d\n",min3(5,-1,1));
return 0;
}
您当然可以用更简单的 conditional expressions
替换 if else
。
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。