【问题标题】:I have a problem with switch statement, in a c++ program我在 C++ 程序中的 switch 语句有问题
【发布时间】:2020-11-06 09:39:58
【问题描述】:

嗨,我用开关做了一个程序,如果我输入一个字符来告诉我是元音还是辅音如果是字母来告诉我是奇数还是数字我不明白问题出在哪里条件是必须使用开关。 问题是:它没有给我任何错误,但是当我输入一个字母时,它还会显示该字母是偶数还是奇数。我该如何解决这个问题?

  char n;
  cout<< "Input character : "; cin>>n;
  switch(n){
  case 'A':
  case 'a':
  case 'E':
  case 'e':
  case 'I':
  case 'i':
  case 'O':
  case 'o':
  case 'U':
  case 'u':
  cout<<n<< " vowel ."<<endl; break;
  case 'B':case 'b':case 'C':case 'c':case 'D':case 'd':
  case 'F':case 'f':case 'G':case 'g':case 'H':case 'h':
  case 'J':case 'j':case 'K':case 'k':case 'L':case 'l':
  case 'M':case 'm':case 'N':case 'n':case 'P':case 'p':
  case 'Q':case 'q':case 'R':case 'r':case 'S':case 's':
  case 'T':case 't':case 'V':case 'v':case 'W':case 'w':
  case 'X':case 'x':case 'Y':case 'y':case 'Z':case 'z':
  cout<<n<< " is consonant ."<<endl; break;
  }

  switch(n%2 ==0){
  case 0: cout<<n<< " is even"; break;
  case 1: cout<<n<< " is odd"; break;
  default:cout<<n<< " is simbol"<<endl; break;
  }

【问题讨论】:

  • 提示:char 只是一个整数值,n%2 只有两种可能的结果:0 或 1,在第二个开关中不能命中默认大小写。您需要找到一种方法来确定n 代表的是数字还是字母。
  • 您需要嵌套 switch 语句。此外,标准库中有各种函数用于检查字符是否为字母、大写、小写、数字等。使用这些函数将大大简化您的代码。
  • 例如,有哪些功能?
  • 提供minimal reproducible example 会很有帮助。您可以使用 godbolt.org 。详细描述所需的行为也会有所帮助。

标签: c++ c++11 c++14 c++17 codeblocks


【解决方案1】:

我想这就是你想要的。永远不会写入文本“is simbol”。随意添加它。 :-)

#include <iostream>
#include <ostream>

int main(void)
{

    char n;
    std::cout << "Input character : "; std::cin >> n;
    switch (n)
    {
    case 'A':
    case 'a':
    case 'E':
    case 'e':
    case 'I':
    case 'i':
    case 'O':
    case 'o':
    case 'U':
    case 'u':
        std::cout << n << " vowel ." << std::endl; break;
    case 'B':case 'b':case 'C':case 'c':case 'D':case 'd':
    case 'F':case 'f':case 'G':case 'g':case 'H':case 'h':
    case 'J':case 'j':case 'K':case 'k':case 'L':case 'l':
    case 'M':case 'm':case 'N':case 'n':case 'P':case 'p':
    case 'Q':case 'q':case 'R':case 'r':case 'S':case 's':
    case 'T':case 't':case 'V':case 'v':case 'W':case 'w':
    case 'X':case 'x':case 'Y':case 'y':case 'Z':case 'z':
        std::cout << n << " is consonant ." << std::endl; break;

    case '0':
    case '2':
    case '4':
    case '6':
    case '8':
        std::cout << n << " is even"; break;

    case '1':
    case '3':
    case '5':
    case '7':
    case '9':
        std::cout << n << " is odd"; break;
    }
}

【讨论】:

  • 执行错误。为什么要在同一个 switch 语句中检查偶数/奇数和誓言/辅音。
  • 是的,但我需要显示任何数字,如果是奇数或偶数,而不仅仅是前 9
【解决方案2】:

对于简单的元音/辅音:

char n;
cin >> n;
switch(n){
    case 'A': case 'a': case 'E': case 'e': case 'I': case 'i': case 'O': case 'o':
    case 'U': case 'u':
    cout << " IS VOWEL \n";
    // Any other alphabet except a,e,i,o,u is consonant.
    default: cout << "IS Consonant\n";
}

对于偶数奇数,你可以使用这个:

如果您想从用户那里获取另一个数字输入,请检查偶数/奇数

int num;
cin >> num;
num = num%2;

Else 想检查 char n 的 ascii 是偶数/奇数

int num = int(n)%2; // n is the char declared above and int(num) is ascii of n

以下是通用 switch 语句:

switch(num)
{
    case 0: cout << "Number is Even\n"; break;
    case 1: cout << "Number is Odd\n"; break;
}
// This will be generic

【讨论】:

  • 我想从一个 cin 中检测它的元音、辅音、偶数还是奇数>>
  • 基本上我想要做的是引入一个字符,如果它的字母检测是元音还是辅音,或者如果它的数字检测它在单个程序中是奇数还是偶数,使用 switch
  • 我的程序会这样做,但会自动检查字母在 ASCII 中是偶数还是奇数
  • 如何检查数字是偶数/奇数。您在开始时定义类型 char 。那么,您想检查该数字的 ascii 是否为奇数?
  • 不,我想检查我介绍的数字是奇数还是偶数
猜你喜欢
  • 2010-12-20
  • 1970-01-01
  • 1970-01-01
  • 2020-06-17
  • 2018-10-07
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多