在函数中返回三个 int 中的最小值不返回任何内容
Posted
技术标签:
【中文标题】在函数中返回三个 int 中的最小值不返回任何内容【英文标题】:return the minimum of three int's in function doesn't return anything 【发布时间】:2021-05-03 11:28:39 【问题描述】:我想像这样返回三个给定数字中的最小值。
我不知道为什么它没有返回任何东西
#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;
【问题讨论】:
你不使用返回的内容... 它返回一些东西。返回的东西被忽略。 如果两个值相同会怎样?这不是确定最小值的最佳算法。 你为什么认为“它没有返回任何东西”?你是怎么检查的? 【参考方案1】:正如其他人在 cmets 中提到的,您忽略了返回的值,对此的快速解决方法是:
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
。
【讨论】:
以上是关于在函数中返回三个 int 中的最小值不返回任何内容的主要内容,如果未能解决你的问题,请参考以下文章
OrderedDictionary 值不返回列表而是返回对象 [重复]