找出float型数组的最大值和最小值,分别和第一个和最后一个元素互换

 1 #include<stdio.h>
 2 float a[10];
 3 float *p;
 4 int main()
 5 {
 6     void input(float*,int);
 7     void output(float*,int);
 8     void change(float*,int);
 9     p=a;
10     input(p,10);
11     printf("输入完成\n");
12     change(p,10);
13     printf("操作完成\n");
14     output(p,10);
15     printf("输出完成\n");
16     return 0;
17 }
18 
19 int min(float *a,int n)
20 {
21     int min=0;
22     for(int i=1;i<n;i++)
23     {
24         if(*(a+min)>*(a+i)) min=i;
25     }
26     return min;
27 }
28 int max(float *a,int n)
29 {
30     int max=0;
31     for(int i=1;i<n;i++)
32     {
33         if(*(a+max)<*(a+i)) max=i;
34     }
35     return max;
36 }
37 
38 void input(float*a,int n)
39 {
40     for(int i=0;i<n;i++)
41     {
42         scanf("%f",a+i);
43     }
44 }
45 
46 void change(float *a,int n)
47 {
48     int i=min(a,n);
49     int j=max(a,n);
50     if(j==0) j=i;      //仔细理解这一句的重要性
51     float temp=*(a+i);
52     *(a+i)=*a;
53     *a=temp;
54     
55     temp=*(a+j);
56     *(a+j)=*(a+n-1);
57     *(a+n-1)=temp;
58 }
59 
60 void output(float*a,int n)
61 {
62     for(int i=0;i<n;i++) printf("%7.2f",*a++);
63     printf("\n");
64 }

运行结果:

猜你喜欢

转载自www.cnblogs.com/bboykaku/p/12498409.html