程序显示1到100 C ++之间的所有7的倍数

问题描述 投票:-11回答:3

如何使用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;
}
c++ switch-statement
3个回答
1
投票

您正在寻找的代码应该是这样的:

#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

0
投票

这个给你:

#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;
}

在线编译:http://ideone.com/uq8Jue


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}

0
投票

对于您的情况,可以用if语句替换switch/case语句。但我认为你对使用ifswitch/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类型的变量时,你可能至少得到一个编译器警告,如果你不检查所有可能的流量的变量。

© www.soinside.com 2019 - 2024. All rights reserved.