mingye1234 2016-03-20 07:41 采纳率: 60%
浏览 1546
已采纳

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;

}

  • 写回答

3条回答 默认 最新

  • cxsmarkchan 2016-03-20 09:44
    关注

    前一个答案没解决交换问题,附上新答案。注意和原先程序的区别。要实现函数外的交换,重点是函数定义里面的参数列表要用指针。

    #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;
    }
    
    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论
查看更多回答(2条)

报告相同问题?

悬赏问题

  • ¥35 平滑拟合曲线该如何生成
  • ¥100 c语言,请帮蒟蒻写一个题的范例作参考
  • ¥15 名为“Product”的列已属于此 DataTable
  • ¥15 安卓adb backup备份应用数据失败
  • ¥15 eclipse运行项目时遇到的问题
  • ¥15 关于#c##的问题:最近需要用CAT工具Trados进行一些开发
  • ¥15 南大pa1 小游戏没有界面,并且报了如下错误,尝试过换显卡驱动,但是好像不行
  • ¥15 自己瞎改改,结果现在又运行不了了
  • ¥15 链式存储应该如何解决
  • ¥15 没有证书,nginx怎么反向代理到只能接受https的公网网站