我是想写一个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 ;
}