输入三个整数,要求按照从小到大的顺序输出

我是想写一个void类型的字程序。但是不知道哪里有问题,萌新求大佬帮忙解答!


#include<stdio.h>
void stay(int x,int y);
int main() {
    int a, b, c;
    scanf("%d %d %d", &a, &b, &c);
    stay(b,c);
    stay(a,c);
    stay(a,b);
    printf("%d%d%d",a,b,c);
    return 0;
}
void stay(int x,int y) {
    int t;
    if(x>y) {
        t=x;
        x=y;
        y=t;
    }
    return ;
}

你的stay是传值运算,stay中的操作对外面的数据没有影响,修改如下:

void stay(int *x,int *y) 
{
    int t;
    if(*x>*y) 
    {
        t=*x;
        *x=*y;
        *y=t;
    }
}

main函数中使用的时候,方法如下:
stay(&b,&c);
stay(&a,&c);
stay(&a,&b);

你题目的解答代码如下:

#include<stdio.h>
void stay(int *x,int *y);
int main() {
    int a, b, c;
    scanf("%d %d %d", &a, &b, &c);
    stay(&b,&c); //用&传变量的地址
    stay(&a,&c);
    stay(&a,&b);
    printf("%d %d %d",a,b,c);
    return 0;
}
void stay(int *x,int *y) { //xy定义为指针
    int t;
    if(*x>*y) {
        t=*x;
        *x=*y;
        *y=t;
    }
}

如有帮助,望采纳!谢谢!

void stay(int &x,int  &y) {    //经典值传递问题,这里用引用就好了
    int t;
    if(x>y) {
        t=x;
        x=y;
        y=t;
    }
    return ;
}