错误点:
1.申明数组a[10],则元素有 a[0]~a[9],而不是a[1]~a[10],所以需要修改i的范围;
2.单独进行scanf输入时不需要加上后面的空格,否则输入满10个数据不会跳出循环;
3.定义max min的初值,应改为 max=a[0];min=a[9];
4.判断最大最小值时不能遇到大的数就交换,这样会改变整个数组的顺序,应该用一个变量记录下最大小最小值的位置,等循环完毕之后再进行交换。
程序修应如下,测试通过:
#include
void main()
{
int max,min,a[10],i,t,p=0;
for(i=0;i<10;i++)
scanf("%d",&a[i]);
max=a[0];
min=a[9];
for(i=0;i<10;i++)
{
if(max<=a[i])
{
max=a[i];
p=i;
}
}
t=a[0];
a[0]=a[p];
a[p]=t;
p=9;
for(i=2;i<10;i++)
{
if(min>a[i])
{
min=a[i];
p=i;
}
}
t=a[9];
a[9]=a[p];
a[p]=t;
for(i=0;i<=9;i++)
printf("%d ",a[i]);
}