如何在不使用数组的情况下使用c程序找到第二大元素

时间:2014-08-25 17:11:11

标签: c

#include<stdio.h>
int main(){
  int a[50],size,i,j=0,big,secondbig;
  printf("Enter the size of the array: ");
  scanf("%d",&size);
  printf("Enter %d elements in to the array: ", size);
  for(i=0;i<size;i++)
      scanf("%d",&a[i]);

  big=a[0];
  for(i=1;i<size;i++){
      if(big<a[i]){
           big=a[i];
           j = i;
      }
  }

  secondbig=a[size-j-1];
  for(i=1;i<size;i++){
      if(secondbig <a[i] && j != i)
          secondbig =a[i];
  }

  printf("Second biggest: %d", secondbig);
  return 0;
}

我用数组写了上面的程序。但我想不使用数组写。

条件被赋予一个整数序列作为输入,以-1结束。即输入整数可以是+ ve,-ve或0.输入中的A -1表示输入的结束。 并且-1不被视为输入的一部分。

1 个答案:

答案 0 :(得分:6)

foreach value v
  if (v > biggest)
    second = biggest
    biggest = v
  else if (v > second)
    second = v

注意:如果有重复的元素,你必须决定该怎么做。 换句话说,假设数字是5,5,3,1。 那么最大的显然是5,但是第二大5,还是3? 您可以相应地决定并修复算法。