如何将 If else 语句转换为 switch 语句
how to turn if else statement to a switch statement
我想知道如何将这个 if else 语句转换为 switch 语句。这是一个 C++ 程序,用于按正确的顺序放置整数。我想不出办法。请帮忙。提前谢谢你。
int x, y, z;
cout << "please enter three integers:";
cin >> x >> y >> z;
if (x <= y && y <= z)
cout << x << " " << y << " " << z << endl;
else if (x <= z && z <= y)
cout << x << " " << z << " " << y << endl;
else if (y <= z && z <= x)
cout << y << " " << z << " " << x << endl;
else if (y <= x && x <= z)
cout << y << " " << x << " " << z << endl;
else if (z <= x && x <= y)
cout << z << " " << x << " " << y << endl;
else
cout << z << " " << y << " " << x << endl;
if (x <= y) {
if (z <= x) {
cout << z << " " << x << " " << y << endl;
} else {
if (z <= y) {
cout << x << " " << z << " " << y << endl;
} else {
cout << x << " " << y << " " << z << endl;
}
}
} else {
if (z >= x) {
cout << y << " " << x << " " << z << endl;
} else {
if (y >= z) {
cout << z << " " << y << " " << x << endl;
} else {
cout << y << " " << z << " " << x << endl;
}
}
}
这不是编写程序的好方法。如果您需要 4 个整数怎么办?一种方法是使用像std::vector
这样的列表并对其进行排序。
vector<int> numbers;
int number = 0;
while (numbers.size() < 3 && cin >> number)
numbers.push_back(number);
sort(cbegin(numbers), cend(numbers)); // sorts ascending by default
for (auto number : numbers)
cout << number << " ";
cout << endl;
您还可以使用 std::multiset
在插入项目时自动对其项目进行排序。
与其使用
这种方法,不如将输入存储在数组中并尝试任何排序算法来对输入进行排序?
在您的特定情况下,答案是 you can't
,
您的 if 语句具有特定条件,其中,
在switch
内不会真正工作.
if
/else if
/else
语句的示例可以是
翻译成switch
将是:
if(i == 1) {
// code here
} else if(i == 2) {
// code here
} else if(i == 3) {
// code here
} else {
// code here
}
这将转化为:
switch(i) {
case 1:
//code here
break;
case 2:
//code here
break;
case 3:
//code here
break;
default:
//code here
break;
}
希望这有助于更多地了解switch
语句。
如果挑战在于您无法对数字进行排序,并且限制为 3 个整数,那么有更好的方法来完成您正在做的事情。
#include <iostream>
using namespace std;
int main()
{
int combo[6][3] = {{0,1,2},{0,2,1},{1,0,2},{1,2,0},{2,0,1},{2,1,0}};
int values[3];
cin >> values[0] >> values[1] >> values[2];
for (int i = 0; i < 6; ++i )
{
if ( values[combo[i][0]] <= values[combo[i][1]] &&
values[combo[i][1]] <= values[combo[i][2]] )
{
cout << values[combo[i][0]] << " " << values[combo[i][1]] <<
" " << values[combo[i][2]];
break;
}
}
}
组合数组包含 3 个插槽可能发生的所有组合。 另请注意,输入是一个数组。 即使你没有使用循环,你需要的最大 if() 语句也是 6。
但是,您应该提前提及这是一个挑战,以及限制是什么。 否则,请查看有关存储和排序这些数字的其他答案。
您只需要三个条件交换即可对三个元素的列表进行排序:
int x, y, z;
cout << "please enter three integers:";
cin >> x >> y >> z;
if (y < x) swap(y, x);
if (z < y) swap(z, y);
if (y < x) swap(y, x);
cout << x << " " << y << " " << z << endl;
请注意,此方法无法缩放。对于 10 个数字,您已经需要 45 个条件交换。
相关文章:
- 转换器练习:跳过 if 语句和 if 语句
- 不能在 if 语句 - c++ 中使用 void func 直接将字符串转换为大写
- "()"如何在C++中将语句转换为表达式?
- C++实用程序,用于将长开关语句转换为封装开关案例阶梯的简洁函数调用
- 如何强制 GCC 以线性方式转换易失性内联程序集语句
- switch 语句和对象隐式 int 转换
- 输入到字符串流并在单个语句中转换为字符串.可以没有帮助程序类
- 是否可以将结构与条件语句完全相同的字符串转换为可以读取和操作的语句?
- 如何将带有自动的语句转换为使用类型的语句
- C++转换为 C# 读取文本以生成语句
- 转换案例的重复语句
- 将 C 按位语句转换为 vb.net
- 如何将 If else 语句转换为 switch 语句
- 将printf语句转换为cout
- 将 cout 语句转换为 fwrite 函数
- 如何使用 malloc() 将 C 语句转换为 C++
- 将 C 中的按位语句转换为 Delphi
- 在 C++ 中将 if, else if, else 语句转换为 switch 语句
- 如何使用Arduino将GPS NEMA语句转换为字符串
- 如何将下面的C++语句转换为Java