a=b;//把变量b的值赋给变量a,a的值等于b的值
b=a;//再把变量a的值赋给变量b,变量b的值没有改变
因此为了实现交换,必须借助于第三个变量;
t=a;
a=b;
b=t;
借助变量t,实现变量a和变量b互换值
【例】输入3个数a,b,c,要求按由小到大的顺序输出。
算法步骤
S1:if a>b,将a和b对换(交换后,a是a、b中的小者)
S1:if a>c,将a和c对换(交换后,a是a、c中的小者)
S3:if b>c,将b和c对换(交换后,b是b、c中的小者)
S4:顺序输出a,b,c的值
在经过第一次交换值后,a<=b,经过第二次交换值后a<=c,这样a已是三者中最小的(或最小者之一),但是b和c谁大还未解决,还需要进行比较和互换。经过第三次互换值后,a<=b<=c。
#include <stdio.h>int main() {
int a,b,c,t;
printf("输入三个实数a、b、c分别为:");
scanf("%d,%d,%d",&a,&b,&c);
printf("由小到大排列为:");
if(a>b) {
t=a; //借助变量t,实现变量a和变量b互换值
a=b;
b=t;
} //互换后,a小于或等于b
if(a>c) {//借助变量t,实现变量a和变量c互换值
t=a;
a=c;
c=t;
} //互换后,a小于或等于c
if(b>c) {//借助变量t,实现变量b和变量c互换值
t=b;
b=c;
c=t;
} //互换后,b小于或等于b
printf("%d,%d,%d\n",a,b,c);//顺序输出a,b,c的值
return 0;
}