【C语言】四种方法交换两个数(免费复制)

方法一:

通过中间变量t直接交换。

c 复制代码
#include<stdio.h>
//方法一 
int main()
{
	int a,b,t;
	printf("请输入a和b的值:\n");
	scanf("%d %d",&a,&b);
	printf("交换前:a=%d,b=%d\n",a,b);
	t=a;
	a=b;
	b=t;
	printf("交换后:a=%d,b=%d\n",a,b); 
}

方法二:

利用指针,将两个指针指向的变量的值进行交换,只改变内存单元的值,不改变指针指向的内存单元。

c 复制代码
#include<stdio.h>
//方法二
int main()
{
	int a,b,t;
	int *p1=&a,*p2=&b;
	printf("请输入a和b的值:\n");
	scanf("%d %d",p1,p2);
	printf("交换前:a=%d,b=%d\n",*p1,*p2);
	printf("交换前:p1=%d,p2=%d\n",p1,p2);
	t=*p1;
	*p1=*p2;
	*p2=t;
	printf("交换后:a=%d,b=%d\n",*p1,*p2); 
	printf("交换后:p1=%d,p2=%d\n",p1,p2);
	return 0;
} 

方法三:

利用指针,改变两个指针的指向,如原p1指向a,p2指向b,现在p1指向b,p2指向a。

c 复制代码
#include<stdio.h>
//方法三
int main()
{
	int a,b;
	int *p1=&a,*p2=&b,*p;
	printf("请输入a和b的值:\n");
	scanf("%d %d",p1,p2);
	printf("交换前:a=%d,b=%d\n",*p1,*p2);
	printf("交换前:p1=%d,p2=%d\n",p1,p2);
	p=p1;
	p1=p2;
	p2=p;
	printf("交换后:a=%d,b=%d\n",*p1,*p2); 
	printf("交换后:p1=%d,p2=%d\n",p1,p2);
	return 0;
} 

注意和方法二对比p1 p2的变化。

方法四:

写一个交换的子函数(同样利用指针),本质仍然是交换内存单元的值,但注意调用函数的实参应该用地址,因为被调用函数的形参是指针变量,指针就是地址,所以实参也必须是地址。

c 复制代码
#include<stdio.h>
//方法四
int swap(int *x,int *y)
{
	int t;
	t=*x;
	*x=*y;
	*y=t;
}

int main()
{
	int a,b;
	printf("请输入a和b的值:\n");
	scanf("%d %d",&a,&b);
	printf("交换前:a=%d,b=%d\n",a,b);
	swap(&a,&b);
	printf("交换后:a=%d,b=%d\n",a,b);
	return 0;
} 
相关推荐
anqi272 分钟前
Scala 的Map集合
开发语言·后端·scala
喻师傅3 分钟前
Scala-字符串(拼接、printf格式化输出等)-用法详解
大数据·开发语言·scala
1momomo汉堡包3 分钟前
Scala的Array(1)
开发语言·后端·scala
繁星璀璨G26 分钟前
C++11标准模板(STL)- 常用数学函数 - 宏常量 - 求值得到float类型的安静NaN(NAN)
开发语言·c++·算法·stl·常用数学函数·nan
不爱学习的YY酱26 分钟前
【操作系统不挂科】<线程概念(6)>选择题&简答题(带答案与解析)
linux·开发语言·操作系统
大数据编程之光38 分钟前
Python版Spark Structured Streaming编程指南
开发语言·python·spark
zhuzhuxia⌓‿⌓1 小时前
求矩阵中最小元素及其位置
c语言·算法
Horacek1 小时前
《C++ 实现生成多个弹窗程序》
java·开发语言·c++·学习·算法
licy__2 小时前
python的matplotlib实现数据分析绘图
开发语言·python
zero_one_Machel2 小时前
leetcodeQ76最小覆盖子串
java·开发语言·算法