如何使用switch
条件语句而不是if
编写此程序?
#include <iostream>
using namespace std;
int main()
{
int i;
for (i = 1; i <= 100; i++) {
if ((i % 7 == 0) && (i > 0)) {
cout << i << endl;
}
}
return 0;
}
您正在寻找的代码应该是这样的:
#include <iostream> // this is for std::cin and std::cout (standard input and output)
using namespace std; // to shorten std::cout into cout
int main() {
cout << "multiples of 7 lower than 100 are:" << endl;
for ( int i=1 ; i<=100 ; i++ ) {
switch ( i%7 ) {
case 0: // this case 0 is similar to if ( i%7 == 0 )
cout << i << " ";
break;
default:
break;
}
}
cout << endl;
return 0;
}
输出将是:
multiples of 7 lower than 100 are:
7 14 21 28 35 42 49 56 63 70 77 84 91 98
这个给你:
#include <iostream>
int main()
{
for (int i = 1; i<=100; i++)
{
switch(i % 7)
{
case 0:
std::cout << i << std::endl;
break;
default:
break;
}
}
return 0;
}
听起来你对switch语句有点不熟悉。 switch语句类似于if-else语句,除了它不是布尔参数。所以基本上它问:告诉我的价值。然后对于每个案例(可能的结果),它都有一个后续行动。
所以你想问:告诉我数字的值,模数7.如果它是零,加一个到计数器。如果是1,那么。
所以你的代码应该有一个通用的结构:
Switch(i%7):
Case 0{increment counter or display to std. out or store in array}
Case 1{other action}
对于您的情况,可以用if
语句替换switch/case
语句。但我认为你对使用if
和switch/case
声明的地方有一些误解。我建议你使用这个陈述,因为它们在现实生活中使用。
如果你要检查病情,请使用if
。例如:
if (a > b){...}
或if (a == 7){...}
或if (functionReturnsTrue()){...}
当您有一组条件并且该集合中的每个元素的逻辑不同时,可以使用switch/case
语句。例如:
enum HttpMethod {
GET,
POST,
PUT,
DELETE,
};
...
void handleHttpRequest(HttpRequest req)
{
...
switch(req.getHttpMethod())
{
case GET: handleGETRequest(req); break;
case POST: handlePOSTRequest(req); break;
case PUT: handlePUTRequest(req); break;
case DELETE: handleDELETERequest(req); break;
default: throw InvalidHttpMethod(); // in case when noone corresponds to the variable
}
}
当然,您可以使用if
语句编写相同的内容,但switch/case
语句也有一些编译效果。当你switch
enum
类型的变量时,你可能至少得到一个编译器警告,如果你不检查所有可能的流量的变量。