程序師世界是廣大編程愛好者互助、分享、學習的平台,程序師世界有你更精彩!
首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫知識
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
 程式師世界 >> 編程語言 >> 更多編程語言 >> 編程解疑 >> c語言-C語言新手問題...老鳥莫嫌棄``

c語言-C語言新手問題...老鳥莫嫌棄``

編輯:編程解疑
C語言新手問題...老鳥莫嫌棄``

編寫函數(無返回有三個參數), 向函數傳遞三個浮點數, 函數中實現(指針完成):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;
}
mingye1234
cxsmarkchan
mingye1234
  1. 上一頁:
  2. 下一頁:
Copyright © 程式師世界 All Rights Reserved