一、switch语句

问题:风之巅小学规定,若测试成绩大于或等于90分为“A”,大于或等于70分小于90分为“B”,大于或等于60分小于70分为“C”,60分以下为“D”。试编一程序,输入一个成绩,输出它的等级。

流程图如下:

#include <typeinfo>    //变量类型头文件,还是有问题;无法判断int
#include <iostream> //包含输入输出流头文件iostream
using namespace std; //指明程序 使用命名空间std(标准)
int main()
{
int n;
char score;
cout<<"请输入分数:";
cin>>n;
if (n>=90)
score='A';
else if (n>=70)
score='B';
else if (n>=60)
score='C';
else score='D';
cout<<score;
return 0;
}

用if语句处理多个分支时需使用if-else-if结构,分支越多,嵌套的if语句层就越多,程序不但庞大而且理解也比较困难。

C++提供了一个专门用于处理多分支结构的条件选择语句,称为switch语句,又称开关语句。它可以方便地实现深层嵌套的if-else逻辑。

switch语句一般使用如下格式:

switch (表达式)

{

case 常量表达式1:语句1;break;

case 常量表达式2:语句2;break;

..........

case 常量表达式n:语句n;break;

default:语句n+1;break;

}



先计算switch表达式的值,当表达式的值与某一个case子句中的常量表达式相匹配时,就执行此case子句中的内嵌语句,并顺序执行之后的所有语句,直到遇到break语句为止;若所有的case子句中常量表达式的值都不能与switch表达式的值相匹配,就执行default子句的内嵌语句。switch后面括号内的表达式,可以是整型、字符型、布尔型。每一个case 表达式的值必须互不相同,否则就会出现互相矛盾的现象。若各个case和default子句中都有break语句,则他们的出现次序不影响执行结果;case子句中可以包含多个执行的语句,不必用花括号括起来。

成绩等级程序可以用分支switch语句来编写,流程图如:

#include <typeinfo>    //变量类型头文件,还是有问题;无法判断int
#include <iostream> //包含输入输出流头文件iostream
using namespace std; //指明程序 使用命名空间std(标准)
int main()
{
int n;
char score;
cout<<"请输入分数:";
cin>>n;
switch (n/10) //n、10是整型,n/10也是整型
{
case 10:
case 9:
score='A';break;
case 8:
case 7:
score='B';break;
case 6:
score='C';break;
case 5:
case 4:
case 3:
case 2:
case 1:
case 0:
score='D';break;
default:
score='32';break; //一个空格赋值给score
}
cout<<score;
return 0;
}

英汉小词典:

switch 条件选择;开关

case 情况

break 终止

default 默认;系统默认值

练习

(1)目前计算机芯片(集成电路)制造的主要原料是(),它是一种可以在沙子中提炼出的物质。

      A.铜             B.硅            C.锗            D.铝

(2)阅读程序写结果。

#include <iostream>
using namespace std;
int main()
{
int m, n, ans;
cin>>m>>n;
switch(n)
{
case 0: ans=1; break;
case l: ans=m; break;
case 2: ans=m*m; break;
case 3: ans=m*m*m;break;
case 4: ans=m*m*m*m; break;
default: ans=-1; break;
if(ans==-1)cout <<"???"<<endl;
else cout << ans << endl;
return 0;
}

输入:53

m,n,ans输出:__________________

(3)编写程序程序。

风之巅小学为了激发同学们学习古诗文的兴趣,举行了古诗词知识竞赛活动。比赛时,选手可以从一组3个题目中选一题回答,请为下面一组题目设计一个小程序。如输入1,则输出1号题。

(1)、()带雨晚来急,野渡无人舟自横。

(2)、忽如一夜()来,千树万树梨花开。

(3)、()满园关不住,一枝红杏出墙来。

二、switch语句的应用

例程:给“王宅六味”按1~6编号,试编一个菜名查询程序,输入编号输出菜名。(浙江省金华市的王宅,有着源远流长的农耕文化,也有着令人垂涎的美味,

其中“寿仙菇、酒糟芋、下山笋、太师豆腐、 孝子鱼、猪全福” 流传最久最广,称为“王宅六味”。)

#include <iostream>    //包含输入输出流头文件iostream
#include <ctime> //需要调用time()函数
#include <cstdlib> //需要调用srand()和rand()函数
using namespace std; //指明程序 使用命名空间std(标准)
int main()
{
int n;
cout<<"请输入编号:";
cin>>n;
switch(n)
{
case 1:
cout<<"寿仙姑"<<endl; break;
case 2:
cout<<"酒糟芋"<<endl; break;
case 3:
cout<<"下山笋"<<endl; break;
case 4:
cout<<"太师豆腐"<<endl; break;
case 5:
cout<<"孝子鱼"<<endl; break;
case 6:
cout<<"猪全福"<<endl; break;
default:
cout<<"无此编号的菜"<<endl; break;
}
return 0;
}

switch 语句在使用时需注意:若把编号n定义成float 型数据,程序就要出错。因为若n是浮点数,则它的个数是不可以枚举的,当然写不出常量表。

练习

(1) Windows是一种()。

A.字处理系统

C.数据库系统

B.操作系统

2.阅读程序写结果。

D.图像处理系统

(2)阅读程序写结果

注:输入年月日,自动计算出是一年中的第几天。

#include <iostream>    //包含输入输出流头文件iostream
#include <ctime> //需要调用time()函数
#include <cstdlib> //需要调用srand()和rand()函数
using namespace std; //指明程序 使用命名空间std(标准)
int main()
{
int day,month,year,sum,leap;
cin>>year>>month>>day;
switch(month)
{
case 1:
sum=0; break;
case 2:
sum=31; break;
case 3:
sum=59; break;
case 4:
sum=90; break;
case 5:
sum=120; break;
case 6:
sum=151; break;
case 7:
sum=181; break;
case 8:
sum=212; break;
case 9:
sum=243; break;
case 10:
sum=273; break;
case 11:
sum=304; break;
case 12:
sum=334; break;
default:
cout<<"输入有误!"; break;
}
sum+=day;
//判断是否为闰年
if (year%4==0 || (year%4==0 && year%100!=0))
leap=1;
else
leap=0;
//是闰年,且月数大于2;天数加1.
if (leap==1 && month>2)
sum++;
cout<<sum<<endl;
return 0;
}

输入:2018 8 8

year,month,day,leap,sum的输出:_______________________________

(3)完善第18、28行程序。

简单的计算器,输入两个数和一个四则运算符,输出其计算结果。

 5 #include <iostream>    //包含输入输出流头文件iostream
6 #include <ctime> //需要调用time()函数
7 #include <cstdlib> //需要调用srand()和rand()函数
8 using namespace std; //指明程序 使用命名空间std(标准)
9 int main()
10 {
11 float x,y,ans;
12 char f;
13 cout<<"请输入两个数:";
14 cin>>x>>y;
15 cout<<"请输入一个运算符:";
16 cin>>f;
17 ans=0;
18 switch( )
19 {
20 case '+':
21 ans=x+y; break;
22 case '-':
23 ans=x-y; break;
24 case '*':
25 ans=x*y; break;
26 case '/':
27 {
28 if ( )
29 ans=x/y;
30 else
31 {
32 cout<<"除数不能为0"<<endl;
33 break;
34 }
35 }
36 }
37 if (f!='/' || y!=0)
38 cout<<ans<<endl;
39 return 0;
40 }

三目运算符

三目运算符(也称为条件运算符)在C++中的一般形式是:

condition ? expr1 : expr2;

其中condition是一个返回布尔值的表达式,expr1和expr2可以是任意表达式。如果condition为真,则执行expr1,否则执行expr2。

下面是一个使用三元运算符的简单例子:

#include <iostream>
int main() {
int a = 10;
int b = 20;
int max = (a > b) ? a : b;
std::cout << "Max value is: " << max << std::endl;
return 0;
}

10C++选择结构(4)的更多相关文章

  1. 黑马程序员——C语言基础 流程控制 选择结构和循环结构

    ---恢复内容开始--- Java培训.Android培训.iOS培训..Net培训.期待与您交流! (以下内容是对黑马苹果入学视频的个人知识点总结) (一)流程控制 1> 顺序结构:默认的流程 ...

  2. C语言中的循环结构与选择结构

    1. 为什么使用循环? 重复执行某段代码 2. while(条件){ 循环体: } 当条件成立的时候就执行循环体,条件不成立,就退出循环,继续执行while后面的语句 3. for ( 初始表达式 : ...

  3. C- 流程控制(顺序结构,选择结构,循环结构)

    一.选择结构 1.if 特点: 同一时刻,只有一个大括号里面的代码会被执行 2,switch 特点 默认情况下,只有一个case后面的代码会被执行 如果一个case后面没有break,而且这个case ...

  4. 160809212田京诚C语言程序设计实验2 选择结构程序设计_进阶

    实验2-6 猜数字游戏 实验要求: 编写一个C程序实现一个[1-100]以内的猜数字游戏. (1)       系统随机产生一个[1-100]之间的随机数. (2)       输入任意一个数字.数字 ...

  5. 160809209_李梦鑫_C语言程序设计实验2+选择结构程序设计_进阶

    <C语言程序设计>实验报告 学 号 160809209 姓 名 李梦鑫 专业.班 计科16-2班 学    期 2016-2017 第1学期 指导教师 黄俊莲 吴喆 实验地点 C05 机 ...

  6. Java 第四章 选择结构2

    第四章 选择结构 (二) switch 选择结构的执行流程是怎样的? switch 选择结构中break关键字的作用? 本章目标 掌握 switch 选择结构 能够综合运用 if 选择结构 和 swi ...

  7. Java 第三章 选择结构1

    选择结构(一) 会使用基本的 if 选择结构 掌握逻辑运算符,掌握多重 if 选择结构 , 掌握嵌套 if 选择 结构 为什么需要 if 选择结构 例如: 如果张浩的 java 考试成绩大于 98分, ...

  8. Chrome弹窗的简单应用(选择结构与循环结构)

    ★选择结构★ ★JS实现弹窗显示随机数 示例代码效果图   ★ 弹窗实现对随机数的进一步判断 示例代码效果图 ★综合应用   比较大小 ★ 判断成绩等级 ): : : : : alert(" ...

  9. Java语法基础(三)----选择结构的if语句、switch语句

    [前言] 流程控制语句: 在一个程序执行的过程中,各条语句的执行顺序对程序的结果是有直接影响的.也就是说程序的流程对运行结果有直接的影响.所以,我们必须清楚每条语句的执行流程.而且,很多时候我们要通过 ...

  10. java中的if-Switch选择结构

    字随笔走,笔随心走,随笔,随心.纯属个人学习分析总结,如有观者还请不啬领教. 1.if选择结构 什么是if结构:if选择结构是根据判断结果再做处理的一种语法结构. 起语法是: if(判断条件){ 操作 ...

随机推荐

  1. 痞子衡嵌入式:如果i.MXRT离线无法启动,试着分析ROM启动日志

    大家好,我是痞子衡,是正经搞技术的痞子.今天痞子衡给大家介绍的是恩智浦i.MXRT系列MCU的ROM启动日志. 关于 i.MX RT 启动问题解决的文章,痞子衡写过非常多,其中大部分都是具体到某一类启 ...

  2. SXYZ-12天集训

    Day 1(6月25日) 早上四点多钟起床做七点到九点四十的飞机到杭州萧山(空客330) 然后坐一小时车到绍兴一中对面的酒店. 中午曾老师请我们在酒店隔壁吃了一桌家常菜(味道可以),以此庆祝曾老师52 ...

  3. Android Qcom USB Driver学习(十)

    本章主要是基于之前的学习,实现一个hidraw的驱动,发现有两种用于识别usb设备的方式,放别是usb_device_id和hid_device_id hid_probe (1)hid_device_ ...

  4. ptmalloc、tcmalloc与jemalloc对比分析

    背景介绍 在开发微信看一看期间,为了进行耗时优化,基础库这层按照惯例使用tcmalloc替代glibc标配的ptmalloc做优化,CPU消耗和耗时确实有所降低.但在晚上高峰时期,在CPU刚刚超过50 ...

  5. 对3D图像进行裁剪

    在对医学图像进行深度学习的过程中,我们会遇到图片过大,导致train的过程中网络会瘫痪,所以我们会考虑到对图像进行分割.比如一张155x240x240的图像,我们可以将他分割成一系列128x128x1 ...

  6. Transformer原理+代码详解

    简介 Transformer是一种深度学习模型,它在自然语言处理(NLP)领域中非常流行和有效.它最初由Vaswani等人在2017年的论文<Attention is All You Need& ...

  7. filter 加 indexOf 方法去重数组

    let arr = [1, 2, 3, 4, 3, 2, 3, 4, 6, 7, 6] let unique = (arr) => { console.log(arr) return arr.f ...

  8. docker安装过程 - 下载mysql

    1. 下载必要的包 sudo yum install -y yum-utils device-mapper-persistent-data lvm2 2. 指定虚拟机去哪里安装 docker sudo ...

  9. 使用 KubeSphere 部署高可用 RocketMQ 集群

    作者:老Z,云原生爱好者,目前专注于云原生运维,KubeSphere Ambassador. Spring Cloud Alibaba 全家桶之 RocketMQ 是一款典型的分布式架构下的消息中间件 ...

  10. .NET 隐藏/自定义windows系统光标

    本文介绍如何操作windows系统光标.正常我们设置/隐藏光标,只能改变当前窗体或者控件范围,无法全局操作windows光标.接到一个需求,想隐藏windows全局的鼠标光标显示,下面讲下如何操作 先 ...