关于switch case语句的问题

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了关于switch case语句的问题相关的知识,希望对你有一定的参考价值。

就是说如果一些内容很难归类,就是说用case归纳不全,比如1000-2000之内打9折,我总不可能case1111 case1112这样一条一条归类过去吧,这怎么设置啊?!

#include <iostream>
using namespace std;
int main()

    double Hour,PayPer,Pay;
    do
    
        cout<<"输入工作时数及单位时间基本工资:";
        cin>>Hour>>PayPer;
        bool f1=(Hour>40);
        bool f2=(Hour>50);
        switch(f1)
        
            case 0:
            Pay=Hour*PayPer;
            cout<<"输出:"<<Pay<<endl;
            break;
            case 1:
            switch(f2)
            
            case 0:
                    Pay=40*PayPer+(Hour-40)*1.5*PayPer;
                    cout<<"输出:"<<Pay<<endl;
                    break;
            case 1:
                    Pay=40*PayPer+10*1.5*PayPer+(Hour-50)*3*PayPer;
                    cout<<"输出:"<<Pay<<endl;
                    break;
            
            break;
        
    while(Hour!=0&&PayPer!=0);
    return 0;

参考我的这个代码,题目在
http://zhidao.baidu.com/question/494793277752591964.html?oldq=1
满意记得采纳哦!

参考技术A 错误是:每个case
语句必须包含一个常量表达式做其变量,这个值不能在switch
语句的各级中出现
多次
意思是switch()

case(a);
case(b);

a和b的值不能相等,15||-3||12结果为真(即为1)-15||3||-12结果为真(即为1),两个1重复了,所以报错。建议改为
switch
(b)

case
(15):
cout<<"
The
winner
is
player1!";
break;
case
(-3):
cout<<"
The
winner
is
player1!";
break;
case
(12):
cout<<"
The
winner
is
player1!";
break;
case
(-15):
cout<<"The
winner
is
player2!";
break;
case
(3):
cout<<"The
winner
is
player2!";
break;
case
(-12):
cout<<"The
winner
is
player2!";
break;
default:
cout<<"Both
of
you
are
winners!";
参考技术B 确实不行。编译器报错(case label does not reduce to an integer constant)

如果硬要用switch-case,只能另外设定一个变量b, 当a在[1000,2000]区间里面的时候赋值b=1;
if(a<=2000 && a>=1000)b=1;

switch(b)
case 1: p=p*0.9;

case 2: ............;

.........
.........本回答被提问者采纳
参考技术C int n;
float price;
if (1000<price&&price<2000) n=4;
这种方式来设置
参考技术D case 1000 ... 2000 : 解决

switch case的用法

参考技术A

switchcase的用法如下:

1、Switch用在编程中,如C语言中它经常跟Case一起使用,是一个判断选择代码。其功能就是控制流程流转的。直线翻译:switch语句,即“切换”语句;case即“情况”。

2、switch语句一行接一行地执行(实际上是语句接语句)。开始时没有代码被执行。仅当一个case语句中的值和switch表达式的值匹配时php才开始执行语句,直到switch的程序段结束或者遇到第一个break语句为止。如果不在case的语句段最后写上break的话,php将继续执行下一个case中的语句段。

3、在switch语句中条件只求值一次并用来和每个case语句比较。在elseif语句中条件会再次求值。如果条件比一个简单的比较要复杂得多或者在一个很多次的循环中,那么用switch语句可能会快一些。

4、switch语句执行时会从上到下根据括号中表达式的值作比较,当某个case语句中的表达式与此值相同时,就执行这个case语句或语句序列,直到遇到break为止。

扩展资料:

在C#中,switch语句的控制表达式只能是某个整形(int,char,long等)或string。其他任何类型(包括float和double类型)只能用if语句。

每个constantExpression值都必须唯一,使controllingExpression只能与它们中的一个匹配。如果controllingExpression的值和任何controllingExpression的值都不匹配,也没有default标签,程序就从switch的结束大括号之后的第一个语句继续执行。

参考资料来源:百度百科-switch

以上是关于关于switch case语句的问题的主要内容,如果未能解决你的问题,请参考以下文章

关于switch语句,case和default的执行顺序,

关于switch中case的用法!

switch...case语句嵌套问题

switch case语句和if的区别

switch case语句总执行第一个case

写switch case语句不加break会怎样