C语言作业,找出数组中最大值与第一个交换,最小值和最后一个交换,求改错

如图,正确结果应该是12345678910

#include <stdio.h>

int main()
{
int a[10];
int i, t1 = 0, t2 = 0, min = 0, max = 0;
for(i=0; i<10; i++)
{
scanf("%d",&a[i]);
}
t1 = a[0];
for(i=0; i<10; i++)
{
if(a[i]<t1) 
{
min = i;
t1 = a[i];
}
}
t2 = a[min];
a[min] = a[0];
a[0] = t2;

t1 = a[0];
for(i=0; i<10; i++)
{
if(a[i]>t1) 
{
max = i;
t1 = a[i];
}
}
t2 = a[max];
a[max] = a[9];
a[9] = t2;
for(i=0; i<10; i++)
{
printf("%d ",a[i]);
}
return 0;
}


    你把数组下标和数字搞混了;

    你每次for循环都会将a[0]重新赋值给max(或者min);

温馨提示:答案为网友推荐,仅供参考
第1个回答  2015-11-10
if(a[i]<min)min=i;应该为min=a[i];
if(a[i]>max)max=i;应该为max=a[i];