編寫函數(無返回有三個參數), 向函數傳遞三個浮點數, 函數中實現(指針完成):1) 求得最大值和最小值(2) 交換最大值和最小值(3) 打印三個數
void MaxMinChangeEachOtherNew(float a,float b,float c){
float *max;
float *min;
max = &(a > b ? a : b > c ? a > b ? a : b : c); //這兩行報錯```為什麼呢??
min = &(a < b ? a : b < c ? a < b ? a : b : c);
float s = *max;
*max = *min;
*min = s;
}
前一個答案沒解決交換問題,附上新答案。注意和原先程序的區別。要實現函數外的交換,重點是函數定義裡面的參數列表要用指針。
#include <stdio.h>
void MaxMinChangeEachOtherNew(float *a,float *b,float *c){ //注意這裡的參數用的是指針類型,這樣才能修改a/b/c的值
float *max;
float *min;
max = min = a;
if(*b > *max) max = b;
if(*c > *max) max = c;
if(*b < *min) min = b;
if(*c < *min) min = c;
float s = *max;
*max = *min;
*min = s;
}
int main(){
//測試代碼
float a = 1.2, b = 3.0, c = 2.1;
MaxMinChangeEachOtherNew(&a, &b, &c);
printf("%f\n%f\n%f\n", a, b, c);
return 0;
}