定义一个有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;
}