求解c语言设计程序问题

为什么输出的还是435 不是543
#include <stdio.h>
void f(int x,int y){
int t;
if(x<y){
t=x;
x=y;
y=t;
}

}
int main(void) {

int a=4,b=3,c=5;
f(a,b);
f(a,c);
f(b,c);
printf("%d,%d,%d",a,b,c);
return 0;

}

值参不能改变实参值。你的函数参数不行。修改如下:

#include <stdio.h>
void f(int *x,int *y){
int t;
if(*x<*y){
t=*x;
*x=*y;
*y=t;
}

}
int main(void) {

int a=4,b=3,c=5;
f(&a,&b);
f(&a,&c);
f(&b,&c);
printf("%d,%d,%d",a,b,c);
return 0;
}

你这个是传值的方式进行函数的,改变不了值,你要传地址来通过指针来改变实参,简单的说就是void f(int* x,int* y)然后下面x改成*x,y也一样,下面调用穿的参数前面加个,这样f(&a,&b)