【问题标题】:C functions in finding a max value [closed]寻找最大值的C函数[关闭]
【发布时间】:2016-02-13 13:20:12
【问题描述】:

如何编写一个接受三个整数作为参数并返回最大整数的值的 C 函数。

int largest(int x,int y,int z)
{
    int val1,val2,val3;
    int maximum;

     printf("enter value \n");
     scanf("%d",&val1,&val2,&val3);

     maximum=largest(val1,val2,val3);

      printf("the largest integer is %d = \n",maximum);
     return 0;
    }

int largest(int x,int y,int z)
{
    if(x>=y && x>=z)
         printf("Largest number = %d", x);
    if(y>=x && y>=z)
         printf("Largest number = %d", y);
    if(z>=x && z>=y)
         printf("Largest number = %d", z);                  
    }

我已经尝试过这些代码,但它们不起作用我需要帮助我也是这方面的初学者

【问题讨论】:

  • int largest(int x,int y,int z)请给这个函数一个返回值,如果不确定返回什么,请使用42
  • 最简单的可能是使用/创建一个接受两个整数并返回较大整数的函数,然后调用两次。

标签: c


【解决方案1】:

这应该可以正常工作。

     int val1,val2,val3;
     int maximum;

     printf("enter value \n");
     scanf("%d %d %d",&val1,&val2,&val3);

     maximum=largest(val1,val2,val3);

     printf("the largest integer is %d = \n",maximum);
     return 0;
    }

int largest(int x,int y,int z){
    int max;
    max=x;
    if(y>max){
        max=y;
    }
    if(z>max){
        max=z;
    }
    return max;
}

【讨论】:

    【解决方案2】:

    试试这个:

    #include <stdio.h>
    int largest(int x, int y, int z);
    int main() {
        int val1, val2, val3;
        int maximum;
        printf("enter value \n");
        scanf("%d", &val1, &val2, &val3);
        maximum = largest(val1, val2, val3);
    
        printf("the largest integer is %d = \n", maximum);
        return 0;
    }
    
    int largest(int x, int y, int z){
        if (x >= y && x >= z)
            return x;
        if (y >= x && y >= z)
            return y;
    
        // otherwise
        return z;
    }
    

    问题是您希望该方法返回最大值,但根本没有这样做 - 代码未编译,因为最大的函数被定义为“返回”int,但您的任何地方都没有返回语句功能。

    如果你不知道“返回函数”到底是什么,那么看看这个教程:http://www.cplusplus.com/doc/tutorial/functions/

    【讨论】:

    • 可以简化:if (y &gt;= x &amp;&amp; y &gt;= z) --> if (y &gt;= z)
    【解决方案3】:

    这是做你想做的事的一种很短的方法:

    int largest(int a, int b, int c)
    {
        a = (a > b) ? a : b;
        a = (a > c) ? a : c;
        return a;
    }
    

    【讨论】:

      【解决方案4】:

      要返回一个值,您必须在函数中使用 return 语句。 让我们看看你做了什么,

      #include<stdio.h>
      int largest(int x,int y,int z)/* missed ';' */
      /* missed 'void main()' */ 
      {
       int val1,val2,val3;
       int maximum;
      
        printf("enter value \n");
        scanf("%d",&val1,&val2,&val3); /* missed format specifier for other two values */
      
        maximum=largest(val1,val2,val3);
      
        printf("the largest integer is %d = \n",maximum);
        return 0;
      }
      
      int largest(int x,int y,int z)
      {
       if(x>=y && x>=z)
       printf("Largest number = %d", x);/* written print statement instead of return statement  */
       if(y>=x && y>=z)
       printf("Largest number = %d", y);/* written print statement instead of return statement  */
       if(z>=x && z>=y)
       printf("Largest number = %d", z);/* written print statement instead of return statement  */               
      }
      

      修改后的代码应该是这样的,

      #include<stdio.h>
      int largest(int x,int y,int z);
      int main()
      {
       int val1,val2,val3;
       int maximum;
      
       printf("enter value \n");
       scanf("%d %d %d",&val1,&val2,&val3);
       maximum=largest(val1,val2,val3);
       printf("the largest integer is %d  \n",maximum);
       return 0;
      }
      
      int largest(int x,int y,int z)
      {
       if(x>=y && x>=z)
        return x;
       if(y>=x && y>=z)
        return y;
       if(z>=x && z>=y)
        return z;
      }
      

      【讨论】:

      • 为什么最后一个 if(z&gt;=x &amp;&amp; z&gt;=y) return z; 而不是 return z;
      • 是的,这是一个更好的主意,但理查德可能会感到困惑。
      猜你喜欢
      • 2013-07-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2010-09-13
      • 2021-01-03
      • 2018-02-21
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多