用c语言,输入三个浮点数,按从小到大的顺序输出(用指针实现交换)

用c语言,输入三个浮点数,按从小到大的顺序输出(用指针实现交换)

img


/* Note:Your choice is C IDE */
#include "stdio.h"
void main()
{
    float a;
    float b;
    float c;
    float *p1,*p2,*p3;
    float temp;
    
       scanf("%f %f %f",&a,&b,&c);
    p1 = &a;
    p2 = &b;
    p3 = &c;
    
    if(*p1>*p2){
        temp = *p2;
        *p2 = *p1;
        *p1 = temp;    
    }
    if(*p1>*p3){
        temp = *p3;
        *p3 = *p1;
        *p1 = temp;    
    }
    if(*p2>*p3){
        temp = *p3;
        *p3 = *p2;
        *p2 = temp;    
    }
    
    
    printf("%f,%f,%f",*p1,*p2,*p3);
    
    
    
}

参考代码:

#include "stdio.h"

void swap(float *pt1, float *pt2)
{
    float temp;
    temp = *pt1;
    *pt1 = *pt2;
    *pt2 = temp;
}

int main()
{
    float n, m, j;
    float *p1, *p2, *p3;
    scanf("%f %f %f", &n, &m, &j);
    p1 = &n;
    p2 = &m;
    p3 = &j;
    if (*p1 > *p2)
        swap(p1, p2);
    if (*p1 > *p3)
        swap(p1, p3);
    if (*p2 > *p3)
        swap(p2, p3);
    printf("%f %f %f\n", n, m, j);
    return 0;
}

img

如有帮助,望采纳!谢谢! 点击我这个回答右上方的【采纳】按钮

代码如下:

#include <stdio.h>

void swap(float *a,float *b,float * c)
{
    float max,min,mid;
    //最大值
    max = *a > (*b>*c?*b:*c)?*a:(*b>*c?*b:*c);
    //最小值
    min = *a < (*b<*c?*b:*c)?*a:(*b<*c?*b:*c);
    //中间值
    mid = *a + *b + *c - max -min;
    *a = max;
    *b = mid;
    *c = min;
}


int main()
{
    float a,b,c;
    scanf("%f %f %f",&a,&b,&c);
    swap(&a,&b,&c);
    printf("%f %f %f",a,b,c);
    return 0;
}