标签:c语言 交换两个数
今天上了C语言课,老师讲了有关交换两个数的问题。课后,经过自己的思考和总结,我得出了以下几种方法。虽然这个问题的方法还有很多,但我目前只了解到了这五种方法,希望大家多提建议和意见。其他的方法待补充奥。。。
法一:
大家最容易想的方法,首先设一个临时变量,利用临时变量将两个数交换。下面是实现它的代码:
#include<stdio.h> int main() { int num1=5,num2=10,tmp=0; printf("before:\n"); printf("num1=%d\num2=%d\n",num1,num2); tmp=num1; num1=num2; num2=tmp; printf("after:\n"); printf("num1=%d\num2=%d\n",num1,num2); return 0; }
法二:利用指针实现,这种方法效率比较高。
#include <stdio.h> void swap(int* p1, int *p2) { int tmp = *p1; *p1 = *p2; *p2 = tmp; } int main() { int num1 = 5; int num2 = 10; int tmp = 0; printf("before:\n"); printf("num1=%d\num2=%d\n",num1,num2); swap(&num1,&num2); printf("after:\n"); printf("num1=%d\num2=%d\n",num1,num2); return 0; }
法三:可以不用设置临时变量的方法,利用加减法实现,但是可能会出现溢出。
#include <stdio.h> int main() { int num1 = 5; int num2 = 10; printf("before:\n"); printf("num1=%d\num2=%d\n",num1,num2); num1 = num1+num2; num2 = num1-num2; num1 = num1-num2; printf("after:\n"); printf("num1=%d\num2=%d\n",num1,num2); return 0; }
法四:利用乘除实现。
#include <stdio.h> int main() { int num1 = 5; int num2 = 10; printf("before:\n"); printf("num1=%d\num2=%d\n",num1,num2); num1 = num1*num2; num2 = num1/num2; num1 = num1/num2; printf("after:\n"); printf("num1=%d\num2=%d\n",num1,num2); return 0; }
法五:利用异或运算实现,但这个方法效率比较低。
#include <stdio.h> int main() { int num1 = 5; int num2 = 10; printf("before:\n"); printf("num1=%d\num2=%d\n",num1,num2); num1 = num1^num2; num2 = num1^num2; num1 = num1^num2; printf("after:\n"); printf("num1=%d\num2=%d\n",num1,num2); return 0; }
今天就总结到这里吧。希望对大家有帮助。
本文出自 “10912110” 博客,请务必保留此出处http://10922110.blog.51cto.com/10912110/1717643
标签:c语言 交换两个数
原文地址:http://10922110.blog.51cto.com/10912110/1717643