#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不被视为输入的一部分。
答案 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? 您可以相应地决定并修复算法。