タイトルが示すように、配列内で 2 番目に大きい数を見つける必要があり、その配列内のすべての数が等しい場合は、-∞ と書く必要があります。私がこれを書いたのですが、もう少し最適化できるかどうか誰か確認してもらえますか? この配列は単なる例です。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;
}