一个简单指针程序出错

来源:百度知道 编辑:UC知道 时间:2024/05/23 23:30:43
#include<stdio.h>
void main()
{
int number[10] ;
input(number);
max_min_value(number) ;
output(number) ;
}
input(number)
int number[10];
{int i;
for(i=0;i<9;i++)
scanf("%d,",&number[i]);
scanf("%d",&number[9]);
}
max_min_value(array)
int array[10];
{int *max,*min;
int *p,*array_end;
array_end=array+10;
max=min=array;
for(p=array+1;p<array_end;p++)
if(*p>*max) max=p;

else if (*p<*min) min=p;

*p=array[0];array[0]=*min;*min=*p;
*p=array[9];array[9]=*max;*max=*p;
return;
}
output(array)
int array[10];
{int *p;

for(p=array;p<array+9;p++)
printf("%d,",*p);
printf("%d\n",array[9]);
}
运行结果为:输入10个数 最小的与第一个数对换,最大的与最后一个数对换,其他的没问题,就是运行9,8,7

运行9,8,7,6,5,4,3,2,1,0时
max=array+0, min=array+9
之后按你代码:
先是array[0]和*min交换
再是array[9]和*max交换
其实是两次同样位置的交换——位置0和位置9,又换会来了。