找出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 }
运行结果: