0

如何在一组整数(cat1、cat2、cat3、cat4)中搜索最大数字这样做的方法,而不是为每个可能的解决方案制作一个 IF 语句?如果数字的数量更大?(例如 10 !!!!)谢谢。这是我的代码

if (cat1 > cat2 && cat1> cat3 && cat1>cat4)
    printf("cat 1 is the biggest", cat1);  


if (cat2 > cat1 && cat2> cat3 && cat2>cat4)
    printf("cat 2 is the biggest", cat2) ;  


if (cat3 > cat1 && cat3> cat2 && cat3>cat4)
    printf("cat 3 is the biggest", cat3) ;  


if (cat4 > cat1 && cat4> cat2 && cat4>cat3)
    printf("cat 4 is the biggest", cat4);  
4

4 回答 4

3

使用数组非常简单:

int data[10] = // ... your ints;
int max = data[0];
for (int i = 1 ; i < 10 ; i++ ) 
    if (data[i] > max ) max = data[i];
于 2012-10-08T20:11:40.083 回答
1

只需使用一个数组。这是一个查找任意大小数组的最大数的示例。

int main(){
  int size,i,biggest;
  int *a = NULL;      

  printf("\nEnter the size of the array: ");
  scanf("%d",&size);

  a = malloc(size * sizeof(int));
  printf("\nEnter %d elements in to the array: ”, size);
  for(i=0; i<size; i++)
      scanf("%d",&a[i]);

  // assume the first number is the biggest
  biggest=a[0];

  // iterate on the array and update the biggest number if the current value is bigger than 'biggest'
  for(i=1; i<size; i++){
      if( biggest < a[i])
           biggest=a[i];
  }
  printf("\nYour biggest number is: %d",biggest);

  free(a)
  return 0;
}
于 2012-10-08T20:11:35.840 回答
1

此函数接受一个数组及其大小作为输入。

int biggest(int *nn,int n) {
    int rv = *nn;
    for(++nn,--n;n;--n,++nn) if(rv<*nn) rv = *nn;
    return rv;
}
于 2012-10-08T20:13:04.267 回答
0
int MAX(int a, int b) {
     return a > b ? a : b;
}

// later on...

return MAX(cat1, MAX(cat2, MAX(cat3, cat4)));
于 2012-10-08T20:12:43.090 回答