C程序如何实现两个变量a,b的变换

 我来答
买瑶说春
2020-03-10 · TA获得超过3.6万个赞
知道大有可为答主
回答量:1.2万
采纳率:31%
帮助的人:899万
展开全部
你好!!!
方法很多,我用了变量的的地址作为参数和用到引用作为参数,写了2个程序实现交换:
1.用指针作为形参,交换的是指针所指向的值,而不是指针变量的值。例如:
子函数写这样:
void
swap(int
*a,int
*b)
{
int
*temp;
temp=a;
a=b;
b=temp;
}
交换的是指针的值,但是交换后,在子函数了实现了交换,但是在主函数了却没有实现交换。
代码如下:
#include

void
swap(int
*a,int
*b)
{
int
temp;
temp=*a;
*a=*b;
*b=temp;
}
void
main()
{
int
x,y;
printf("请输入两个整数:\n");
scanf("%d%d",&x,&y);
printf("交换前的:x=%d,y=%d\n",x,y);
swap(&x,&y);//用x,y的的地址作为实参
printf("交换后的:x=%d,y=%d\n",x,y);
}
测试:
请输入两个整数:
3
6
交换前的:x=6,y=3
交换后的:x=6,y=3
Press
any
key
to
continue
2.要形参是引用,其实引用就是同一个变量的不同称呼而已,比如;人的大名和小名都是指的同一个人,那么在子函数了交换,在主函数里也实现了交换。
代码如下:
#include

void
swap(int
&a,int
&b)
{
int
temp;
temp=a;
a=b;
b=temp;
}
void
main()
{
int
x,y;
printf("请输入两个整数:\n");
scanf("%d%d",&x,&y);
printf("交换前的:x=%d,y=%d\n",x,y);
swap(x,y);
printf("交换后的:x=%d,y=%d\n",x,y);
}
测试:
请输入两个整数:
6
7
交换前的:x=6,y=7
交换后的:x=7,y=6
Press
any
key
to
continue
鲜墨彻贝戊
2020-01-13 · TA获得超过3.7万个赞
知道大有可为答主
回答量:1.2万
采纳率:34%
帮助的人:1037万
展开全部
一种是一般的解决方案,多定义一个变量;例:
int
t;
t=a;
a=b;
b=a;
这是最常用的。
另外就是用C中位运算的^(异或)例:
a=a^b;
b=a^b;
a=a^b;
这个不用多创建一个变量。但是难理解一些。
因为第二种是使用二进制运算的,异或。不懂第二种再问我一下就是,我给你补充。
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
星遐思笃申
2020-03-23 · TA获得超过3.7万个赞
知道大有可为答主
回答量:1.2万
采纳率:27%
帮助的人:2137万
展开全部
程序中最简单方法也就是第一沙发者回答的那个,
这里面藏着一个陷阱,我今年考试的时候就被狠狠的陷了一次,害我没拿到高分。以下陈述:
调用函数中的变量a,b,在被调用函数作为中形参变换后,在调用函数中a,b值不发生任何变化。
楼主注意这个问题哦。。
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
台晚竹徭娴
2020-04-24 · TA获得超过3.6万个赞
知道大有可为答主
回答量:1.2万
采纳率:33%
帮助的人:1049万
展开全部
定义中间变量temp(一般都用这个标识符),执行以下语句:
temp=a;a=b;b=temp;
OK!
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
收起 更多回答(2)
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式