首页
学习
活动
专区
圈层
工具
发布
社区首页 >专栏 >C语言——实现两个数的交换(多种方法)

C语言——实现两个数的交换(多种方法)

作者头像
半生瓜的blog
发布2023-05-12 20:59:33
发布2023-05-12 20:59:33
1.7K0
举报
文章被收录于专栏:半生瓜のblog半生瓜のblog

C语言——实现两个数的交换(多种方法)

1.创建临时变量的

(1)直接在主函数中

代码语言:javascript
复制
#include<stdio.h>
int main(void)
{	
	int a = 10;
	int b = 20;
	int c = 0;//创建c为临时变量
	printf("交换之前:a=%d,b=%d\n", a, b);
	c = a;
	a = b;
	b = c;
	printf("交换之后:a=%d,b=%d\n", a, b	);
	return 0;
}

(2)创建一个函数

代码语言:javascript
复制
//思路:将a和b的地址传过去,因为通过地址就可以找到代码,
    将地址传过去,就要用指针来接收。
#include<stdio.h>
void exchange(int* pa, int* pb)
{
	int c = 0;
	c = *pa;
	//将a备份到c中
	//然后改变a
	*pa = *pb;
	*pb = c;
}
int main(void)
{
	int a = 10;
	int b = 20;
	printf("交换之前:a = %d b = %d\n", a, b);
	exchange(&a, &b);
	printf("交换之后:a = %d b = %d\n", a, b);
	return 0;
}

2.无临时变量的

(1)加减法 缺陷:当两个加在一起特别大的时候会有些二进制位的丢失——溢出

代码语言:javascript
复制
#include<stdio.h>
int main(void)
{
	int a = 10;
	int b = 20;
	printf("交换之前:a=%d,b=%d\n", a, b);
	a = a + b;
	b = a - b;
	a = a - b;
	printf("交换之后:a=%d,b=%d\n", a, b);
	return 0;
}

(2)

代码语言:javascript
复制
#include<stdio.h>
int main(void)
{
	int a = 10;
	int b = 20;
	printf("交换之前:a=%d,b=%d\n", a, b);
	//整型在内存中战32个比特位
	//ab分别用二进制表示
	//00000000000000000000000000001010
	//00000000000000000000000000010100
	//进行三次按位异或——相同为0,相异为1
	a = a ^ b;
	//00000000000000000000000000011110——这个所表示的数是30
	//即现在的a变成了30
	//*******现在要进行按位异或的ab分别是
	//00000000000000000000000000011110
	//00000000000000000000000000010100
	b = a ^ b;
	//得到
	//00000000000000000000000000001010——这个所表示的数是10
	//即现在的b变成了10
	//*******现在要进行按位异或的ab分别是
	//00000000000000000000000000011110
	//00000000000000000000000000001010
	a = a ^ b;
	//得到
	//00000000000000000000000000010100——这个所表示的数是20
	//即现在的a变成了20
	printf("交换之后:a=%d,b=%d\n", a, b);
	return 0;
}
本文参与 腾讯云自媒体同步曝光计划,分享自作者个人站点/博客。
原始发表:2023-05-12,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • C语言——实现两个数的交换(多种方法)
    • 1.创建临时变量的
    • 2.无临时变量的
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档