c++ - 使用 if 语句对 3 个数字进行排序
问题描述
我很抱歉我的英语不好,我会尽力让你理解我:) 我正在从 Stroustrup 的书中学习 C++,我正在尝试使用 if 语句对 3 个数字进行排序来做这个练习。我认为我在编写这段代码方面做得很好,至少我是这么认为的。我在纸上做了一些计算,所以我可以更好地理解它,我想出了这个代码:
#include <iostream>
int main()
{
int val1;
int val2;
int val3;
std::cout << "Please enter the 1st number: ";
std::cin >> val1;
std::cout << "Please enter the 2nd number: ";
std::cin >> val2;
std::cout << "Please enter the 3rd number: ";
std::cin >> val3;
if (val1 > val2)
{
if (val2 > val3)
{
std::cout << val3 << ' ' << val2 << ' ' << val1;
}
else
{
if (val1 > val3)
std::cout << val2 << ' ' << val3 << ' ' << val1;
else
std::cout << val2 << ' ' << val1 << ' ' << val3;
}
}
else
{
if (val2 > val3)
{
if (val3 > val1) std::cout << val1 << val3 << val2;
else std::cout << val3 << val1 << val2;
}
else
{
std::cout << val1 << val2 << val3;
}
}
我的问题是:我能做些什么来改进这段代码吗?我已经尝试了几乎所有我能做的事情,但是我不能让它有更少的 if 语句,我不知道这是否是我能通过这个练习得到的最少的如果,请帮助我:)
解决方案
这是一个简单的方法,它以类似“冒泡排序”的方式工作
#include <utility>
#include <iostream>
int main() {
int a, b, c;
a = 5; b = 3; c = 4;
if ( a > b ) std::swap( a, b );
if ( b > c ) std::swap( b, c );
if ( a > b ) std::swap( a, b );
std::cout << a << ", " << b << ", " << c << std::endl;
}
推荐阅读
- swift - 在用户放大和缩小时调整 MKAnnotationView
- python - 如何通过for循环将多索引系列附加到数据帧
- python - TensorFlow 中的变量到底是什么,我们为什么要使用它们?
- firebase - 在实时数据库或firebase中的firestore之间使用哪个更好?
- c# - 使用 String.StartsWith() 时出现 NullReferenceException
- css - 为什么最后一个层次结构不擦除第一个层次结构?
- javascript - 如何比较两个数组并返回 JavaScript 中的差异
- angular - 如何根据查询参数更改路由或组件
- java - 尝试运行 Chromedriver 时我的配置有什么问题?(智能 / 弹簧)
- python - AWS Elastic Beanstalk Django 配置文件异常