秦九域 发表于 2019-10-30 00:27:27

c语言新手,想知道求三个数最大值的代码哪里错了,求大佬指点。

#include <stdio.h>
int main()
{
        int a,b,c,e;
        int max;
          a=3;
          b=4;
      c=5;
if(a>b)
          max=a;
else
          max=b;
if(e>c)
          e=e;
else
          e=c;
printf("max=%d",max);
}

bin554385863 发表于 2019-10-30 00:47:35

本帖最后由 bin554385863 于 2019-10-30 00:57 编辑

{:10_285:}
你应该学过排列组合吧?
你这样两两相比吃力不讨好.
如果用C(m,2)表示从m个数字里面取2个比较大小,那么你要比较的次数C(m, 2) = m! /((m-2)! * 2!),
也就是说你比较的数据越多你要比较的次数越多.........

假设给你20个数据,照你这么个比较法
那得写190个if语句{:10_285:} .

如果比较的数据多的话使用数组排序是一个好选择
#include <stdio.h>
int main(int argc, char const *argv[])
{
      int a = 3, b = 4, c = 5, e = 0;
      e = e > a ? e : a;
      e = e > b ? e : b;
      e = e > c ? e : c;
      printf("MAX_VALUE = %d", e);
      return 0;
}

--------------------------------------------------
E:\Users\86184\Documents\Code>c:\Users\86184\.vscode\extensions\ms-vscode.cpptools-0.26.1\debugAdapters\bin\WindowsDebugLauncher.exe --stdin=Microsoft-MIEngine-In-hqv4nzu4.stq --stdout=Microsoft-MIEngine-Out-ozfilazf.ge4 --stderr=Microsoft-MIEngine-Error-fhgnm0qr.i1k --pid=Microsoft-MIEngine-Pid-tfvxupmf.mht "--dbgExe=E:\My Program\MinGW\bin\gdb.exe" --interpreter=mi
MAX_VALUE = 5
E:\Users\86184\Documents\Code>


jackz007 发表于 2019-10-30 00:59:09

本帖最后由 jackz007 于 2019-10-30 01:00 编辑

#include <stdio.h>
int main()
{
      int a , b , c , max             ;
      a = 3                           ;
      b = 4                           ;
      c = 5                           ;
      if(a > b && a > c) max = a      ;
      else if(b > a && b > c) max = b ;
      else max = c                  ;
      printf("max = %d\n" , max)      ;
}

    数据比较操作,也可以采用三目操作符,能够稍微简化一下:
#include <stdio.h>
int main()
{
      int a , b , c , max             ;
      a = 3                           ;
      b = 4                           ;
      c = 5                           ;
      max = (a > b) ? a : b         ;
      if(max < c) max = c             ;
      printf("max = %d\n" , max)      ;
}

秦九域 发表于 2019-10-30 08:16:04

bin554385863 发表于 2019-10-30 00:47
你应该学过排列组合吧?
你这样两两相比吃力不讨好.
如果用C(m,2)表示从m个数字里面取2个比 ...

会啦会啦,谢谢啊!
我还想问一下最后加个return 0是干嘛的呀。

秦九域 发表于 2019-10-30 08:16:43

jackz007 发表于 2019-10-30 00:59
数据比较操作,也可以采用三目操作符,能够稍微简化一下:

会啦会啦,谢谢呀!

yuweb 发表于 2019-10-30 08:46:59

秦九域 发表于 2019-10-30 08:16
会啦会啦,谢谢啊!
我还想问一下最后加个return 0是干嘛的呀。

int main()的返回值,不然编译器会报警告

秦九域 发表于 2019-11-11 23:39:06

yuweb 发表于 2019-10-30 08:46
int main()的返回值,不然编译器会报警告

好的好的,谢谢啦!
页: [1]
查看完整版本: c语言新手,想知道求三个数最大值的代码哪里错了,求大佬指点。