首页 > 解决方案 > 在函数中返回三个 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;
}

标签: cminimum

解决方案


正如评论中提到的其他人一样,您忽略了返回的值,对此的快速解决方法是:

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


推荐阅读