共同点:都是中间变量,都可以重复拿来做中转站使用
不同点:排序的题目中,中间变量只是做中转站作两个变量交换值用来,并不是要用来保存最终要输出的值
而找出最大数或者最小数的题目中,中间变量不但做交换用的中转站,还要保存程序最终要输出的值
也可以从程序的最终输出printf()语句中看出区别
1、【输入abc三个整数,并从大到小排序输出】中间变量只是做中转站,不是用来保存最终要输出的值
//输入abc三个整数,并从大到小排序输出
#include<stdio.h>
#include<stdlib.h>
int main(){
int a, b, c; //用三个变量a, b, c分别存储最大的值,第二大的值,最小的值
int t; //中间变量,每次交换中都可以拿来用,是可以重复拿来用的,目的只是交换两个变量的值,而不是用来保存最终要输出的值
printf("Please type three integers:\n");
scanf("%d %d %d", &a, &b, &c);
//先确保a中放的是三个数中最大的值(a要分别与b 和c 比较)
if(a<b){
t = a;
a = b;
b = t;
}
if(a<c){
t = a;
a = c;
c = t;
}
//确保b中放的是剩下2个数b和c中最大的值(即第二大的数)
if(b<c){
t = b;
b = c;
c = t;
}
//a,b,c已经从大到小排好序了,输出即可
printf("%d, %d, %d", a, b, c);
return 0;
}
2、【输入三个整数,找出三个数中最大的数】中间变量要用来保存最终输出的值,并且程序最后输出其保存的值
//输入3个数,找出最大的数
#include<stdio.h>
#include<stdlib.h>
int main(){
int a, b, c;
int max; //中间变量,保存三个数abc中最大的数,不但要做中转站来使用,用来保存最终输出的值,并且程序最后输出其保存的值
printf("Please input three integers:\n");
scanf("%d %d %d", &a, &b, &c);
//先处理第一个和第二个数a和b,找出哪个最大并放到max中间变量中
if(a > b){ //首选找出前面两个数中最大的那个
max = a;
}else{ //a > b 不成立的情况 ——> 即 b >= a
max = b;
}
//找出了前两个数ab中最大的那个数并放到max中后,进一步考虑max和第三个数的关系
if(c > max){
max = c;
}
printf("最大的数是:%d", max);
return 0;
}