交换俩数的三种方法
Posted z啵唧啵唧
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了交换俩数的三种方法相关的知识,希望对你有一定的参考价值。
注重看交换方法中不同的交换做法
1.临时变量法
#include<stdio.h>
#include<Windows.h>
#pragma warning(disable:4996)
void Exchange_num(int *px,int *py)//只有用指针作为函数的参数才能在函数中直接修改函数外的变量。
{
int temp = 0;//定义一个临时变量,用作保存一个中间值
temp = *px;
*px = *py;
*py = temp;
}
int main()
{
int x = 0;
int y = 0;
printf("请输入两个你想交换的数");
scanf("%d %d", &x, &y);
printf("交换前:x=%d y=%d\\n", x, y);
Exchange_num(&x, &y);
printf("交换后:x=%d y=%d\\n", x, y);
system("pause");
return 0;
}
运行结果:
![在这里插入图片描述](https://img-blog.csdnimg.cn/20210527164640792.png?x-oss-process=image/watermark,type_ZmFuZ3poZW5naGVpdGk,shadow_10,text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L3dlaXhpbl80NTgwOTgyOQ==,size_16,color_FFFFFF,t_70
注:如果没有temp保存中间变量的话,x已经变化,丧失原有数据,y不可能再变成x。
2.按位异或交换法
#include<stdio.h>
#include<Windows.h>
#pragma warning(disable:4996)
void Exchange_num(int *px,int *py)
{
*px ^= *py;
*py ^= *px;
*px ^= *py;
}
int main()
{
int x = 0;
int y = 0;
printf("请输入两个你想交换的数");
scanf("%d %d", &x, &y);
printf("交换前:x=%d y=%d\\n", x, y);
Exchange_num(&x, &y);
printf("交换后:x=%d y=%d\\n", x, y);
system("pause");
return 0;
}
运行结果:
3.加减交换法
#include<stdio.h>
#include<Windows.h>
#pragma warning(disable:4996)
void Exchange_num(int *px,int *py)
{
*px = *px + *py;
*py = *px - *py;
*px = *px - *py;
}
int main()
{
int x = 0;
int y = 0;
printf("请输入两个你想交换的数");
scanf("%d %d", &x, &y);
printf("交换前:x=%d y=%d\\n", x, y);
Exchange_num(&x, &y);
printf("交换后:x=%d y=%d\\n", x, y);
system("pause");
return 0;
}
运行结果:
怎么样是不是感觉很简单呢!!!
以上是关于交换俩数的三种方法的主要内容,如果未能解决你的问题,请参考以下文章