c语言求数组的最大值和次大值,下面的代码有什么错误

定义一个有10个元素的整型一维数组a,输入10个无重复数据存于该一维数组,找出其中最大数和次大数,要求不用排序实现,用一个循环实现。
输入格式:
输入10个整数,空格间隔,赋值给数组a,系统保证输入的数据不重复。
输出格式:
输出两行,第一行为最大数,第二行为次大数。
#include<stdio.h>
int main()
{
int a[10],i,max=0,min=0;
for(i=0;i<10;i++)
{
scanf("%d",&a[i]);
if(a[i]>max)
{
min=max;
max=a[i];
}
else if(a[i]>min)
{
min=a[i];
}
}
printf("%d\n",max);
printf("%d\n",min);
return 0;
}

没错啊

代码改了一下,else if(a[i]<min)这一行符号错了,望采纳!


#include<stdio.h>
int main()
{
int a[10],i,max=0,min=0;
for(i=0;i<10;i++)
{
scanf("%d",&a[i]);
if(a[i]>max)
{
min=max;
max=a[i];
}
else if(a[i]<min)
{
min=a[i];
}
}
printf("%d\n",max);
printf("%d\n",min);
return 0;
}

没什么大的问题,把max和min初始化为数组a第一个元素的值可能更适合,因为题目只保证输入是整数,没有保证不是负数(不知道有没有理解对题目意思),所以定义为数组第一个元素可以避免这个问题,修改如下:

#include<stdio.h>
int main()
{
    int a[10],i,max=0,min=0; 
    
    for(i=0;i<10;i++)
    {
        scanf("%d",&a[i]);    
    }
    
    max=min=a[0];
    for(i=0;i<10;i++){
        if(a[i]>max)
        {
            min=max;
            max=a[i];
        }else if(a[i]>min){
            min=a[i];
        }
    }
    
    printf("%d\n",max);
    printf("%d\n",min);
    return 0;
}