用C语言实现两变量内容交换的N种方法
2016-09-20 08:21
567 查看
一:创建变量实现交换
//如使用函数调用,结果则不发生改变
void swap(int x,int y)
{int temp; /*该错误属于运行式错误,
temp=x; 形式参数在内存中创立了新的空间,,
x=y; 运行调用函数后,只改变了x,y的地址空间内容,
y=temp; 而实参a,b的实际内容却并未改变。*/
}
2.改传值调用为传址调用
3.利用指针通过改变变量的地址实现内容交换
二.不创建临时变量
1.利用变量的加减乘除
加减法存在漏洞:1,当数字很大时会出现溢出;2.它适合交换整型和浮点型数值变量,当用于交换浮点数时可能会出现精度损失。
乘除法存在漏洞:除了加减法中可能出现的问题外还.必需避免a或b等于0的状况。
2.利用位运算实现
不创建临时变量,交换两变量内容
^ 异或位运算符;
eg:a=3;b=5;
a=0011
b=0101
a^b=0110 //由此可得,根据ab可得出a^b,根据a^b和a可得出b,根据a^b和b可得出a
1.#include <stdio.h> int main() { int a = 10; int b = 20; int c; printf("before change:a=%d b=%d\n",a,b); c = a; a = b; b = c; printf("after change:a=%d b=%d\n",a,b); return 0; }//可成功运行
//如使用函数调用,结果则不发生改变
void swap(int x,int y)
{int temp; /*该错误属于运行式错误,
temp=x; 形式参数在内存中创立了新的空间,,
x=y; 运行调用函数后,只改变了x,y的地址空间内容,
y=temp; 而实参a,b的实际内容却并未改变。*/
}
2.改传值调用为传址调用
</pre></p><pre name="code" class="cpp">void swap(int *p1,int *p2) { int temp=*p1; *p1=*p2; *p2=temp }//通过指针改变了变量的内容并未改变变量地址
3.利用指针通过改变变量的地址实现内容交换
#include <stdio.h> int main() { int a = 10; int b = 20; int *p1,*p2,*p printf("before change:a=%d b=%d\n",a,b); p1=&a; p2=&b; p=p1; p1=p2; p2=p; printf("after change:a=%d b=%d\n",a,b); return 0; }//可成功运行
二.不创建临时变量
1.利用变量的加减乘除
#include <stdio.h> int main() { int a = 10; int b = 20; printf("before change:a=%d b=%d\n",a,b); a=a+b; b=a-b; a=a-b; printf("after change:a=%d b=%d\n",a,b); return 0; }//可成功运行,同理可使用减法<span style="color:#ff0000;">{a=a-b;b=a+b;a=b-a;}</span>
加减法存在漏洞:1,当数字很大时会出现溢出;2.它适合交换整型和浮点型数值变量,当用于交换浮点数时可能会出现精度损失。
乘除法存在漏洞:除了加减法中可能出现的问题外还.必需避免a或b等于0的状况。
2.利用位运算实现
不创建临时变量,交换两变量内容
#include <stdio.h> int main() { int a = 10; int b = 20; printf("before change:a=%d b=%d\n",a,b); a = a^b; b = a^b; a = a^b; printf("after change:a=%d b=%d\n",a,b); return 0; }
^ 异或位运算符;
eg:a=3;b=5;
a=0011
b=0101
a^b=0110 //由此可得,根据ab可得出a^b,根据a^b和a可得出b,根据a^b和b可得出a
相关文章推荐
- 用C语言实现给定两个整形变量的值,将两个值的内容进行交换。(4种方法)
- 利用C语言来实现交换两个变量的值,由终端输入两个整数给变量x、y,然后交换x和y的值后,输出x和y。 有不同的方法
- C语言实现 不允许创建临时变量,交换两个数的内容
- C语言 实现 给定两个整形变量的值,将两个值的内容进行交换
- 如何实现两个变量快速的交换内容—编程心得
- 三种方法实现不引入变量交换两个变量值
- 【c语言】不允许创建临时变量,交换两个数的内容
- C语言基础—实现两个变量交换的三种方法
- 利用C语言重定向函数freopen实现交换两个文本文件内容
- 【C语言】给定两个整型变量的值,将两个值的内容进行交换(不同方法)
- 不允许创建临时变量,交换两个数的内容(用加减乘除实现)
- C语言中—— 三种方法实现两个数值交换
- 交换两个变量的值实现方法,及容易出错之处
- 四种方法实现两个等大数组之间内容交换
- C语言中几种不用第三变量交换两值的方法
- C语言中交换两个变量数值的方法
- C语言 不允许创建临时变量,交换两个数的内容
- 【c语言】不允许创建临时变量,交换两个数的内容
- c语言:4种方法;交换两个整数的位置(包括引入第三方变量和不引入第三方变量)
- 标准C语言,不用引入新变量就可以交换两个变量的方法及其注意事项