C语言用指针调换数组元素

要求:输入10个数字。将最小的数放到第一个位置,最大的放到最后一个位置,其他的数字顺序不变。例如:输入的数字是:3 2 4 1 5 7 6。
输出:1 3 2 4 5 6 7。
咋编?我指针不太懂。大家帮帮忙~
不对呀~~~~
例如输入:2 1 3 5 4 10 6 8 7 9
输出:1 2 3 5 4 6 8 7 9 10
上面的例子我没输入10个数字抱歉 - -

第1个回答  2009-05-19
#include "stdio.h"
#define N 100
main()
{
int i,j,a[N],*p,t,count=1;
printf("the length of the munbers:\n");
scanf("%d",&i);
printf("put the %d munbers:\n",i);

for(p=a;p<a+i;p++)
{
printf("number %d : ",count++);
scanf("%d",p);
}
for(j=0;j<i-1;j++)
for(p=a;p<a+i-j-1;p++)
if(*p>*(p+1))
{t=*p;
*p=*(p+1);
*(p+1)=t;
}
printf("排序后:\n");
for(p=a;p<a+i;p++)
printf("%d ",*p);
printf("\n");
}
第2个回答  2009-05-19
看看是不是这个:

#include <stdio.h>

void swap(int *x, int *y)
{
int p = *y;
*y = *x;
*x = p;
}

void main()
{
int a[10],i;
int max,min,max_i = 0,min_i = 0;

scanf("%d",&a[0]);
max = min = a[0];

for(i = 1; i <10; i++)
{
scanf("%d",&a[i]);

if(max <a[i])
{
max = a[i];
max_i = i;
}

if(min > a[i])
{
min = a[i];
min_i = i;
}
}

swap(&a[max_i], &a[min_i]);

for(i =0 ; i <10; i++)
{
printf("%d ", a[i]);
}
}本回答被提问者采纳
相似回答