交换两个数字的值问题,编译没有问题,但是运行得不到想要的结果?
在写一个交换两个数字的值的时候出现问题,麻烦帮助看看:
1 #include <stdio.h>
2
3 int a,b,c;
4 int main(){
5 printf("请输入两个数字:");
6 scanf("%d,%d",&a,&b);
7 fun(a,b);
8
9 }
10
11 int fun(int x,int y){
12 c=x;
13 x=y;
14 y=c;
15 printf("交换后的两个数字是:%d,%d\n",x,y);
16 }
17
18
以上程序,编译没有问题,但是运行的时候却无法交换两个数字的值,请问为什么?
~
[解决办法]
你的参数是输入参数,不是输出参数
要得到正确的结果,有两个办法,一个是使用全局变量,另一个是修改参数输出类型
int fun(int *x,int *y){c=*x;*x=*y;*y=c;printf("交换后的两个数字是:%d,%d\n",*x,*y);}
[解决办法]
在你的scanf("%d,%d",&a,&b);中多了一个逗号,这样就会使你的输入的第二个数为0,去掉里面的逗号就能正常交换了,还是建议你用指针做一遍
[解决办法]
c++就不要用指针传值,用引用好点
int fun(int x,int y){
修改为
int fun(int& x,int& y){