两数交换的三种写法
上一篇博客中写到在学习c语言的过程中,很多时候,有很多问题我们可以有不止一种选择,它会有好几种方式。当然,不只仅仅局限于c语言,在其他语言中也很适用。比如c++,java ,python等。c语言中还有好多的乐趣性等待发掘,例如同样的代码,在不同的环境中运行,会出现很多情况,例如某处语句报错,无法编译,编译结果不同等问题,这些都是在学习过程中会遇到的,这次我们暂时只讨论一个代码的其他几种写法,并且能够成功运行出来。
这次,我们具体实例来解决一个在初学c语言中的常见的一个小问题,用三种方式完成交换两个数字的数值。遇到这个问题,初学者常常会用到定义一个中间变量,来使两数完成交换。
方法一,定义一个中间变量,代码如下
#include<stdio.h>
int main()
{
int num1,num2,temp;
printf("请输入两个整数: ");
scanf("%d %d",&num1,&num2);
temp=num1;
num1=num2;
num2=temp;
printf("%d %d\n",num1,num2);
return 0;
}
方法二,不定义中间变量,利用加减法运算来实现两数的交换,代码如下
#include<stdio.h>
int main()
{
int num1,num2;
printf("请输入两个整数: ");
scanf("%d %d",&num1,&num2);
num1=num1+num2;
num2=num1-num2;
num1=num1-num2;
printf("%d %d\n",num1,num2);
return 0;
}
方法三,利用异或运算实现数交换,代码如下
#include<stdio.h>
int main()
{
int num1,num2;
printf("请输入两个整数: ");
scanf("%d %d",&num1,&num2);
num1=num1^num2;
num2=num1^num2;
num1=num1^num2;
printf("%d %d\n",num1,num2);
return 0;
}
以上就是交换两数的三种方法,到底使用哪种方法根据个人习惯和题目意思,如果让定义中间变量,那就用第一种。明确说明不允许定义中间变量,那就使用第二和第三种方法。上面所用到的第二种加减法和第三种异或运算都用是c语言中操作符中的知识,操作符是c语言中我们常常会用到的知识,需要我们熟练掌握。
此次我就不讲操作符了,下一篇我会为大家详细的介绍一下我学习操作符的心得以及操作符的一些使用。
此处附上上一篇博客链接 初阶段的学习之路