给定两个整形变量的值将两个值的内容进行交换
2018-04-01 13:11
183 查看
1.基本思路:另开辟一个空间i作为媒介,把num1的内容放在i内,把num2的内容放在num1内,再把i内的内容放在num2内,就完成交换。
#include<stdio.h>
#include<windows.h>
int main()
{
int i;
int num1 = 2;
int num2 = 3;
i = num1; num1 = num2, num2 = i;
printf("%d%d\n", num1, num2);
system("pause");
return 0;
}
2,通过加法交换:这个方法不需要重新开辟空间,但是会发生溢出。当num1的内容占满32个字节(2^32-1),再加1就会溢出。
#include<stdio.h>
#include<windows.h>
int main()
{
int num1 = 2;
int num2 = 3;
num1 = num1 + num2;
num2 = num1 - num2;
num1 = num1 - num2;//num1=3+2=5,num2=5-3=2,num1=5-2=3.
printf("%d%d\n", num1, num2);
system("pause");
return 0;
}
3.通过位运算(最优方法):异或的法则是---相同为0,相异为1
#include<stdio.h>
#include<windows.h>
int main()
{
int num1 = 2;
int num2 = 3;
num1 = num1^num2;//010^011=001
num2 = num1^num2;//001^011=010
num1 = num1^num2;//001^010=011
printf("%d%d\n", num1, num2);
system("pause");
return 0;
}
#include<stdio.h>
#include<windows.h>
int main()
{
int i;
int num1 = 2;
int num2 = 3;
i = num1; num1 = num2, num2 = i;
printf("%d%d\n", num1, num2);
system("pause");
return 0;
}
2,通过加法交换:这个方法不需要重新开辟空间,但是会发生溢出。当num1的内容占满32个字节(2^32-1),再加1就会溢出。
#include<stdio.h>
#include<windows.h>
int main()
{
int num1 = 2;
int num2 = 3;
num1 = num1 + num2;
num2 = num1 - num2;
num1 = num1 - num2;//num1=3+2=5,num2=5-3=2,num1=5-2=3.
printf("%d%d\n", num1, num2);
system("pause");
return 0;
}
3.通过位运算(最优方法):异或的法则是---相同为0,相异为1
#include<stdio.h>
#include<windows.h>
int main()
{
int num1 = 2;
int num2 = 3;
num1 = num1^num2;//010^011=001
num2 = num1^num2;//001^011=010
num1 = num1^num2;//001^010=011
printf("%d%d\n", num1, num2);
system("pause");
return 0;
}
相关文章推荐
- 给定两个整形变量的值,将两个值的内容进行交换
- 1. 给定两个整形变量的值,将两个值的内容进行交换。
- 给定两个整形变量的值,将两个值的内容进行交换。
- C语言 实现 给定两个整形变量的值,将两个值的内容进行交换
- 给定两个整形变量的值,将两个值的内容进行交换
- 给定两个整形变量的值,将两个值的内容进行交换
- 给定两个整形变量的值,不创建中间变量将两个值的内容进行交换
- 给定两个整形变量的值,将两个值的内容进行交换。
- 给定两个整形变量的值,将两个值的内容进行交换。
- 给定两个整形变量的值,将两个值的内容进行交换
- 给定两个整形变量的值,将两个值的内容进行交换。
- 用C语言实现给定两个整形变量的值,将两个值的内容进行交换。(4种方法)
- 给定两个整形变量的值,将两个值的内容进行交换。
- 1. 给定两个整形变量的值,将两个值的内容进行交换。 2. 不允许创建临时变量,交换两个数的内容(附加题) 3. 求10 个整数中最大值。 4. 写一个函数返回参数二进制中 1 的个数
- [置顶] 给定两个整形变量的值, 但是不允许建立临时文件将两个值得内容进行交换。
- 给定两个整形变量的值,将两个值的内容进行交换
- 给定两个整形变量的值,将两个值的内容进行交换
- [置顶] 给定两个整形变量的值。将两个值得内容进行交换
- 给定两个整形变量的值,将两个值的内容进行交换
- 1. 给定两个整形变量的值,将两个值的内容进行交换。 2. 不允许创建临时变量,交换两个数的内容(附加题) 3. 求10 个整数中最大值。 4. 写一个函数返回参数二进制中 1 的个数