正如标题所述,我必须在一个数组中找到第二大的数字,如果该数组中的每个数字都相等,则应写为-∞。我写了这个,请问有人能检查一下是否可以更好地进行优化吗? 这个数组只是一个例子,实际应为x[1...n],但由于我必须将它重写为伪代码,因此以此为例。
#include <stdio.h>
int main()
{
int x[7]={90,90,78,41,21,27,35};
int i, max, secmax, y;
secmax=0;
max=x[0];
for(i=1;i<=7;i++)
{
if (x[i]>max)
{
secmax=max;
max=x[i];
}
else if (x[i]>secmax&&x[i]<max)
{
secmax=x[i];
}
}
for(i=0;i<7;i++)
if(x[i]==x[i+1])
y++;
if (y==6)
printf("sec max to minus nieskonczonosc \n");
else
printf("max to %d a secmax to %d\n",max,secmax);
return 0;
}
{ 5, 1, 2, 3, 4 }
—max[1]
会在什么时候被设置为 4? - r3mainer{ 99, 99, 99, 8 }
... 那么这段代码不会将secmax
设为 99 吗?这就是为什么原始代码有&&x[i]<max
子句的原因,这也是我在答案中加入的。 - steveha