#include<stdio.h>
int main()
{
int i,a[10],j,k;
int max,min;
max=min=a[0];
for(i=0;i<=9;i++)
scanf("%d",&a[i]);
for(i=0;i<10;i++)
{
if(a[i]>=max)
{
max=a[i];
j=i;
}
}
printf("最大数为%d,第%d位",max,j+1) ;
for(i=0;i<10;i++)
{
if(a[i]<=min)
{
min=a[i];
j=i;
}
}
printf("最小数为%d,第%d位",min,j+1) ;
}
因为初始化min的位置不对,在获取输入到数组a之前把数组a下标0的值赋给min,min的值为未初始化数组a下标0内存位置的值,而不是实际数组a获取输入后的值,如果这个内存位置的值小于数组a里所有元素的值,就会输出错误的结果,修改如下:
#include<stdio.h>
int main()
{
int i,a[10],j,k;
int max,min;
for(i=0;i<=9;i++)
scanf("%d",&a[i]);
max=min=a[0]; //在数组a获取输入后再进行max和min的初始化
for(i=0;i<10;i++)
{
if(a[i]>=max)
{
max=a[i];
j=i;
}
}
printf("\n最大数为%d,第%d位\n",max,j+1) ;
for(i=0;i<10;i++)
{
if(a[i]<=min)
{
min=a[i];
j=i;
}
}
printf("最小数为%d,第%d位\n",min,j+1) ;
return 0;
}