【题目链接】
【题目考点】
1. if语句嵌套
2. if…else if语句
【解题思路】
-
if语句嵌套
如果a>=b,那么再判断b,c的大小:- 如果b>=c,那么a>=b>=c。
- 如果c > b,那么判断a,c的大小:
- 如果a更大,那么a>=c>=b
- 否则c>=a>=b。
如果b > a,那么判断a,c的大小:
- 如果a >= c,那么b>=a>=c。
- 如果c > a,那么判断b,c的大小:
- 如果b更大,那么b>=c>=a
- 否则,c>=b>=a
-
if…else if语句配合逻辑表达式
如果a>=b>=c,那么其逻辑表达式为:a >= b && b >= c
如果a>=c>=b,那么其逻辑表达式为:a >= c && c >= b
如果b>=a>=c,那么其逻辑表达式为:b >= a && a >= c
如果b>=c>=a,那么其逻辑表达式为:b >= c && c >= a
如果c>=a>=b,那么其逻辑表达式为:c >= a && a >= b
如果c>=b>=a,那么其逻辑表达式为:c >= b && b >= a
以上即为a,b,c所有排序对应的逻辑表达式,用if…else if语句列举所有情况,针对不同情况做输出。 -
降序排序
可以将这3个数字输入数组,做降序排序,而后输出。本题本意只是考察if语句,并非考察排序。对3个数字就用排序算法,有些杀鸡用牛刀了,因而这里不提供排序相关方法。如果想练习排序,请自行搜索排序相关的问题。
【题解代码】
解法1:if语句嵌套
#include<bits/stdc++.h>
using namespace std;
int main()
{
int a, b, c;
cin >> a >> b >> c;
if(a >= b)
{
if(b >= c)
cout << a << ' ' << b << ' ' << c << endl;
else
{
if(a >= c)
cout << a << ' ' << c << ' ' << b << endl;
else //a < c
cout << c << ' ' << a << ' ' << b << endl;
}
}
else//a < b
{
if(a >= c)
cout << b << ' ' << a << ' ' << c << endl;
else//a < c
{
if(b >= c)
cout << b << ' ' << c << ' ' << a << endl;
else//b < c
cout << c << ' ' << b << ' ' << a << endl;
}
}
return 0;
}
解法2:if…else if语句
#include<bits/stdc++.h>
using namespace std;
int main()
{
int a, b, c;
cin >> a >> b >> c;
if(a >= b && b >= c)
cout << a << ' ' << b << ' ' << c << endl;
else if(a >= c && c >= b)
cout << a << ' ' << c << ' ' << b << endl;
else if(b >= a && a >= c)
cout << b << ' ' << a << ' ' << c << endl;
else if(b >= c && c >= a)
cout << a << ' ' << c << ' ' << b << endl;
else if(c >= a && a >= b)
cout << c << ' ' << a << ' ' << b << endl;
else if(c >= b && b >= a)
cout << c << ' ' << b << ' ' << a << endl;
return 0;
}