这个输出的还是输入的数

//依次输入三个数,将他们按从大到小的顺序输出
#include <stdio.h>
#include <stdlib.h>
float max(float x,float y);
int main()
{
float a,b,c,t;
printf("please input:");
scanf("%f",&a,&b,&c);
max(a,b);
max(a,c);
max(b,c);
printf("%

img


f\n",a,b,c);
return 0;
}

float max(float x,float y)
{
float temp;
if(x<y){
temp=x;
x=y;
y=temp;
}
}

f不能重复,所以scanf和printf我都删了2个

值参是不能修改玩不传入变量值的,用指针吧

float max(float* x,float* y);

float max(float* x,float* y)
{
    if(*x < *y)
    {
        float temp  = *x;
        *x = *y;
        *y = temp;
    }
}

修改如下,供参考:

#include <stdio.h>
#include <stdlib.h>
void max(float* x, float* y);
int main()
{
    float a, b, c, t;
    printf("please input:");
    scanf("%f%f%f", &a, &b, &c);
    max(&a, &b);
    max(&a, &c);
    max(&b, &c);
    printf("%f %f %f\n", a, b, c);
    return 0;
}
void max(float* x, float* y)
{
    float temp;
    if (*x < *y) {
        temp = *x;
        *x = *y;
        *y = temp;
    }
}

并没有记录max函数的返回值,而是仅仅做了个大小比较而已,当然输出的还是输入的数据了,改为按地址作为max的变量就OK了

将float max(float x,float y)值传递改为
float max(float &x,float &y)引用传递即可

max函数的参数改为地址或者指针