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

#include 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不被视为输入的一部分。

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

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