题目:交换两个整形数
1.给定两个整形变量的值,将两个值的内容进行交换
方法:我首先想到再定义一个变量,再进行交换
#include<stdio.h>
#include<Windows.h>
int main()
{
int a=15;
int b = 20;
int temp; //创建临时变量temp
temp= a;
a = b;
b = temp;
printf("a=%d,b=%d\n", a, b);
system("pause");
return 0;
}
2.不允许创建临时变量,交换两个数
<1> 利用两数相减法
<2> 利用两数异或
<3>利用函数交换
两数相减
#include<stdio.h>
#include<Windows.h>
int main()
{
int a=15;
int b = 20;
a = a +b;
b = a - b;
a = a - b;
printf("a=%d,b=%d\n", a, b);
system("pause");
return 0;
}
两数异或:异或:相异为真,相同为假
#include<stdio.h>
#include<Windows.h>
int main()
{
int a=15;
int b = 20;
a = a^b;
b = a^b;
a = a^b;
printf("a=%d,b=%d\n", a, b);
system("pause");
return 0;
}
用Exchange()函数实现交换
#include<stdio.h>
#include<windows.h>
#pragma warning(disable:4996);
void Exchange(int *ap, int *bp)
{
int tmp = *ap;
*ap = *bp;
*bp = tmp;
}
int main()
{
int a, b;
printf("请输入两个数:");
scanf("%d%d", &a, &b);
printf("a=%d b=%d\n", a, b);
Exchange(&a, &b);
printf("a=%d b=%d\n", a, b);
system("pause");
return 0;
}
运行结果: