如何编写交换两值的C函数?

chummy 2003-08-18 10:06:35
小弟最近刚接触编程。在研究C语言的时候遇到一个小问题。请各位高手指教。编写一个C程序。

#include <stdio.h>

/* SWAP函数,实现交换两值 */
swap(int x,int y)
{int z;
z = x;
x = y;
y = z;
return x,y;
}

main()
{int a,b;
scanf("%d,%d",&a,&b);
/*调用SWAP函数*/
swap (a,b);
printf ("%d,%d",a,b);
}

但为什么MAIN函数里的A,B值没有改变呢?

见笑了。麻烦各位答疑。
...全文
96 8 打赏 收藏 转发到动态 举报
写回复
用AI写文章
8 条回复
切换为时间正序
请发表友善的回复…
发表回复
lemon520 2003-08-18
  • 打赏
  • 举报
回复
交你一个简单的方法:
交换两个数的值:
#include<stdio.h>
void main()
{
int a=3;b=5;
a=a^b;
b=b^a;
a=a^b;
printf("%d %d\n"a,b);
}
程序运行后就是:5 3
bm1408 2003-08-18
  • 打赏
  • 举报
回复
呵呵!

太典型了!
书上都当例子了!
chummy 2003-08-18
  • 打赏
  • 举报
回复
谢谢各位高手指点!
lifanxi 2003-08-18
  • 打赏
  • 举报
回复
因为C中的传参是按值传递的,也就是说是把实参的值复制了一份给形参,形参的值改变当然不影响实参的值。
在C中只能通过传指针实现交换值的函数。
chongyang() 提供的是方法是在C++中用传引用的方法来实现的,本质与传指针类似,在C中不适用。
chongyang 2003-08-18
  • 打赏
  • 举报
回复
不好意思,上面是引用,不是标准c所支持的!
再给你一个不用临时变量的交换方法:
swap(int &x,int &y)
{
if(x != y)
{
x = x + y;
y = x - y;
x = x - y;
}
}
aflyinghorse 2003-08-18
  • 打赏
  • 举报
回复
笔误
y = *z;
应为 *y = z;
chongyang 2003-08-18
  • 打赏
  • 举报
回复
swap(int &x,int &y)
{int z;
z = x;
x = y;
y = z;
}
aflyinghorse 2003-08-18
  • 打赏
  • 举报
回复
void swap(int * x,int * y)
{int z;
z = *x;
*x = *y;
y = *z;
}

main()
{int a,b;
scanf("%d,%d",&a,&b);
/*调用SWAP函数*/
swap (&a,&b);
printf ("%d,%d",a,b);
}

69,368

社区成员

发帖
与我相关
我的任务
社区描述
C语言相关问题讨论
社区管理员
  • C语言
  • 花神庙码农
  • 架构师李肯
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧