一般在初学一门编程语言的时候就会接触到两个数值交换的问题,这一点在以后的编程中会经常用到,比如一些排序的程序中或者是类似前面的计算最大公约数等等,因此数值交换是编程最基本也是最重要的,这里陈述两种方法:
1.使用中间变量来暂时的存储一个变量的值,这一点很容易理解,也很容易实现,代码类似这样:以下代码在Windows10环境下使用VS2013编译和执行
#include<stdio.h> //包含标准输入和输出
#include<windows.h> //包含请求系统暂停的系统函数
#pragma warning(disable:4996) //消除scanf不安全警告
int main(){ //主函数
int a, b; //存储两个变量
printf("输入两个变量:\n"); //提示输入两个整形数字
scanf("%d %d", &a, &b); //标准输入
printf("未交换前的值:\na = %d,b = %d\n", a, b); //输出交换前的值
int temp = a; //a的值赋给temp
a = b; //b的值赋给a
b = temp; //temp的值赋给b
printf("交换后的值:\na = %d,b = %d\n", a, b); //输出交换后的值
system("pause"); //请求系统暂停
return 0;
}
2.不使用中间变量来使两个数值交换,这个算法通过加减法实现,自己想的话可能一时半会还想不出来,可能也没有那么好理解,没关系,那就记住它吧。
//程序多余头尾不再重复
#include<stdio.h>
int main(){
int a,b; //存储两个变量
printf("输入两个变量:\n"); //提示输入两个整形数字
scanf("%d %d",&a,&b); //标准输入
printf("未交换前的值:a = %d,b = %d\n",a,b); //输出交换前的值
a = a + b; //a+b的值存入a,a的值丢矢
b = a - b; //则b = a - b,此时b的值变为a的值。a仍然存储a+b的值
a = a - b; //此时b已经变成a的值,即a的值转变为b的值
//不理解就记住它吧,反正我也是这么干的
printf("交换后的值:a = %d,b = %d\n",a,b); //输出交换后的值
return 0;
}