让数组的最前最小,最后最大

题目:输入数组,最大的与第一个元素交换,最小的与最后一个元素交换,输出数组。

 

 1 #include <stdio.h>
 2 
 3 //要用到的函数的声明
 4 void input(int number[]);
 5 void max_min(int array[]);
 6 void output(int array[]);
 7 
 8 int main()
 9 {
10     int number[12];
11 
12     input(number);
13     max_min(number);
14     output(number);
15 
16     return 0;
17 }
18 
19 //输入数组数据
20 void input(int number[])
21 {
22     int i;
23     for(i=0; i<10; i++)
24     scanf("%d,",&number[i]);
25     //scanf("%d",&number[9]);
26 }
27 
28 //找到最大最小,并且交换数组里的元素。
29 void max_min(int array[])
30 {
31     int *max,*min,k,l;
32     int *p,*arr_end;
33 
34     arr_end=array+10;
35     max=min=array;
36 
37     //只用一次遍历,就可以找到最大最小
38     for(p=array+1; p<arr_end; p++)
39     {
40         if(*p>*max)
41             max=p;
42 
43         else if(*p<*min)
44             min=p;
45     }
46 
47     //已经找到 最大k,最小l, 保存起来。
48     k=*max;
49     l=*min;
50     *p=array[0];
51 
52     //让最前最小,最后最大
53     array[0]=l;
54 
55     //这里可能是错的。
56     //l=*p;
57 
58     *min = *p;
59     *p=array[9];
60     array[9]=k;
61 
62     //这里是错的。
63     //k=*p;
64     *max = *p;
65     //return;
66 }
67 
68 //输出数组里的所有的元素。
69 void output(int array[])
70 {
71     int *p;
72     for(p=array; p<array+10; p++)
73     printf("%d,",*p);

74 } 

 

posted @ 2012-05-02 21:30  zhengmian  阅读(294)  评论(0)    收藏  举报