问题标题: 酷町堂:小王课堂开课了~

3
2
已解决
王子健
王子健
初级天翼
初级天翼

哈喽大家好,我以后每天会带来一个C++知识运用和习题(可能会停更)

今天带来switch用法:

主要格式如下

switch (表达式) {
        case 常量表达式1:[语句组1][break;]
        ......
        case 常量表达式n:[语句组n][break;]
        default: [语句组n+1] 
    }

switch和if的功能差不多,因为很少用,所以今天讲它

功能:首先计算表达式的值。case后面的常量表达式值逐一与之匹配,当某一个case分支中的常量表达式值与之匹配时,则执行该分支后面的语句组。然后顺序执行之后的所有语句,直到遇到break语句或switch语句的右括号为止。如果switch语句中包含default。表示表达式与各分支常量表达式的值都不匹配时。执行后面的语句组,通常将default放在最后。

规则:

(1)合法的switch语句中的表达式其取值只能是整形,字符型,布尔型或枚举型。

(2)常量表达式是由常量组成的表达式,值的类型与表达式的类型相同。

(3)任意两个case后的常量表达式值必须各不相同,否则将引起歧义。

(4)语句组可以是一个语句,也可以是一组语句。

 

 

 

例题[1.0]

一个最简单的计算器支持+、-、*、/四种运算。输入只有一行:两个参加运算的数和一个操作符。输出运算表达式及结果。考虑下面两种情况:

(1)如果出现除数为0,则输出:Divided by zero!

(2)如果出现无效操作符,则输出:Invalid operator!

 

分析:num1、num2存放数字,op存放操作符

当op为‘+’时计算加法,为‘-’计算减法...以此类推,到最后op不是以上操作符中的一个时,输出:Invalid operator

 

代码分析:

#include <iostream>
#include <cstdio>
using namespace std;
int main() {
    double num1, num2;
    char op;
    cin >> num1 >> num2 >> op;
    switch (op) {
        case'+' : cout << num1 << op << num2 << '=' << num1 + num2 << endl; break;
        case'-' : cout << num1 << op << num2 << '=' << num1 - num2 << endl; break;
        case'*' : cout << num1 << op << num2 << '=' << num1 * num2 << endl; break;
        case'/' : if (num2 != 0) cout << num1 << op << num2 << '=' << num1 / num2 << endl;
        else cout << "Divided by zero!" << endl; break;
        default :cout << "Invalid operator!";
    }
    return 0;
}

这就是今天课程讲解,以下是作业部分:

恩格尔系数(Engel's Coefficient)

食品支出总额占个人消费支出总额的比重。19世纪德国统计学家恩格尔根据统计资料,对消费结构的变化得出一个规律:一个家庭收入越少,家庭收入中(或总支出中)用来购买食物的支出所占的比例就越大,随着家庭收入的增加,家庭收入中(或总支出中)用来购买食物的支出比例则会下降。恩格尔系数达59%以上为贫困,50~59%为温饱,40~50%为小康,30~40%为富裕,低于30%为最富裕。请你编写程序,写出这个计算的方式。输入两个数,为食品支出和总支出,请计算这个家庭是属于贫困、温饱、小康、富裕还是最富裕

 

样例输入:

2100 5000

样例输出:

这个家庭属于小康

 

数据范围:

1000<=x,y <= int范围

 

此题不是酷町堂题目,是自己出题,第一个用switch写出拿走豆豆,2天之内没人写出第一个用if写的拿走豆豆


0
已采纳
董宇昊
董宇昊
初级启示者
初级启示者

break可以省掉,还有

你确定作业会有人做?(除了你自己)

董宇昊在2020-06-25 20:59:53追加了内容

#include<iostream>
#include<cstdio>
#include<cmath>
#include<algorithm>
#include<cstring>
#include<string>
using namespace std;
int main(){
    int a,b,c;
    cin>>a>>b;
    c=a*10/b;
    switch(c){ 
        case 1:
            cout<<"这个家庭属于最富裕";break; 
        case 2:
            cout<<"这个家庭属于最富裕";break; 
        case 3:
            cout<<"这个家庭属于富裕";break; 
        case 4:
            cout<<"这个家庭属于小康";break; 
        case 5:
            cout<<"这个家庭属于温饱";break; 
        default:
            cout<<"这个家庭属于贫困";break; 
    }
    return 0;
}
 

0
许金夫
许金夫
初级天翼
初级天翼

哦,interesting,我考完试再来写

0
0
董子墨
董子墨
中级天翼
中级天翼

你这个题目不是很简单吗

#include<iostream>
using namespace std;
int a,b,t;
int main(){
    cin>>a>>b;
    t=a*10/b;
    switch(t){
        case 5:cout<<"这个家庭属于温饱";break;
        case 4:cout<<"这个家庭属于小康";break;
        case 3:cout<<"这个家庭属于富裕";break;
        case 2:cout<<"这个家庭属于最富裕";break; 
        case 1:cout<<"这个家庭属于最富裕";break; 
        default:cout<<"这个家庭属于贫困";break;
    }
    return 0;
}

 

0
被禁言 何冯成
何冯成
中级光能
中级光能
#include<iostream>
using namespace std;
int a,b,x;
int main(){
    cin>>a>>b;
    x=a*10/b;
    switch(x){
        case 5:cout<<"这个家庭属于温饱";break;
        case 4:cout<<"这个家庭属于小康";break;
        case 3:cout<<"这个家庭属于富裕";break;
        case 2:cout<<"这个家庭属于最富裕";break; 
        case 1:cout<<"这个家庭属于最富裕";break; 
        default:cout<<"这个家庭属于贫困";break;
    }
    return 0;
}

 

0
黄子澄
黄子澄
中级天翼
中级天翼

你课对于有些人来说太难了

0
潘晨皓
潘晨皓
高级天翼
高级天翼

哦吼!提前预习了!我先复制一下(虽然看不懂。。。)

0
邹昊轩
邹昊轩
资深光能
资深光能

好滴,免费学习班!!!太棒楼

0
赵逸凡
赵逸凡
初级启示者
初级启示者

emmmm...你不说我还差点忘了switch语句怎么用了(4年前啊)

0
黄子扬
黄子扬
初级天翼
初级天翼

switch。。。同@赵逸凡,四年前的事了

您能别复制或搬题吗?能说点实用的吗?

我要回答