C语言交换两个变量的值
有两个整型变量 A 和 B,A 中存储的值是 18,B 中存储的值是 10,编写程序交换变量 A 和 B 的值。
代码清单 1:交换变量 A 和 B 的值(错误代码)
步骤 1:定义变量 A 和 B,并分别代入初始值 18 和 10(变量初始化);
步骤 2:把变量 B 的值代入变量 A;
步骤 3:把变量 A 的值代入变量 B;
步骤 4:屏幕打印输出变量 A 和 B 的值。
从表 1 可以看出,步骤 2 中当把变量 B 代入变量 A 后,A 中原来的值 18 就消失了,此时 A 的值为 10,步骤 3 中再把 A 代入 B 以后,B 的值也为 10。因而这段代码并没有实现变量 A 和 B 的值的交换,其算法描述以及执行过程如图 1 所示。
图 1:无法正确交换变量的值的算法描述
代码清单 2:利用临时变量交换变量 A 和 B 的值(正确代码)
上面程序代码的执行步骤如下:
步骤 1:定义变量 A 和 B,并分别代入初始值 18 和 10(变量初始化);
步骤 2:定义临时变量 C;
步骤 3:把变量 A 的值代入变量 C;
步骤 4:把变量 B 的值代入变量 A;
步骤 5:把变量 C 的值代入变量 B;
步骤 6:屏幕打印输出变量 A 和 B 的值。
表 2 给出了代码清单 2 的程序执行过程中变量值的变化情况。该程序的算法描述以及执行过程如图 2 所示。
图 2:利用临时变量正确交换变量的值的算法
声明:《C语言系列教程》为本站“54笨鸟”官方原创,由国家机构和地方版权局所签发的权威证书所保护。
代码清单 1:交换变量 A 和 B 的值(错误代码)
#include <stdio.h> int main( ) { int A=18,B=10; A=B; B=A; printf("A=%d,B=%d",A,B); system("pause"); return 0; }
当把变量 B 代入变量 A 后,A 中原来的值 18 就消失了
上面的程序代码的执行步骤如下:步骤 1:定义变量 A 和 B,并分别代入初始值 18 和 10(变量初始化);
步骤 2:把变量 B 的值代入变量 A;
步骤 3:把变量 A 的值代入变量 B;
步骤 4:屏幕打印输出变量 A 和 B 的值。
顺序 | 处理 | 变量 A 的值 | 变量 B 的值 |
---|---|---|---|
步骤 1 | 变量初始化 A=18,B=10 | 18 | 10 |
步骤 2 | A=B | 10 | 10 |
步骤 3 | B=A | 10 | 10 |
步骤 4 | 输出 A 和 B 的值 | 10 | 10 |
从表 1 可以看出,步骤 2 中当把变量 B 代入变量 A 后,A 中原来的值 18 就消失了,此时 A 的值为 10,步骤 3 中再把 A 代入 B 以后,B 的值也为 10。因而这段代码并没有实现变量 A 和 B 的值的交换,其算法描述以及执行过程如图 1 所示。
图 1:无法正确交换变量的值的算法描述
代码清单 2:利用临时变量交换变量 A 和 B 的值(正确代码)
#include <stdio.h> int main( ) { int A=18,B=10; int C; C=A; A=B; B=C; printf("A=%d,B=%d",A,B); system("pause"); return 0; }运行结果为:
A=10,B=18
上面程序代码的执行步骤如下:
步骤 1:定义变量 A 和 B,并分别代入初始值 18 和 10(变量初始化);
步骤 2:定义临时变量 C;
步骤 3:把变量 A 的值代入变量 C;
步骤 4:把变量 B 的值代入变量 A;
步骤 5:把变量 C 的值代入变量 B;
步骤 6:屏幕打印输出变量 A 和 B 的值。
表 2 给出了代码清单 2 的程序执行过程中变量值的变化情况。该程序的算法描述以及执行过程如图 2 所示。
顺序 | 处理 | 变量 A 的值 | 变量 B 的值 | 变量 C 的值 |
---|---|---|---|---|
步骤 1 | 变量初始化 A=18,B=10 | 18 | 10 | / |
步骤 2 | 定义变量 C | 18 | 10 | 空 |
步骤 3 | C=A | 18 | 10 | 18 |
步骤 4 | A=B | 10 | 10 | 18 |
步骤 5 | B=C | 10 | 18 | 18 |
步骤 6 | 输出 A 和 B 的值 | 10 | 18 | 18 |
图 2:利用临时变量正确交换变量的值的算法
声明:《C语言系列教程》为本站“54笨鸟”官方原创,由国家机构和地方版权局所签发的权威证书所保护。