C语言小程序--交换两个变量的值
2016-03-16 20:58
218 查看
看到这个题目首先我们可以想到借助一个第三变量来实现
例如:a=10,b=20 我们想要交换a与b的值,可以借助一个第三变量temp,把a的值附给temp,把b的值给a,再把temp的值给b,就完成了交换。
下面用代码实现:
#include<stdio.h>
int main()
{
int a = 10, b = 20;
int temp;
printf("交换前a = %d,b = %d \n", a, b);
temp = a;
a = b;
b = temp;
printf("交换后 a = %d,b = %d \n", a, b);
system("pause");
return 0;
}
这种方法做出来以后,我们也可以增加点难度,有没有办法不使用中间变量就交换两个变量的值呢?稍加思考,其实这个也不难,我们可以借助数学中的加减运算来实现。
例如:a=10,b=20 令 a=a+b; 把a-b赋给b(注意:此处的a是重新赋值后的,即 a+b),再把a-b赋给a(此处的a和b都是重新赋值后的),这样就实现了两个数的交换。
代码如下:
#include <stdio.h>
int main()
{
int a=10 , b =20;
a = a + b;
b = a - b;
a = a - b;
printf("a =%d ,b=%d", a, b);
system("pause");
return 0;
}
除了上述方法,还可以使用异或运算来实现两个变量的值交换但因为这种方法不变阅读,不建议使用。
#include <stdio.h>
int main()
{
int a = 10, b = 20;
printf("交换前a = %d,b = %d \n", a, b);
a = a^b;
b = a^b;
a = a^b;
printf("交换后 a = %d,b = %d \n", a, b);
system("pause");
return 0;
}
看到这个题目首先我们可以想到借助一个第三变量来实现
例如:a=10,b=20 我们想要交换a与b的值,可以借助一个第三变量temp,把a的值附给temp,把b的值给a,再把temp的值给b,就完成了交换。
下面用代码实现:
#include<stdio.h>
int main()
{
int a = 10, b = 20;
int temp;
printf("交换前a = %d,b = %d \n", a, b);
temp = a;
a = b;
b = temp;
printf("交换后 a = %d,b = %d \n", a, b);
system("pause");
return 0;
}
这种方法做出来以后,我们也可以增加点难度,有没有办法不使用中间变量就交换两个变量的值呢?稍加思考,其实这个也不难,我们可以借助数学中的加减运算来实现。
例如:a=10,b=20 令 a=a+b; 把a-b赋给b(注意:此处的a是重新赋值后的,即 a+b),再把a-b赋给a(此处的a和b都是重新赋值后的),这样就实现了两个数的交换。
代码如下:
#include <stdio.h>
int main()
{
int a=10 , b =20;
a = a + b;
b = a - b;
a = a - b;
printf("a =%d ,b=%d", a, b);
system("pause");
return 0;
}
除了上述方法,还可以使用异或运算来实现两个变量的值交换但因为这种方法不变阅读,不建议使用。
#include <stdio.h>
int main()
{
int a = 10, b = 20;
printf("交换前a = %d,b = %d \n", a, b);
a = a^b;
b = a^b;
a = a^b;
printf("交换后 a = %d,b = %d \n", a, b);
system("pause");
return 0;
}
相关文章推荐
- C语言第一篇:C语言博客书写规范
- 朱老师ARM裸机学习笔记(七):汇编写启动代码之调用C语言
- c语言:用结构体变量输出学生的信息,包括学号,姓名,性别。
- C语言之谈谈存储类、链接。
- 输出重定向函数
- 如何成为一个C++高级程序员
- C++中为什么要用虚函数、指针或引用才能实现多态?
- c语言:通过指针变量输出整型数组a的10个元素
- 求1+2+3+......+100.
- c++第1次上机实验(三角形的面积)
- C++引用和java引用的区别
- c++实现双向链表的常用功能
- Interop with PROPVARIANTs in .NET -- C# 调用C++ COM 系列笔记
- C++程序设计(关于函数中数组传递的一点心得)
- 个人项目-词频统计(语言:C++)
- c/c++单链表面试题—链表相交问题
- “Accelerated C++” 阅读笔记(一)
- 小学生算术能力测试系统
- C++快排实现代码
- C++扬帆远航——8(张三李四,等差数列)