V连殳 2021-09-27 20:33 采纳率: 100%
浏览 63
已结题

在switch和if语句的条件判断中,为什么不能使用这样的判断语句?

(我是大一新生,还请多多包涵。叩谢各位)
(并不是为了完成homework,是个人疑问,已经问过teacher,但是没有给我明确的回答,所以来问问看)
在日常敲代码中,我遇到了一个问题:先是在switch语句中,switch语句的判断条件只能是一个常量,我写了如下的代码

#include <iostream>

using namespace std;

int main()
{ char A;
   cout<<"请输入一个字母";
   cin>>A;
   switch(A)
    {case 'a'||'u'||'O'||'i'||'e' :cout<<"原音"<<endl;break;
    case  'q'||'w'||'r'||'t'||'y'||'p'||'s'||'d'||'f'||'g'||'h'||'j'||'k'||'l'||'z'||'x'||'c'||'v'||'b'||'n'||'m' :cout<<"辅音"<<endl;break;
    default :cout<<"不是英文字母" ;break;


    }

    return 0;


    }


但是并不能跑起来(我觉得用单引号引用后就是常量了)
我又换用了if语句,但是仍然不能正常运行,非常疑惑。
我个人感觉是不是因为用逻辑运算符后,前两个判断后变为1,再与后边的继续进行逻辑判断,如果是这样,那应该最终可以输出一个数字,但是也不能输出一个数字,就很疑惑。

  • 写回答

2条回答 默认 最新

  • 晓月清风・▽ ・ 2021-09-27 20:35
    关注

    case不可以用逻辑运算符

    应该是这样

    #include <iostream>
    using namespace std;
    int main()
    {
        char A;
        cout << "请输入一个字母";
        cin >> A;
        switch(A)
        {
            case 'a':
            case 'u':
            case 'o':
            case 'i':
            case 'e':
                cout << "原音" << endl;
                break;
            case 'q':
            case 'w':
            case 'r':
            case 't':
            case 'y':
            case 'p':
            case 's':
            case 'd':
            case 'f':
            case 'g':
            case 'h':
            case 'j':
            case 'k':
            case 'l':
            case 'z':
            case 'x':
            case 'c':
            case 'v':
            case 'b':
            case 'n':
            case 'm':
                cout << "辅音" << endl;
                break;
            default :
                cout << "不是英文字母";
                break;
        }
        return 0;
    }
    

    这样会感觉很麻烦,还不如用if

    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论
查看更多回答(1条)

报告相同问题?

问题事件

  • 系统已结题 10月5日
  • 已采纳回答 9月27日
  • 创建了问题 9月27日

悬赏问题

  • ¥15 求小游戏炸弹人中关于敌人的C++代码
  • ¥15 拿到这个服务器最高权限有偿
  • ¥50 来个抓app跳转支付宝转链接的
  • ¥15 remotes安装提示没有description文件
  • ¥15 AttributeError: 'NoneType' object has no attribute 'drop_duplicates'报错
  • ¥15 以下代码,运行结果报错
  • ¥15 Vivado仿真数据出错
  • ¥15 银河麒麟不支持vant等前端框架怎么办?
  • ¥15 vue3的子组件在父页面调用不显示不生效问题
  • ¥15 cadence PEX