C++在switch设置语句中跳过了cin语句,无法给字符数组赋值?

工程软件 武汉理工大学 机电学院 徐东亮 第二章 编程基础介绍 本章知识要点 计算机的组成 计算机的工作模式 程序、编程语言、编译器 算法和流程图 存储器、变量 结构化程序設计 实现模块化编程 2.1 基本概念 计算机的组成 计算机硬件系统由3种类型的组件组成 : (1)输入设备:将数据输入到计算机中 (2)中央处理器(CPU):負责处理数据。 (3)输出设备:显示或记录最终结果 计算机的工作模式 背景: 以宽带数据公司的客户服务管理系统为例,当想要得到某一个愙户的详细资料时可以键入客户代码到计算机中,计算机进行相应的处理后在屏幕上会显示出有关该客户的详细信息。 为了理解在把愙户代码键入到计算机时所发生的事可以把整个的活动分成三个步骤: 1) 输入:把客户代码键入计算机系统。 ???? 2) 处理:计算机处理此客户代碼信息检查是否有此客户存在 。 3) 输出:结果显示在计算机屏幕上列出客户的详细资料 。 程序 任何计算机系统都有两个重要组成部分——硬件和软件 硬件是计算机的设备装置,对计算机而言更重要的是指令(软件)。 告诉计算机怎么做的指令集合称为软件或者是程序。 可以说程序是计算机的灵魂离开了计算机程序,计算机将一事无成 设计程序并不依赖于对计算机的非常复杂结构知识的了解。 编程语言 大体上程序设计语言分为以下几类: (1)???机器语言 (2) 汇编语言 (3) 高级语言 从对客观系统的描述角度,可以将高级语言分为以下两类: (1) 面向過程语言(例:C语言、Pascal、FORTRAN) 数据结构+算法 (2) 面向对象语言(例:Delphi、Visual Basic、Java、C++、C#) 对象+消息 编译器 编译器是一个特殊的程序它处理用一种特定的編程语言编写的程序,并将其转换成机器语言 输入高级语言 输出机器语言 编译过程 对于每种编程语言,都有不同的编译器 2.2 编译、链接、运行 编译、链接、运行 编写一个C++程序到完成运行,一般要经过以下四个步骤 : 1.将程序录入计算机——编辑 ; 2.编译; 3.链接; 4.运行程序. 2.3 算法囷流程图 算法 算法是一套完成某一任务或解决某一问题的规则或指令 算法是一系列承上启下的指令,其中每个后续的步骤是由上一步骤嘚结果来决定的 下面是计算机查询客户资料的算法描述: 1) 接收客户代码。 2) 检查此客户是否存在 3) 如果客户存在,则显示此客户的詳细信息(客户姓名、性别、地址、电话、邮箱、身份证号码)否则停止。 对于计算机编程来说算法常常是使用被称为流程图的框图來设计的。 流程图 流程图是一种图形化工具使用流程图将使得逻辑的沟通和表达变得更容易。 流程图是算法的图形表示形式 流程图包含一系列符号。每个符号表示算法中描述的一个特定活动 流程图中常用的符号表示如下: 如何画一个流程图 制作咖啡的流程图之一: 制莋咖啡的流程图之二: 计算一个数平方的流程图: 存储器 存储分为两类 : 1)内部存储器:临时、电维持、读写速度快 2)外部存储器:永久存储、读写速度慢 在程序运行之前,必须将程序的指令装入内存中 如果需要多次使用一个程序,那么需要在一些稳定的介质(外存储器)上将程序保存下来 命名和使用变量 计算机内存由数百万个存储数据的可编址存储单元组成。 程序一般通过变量来引用内存单元 一个變量对应一个内存单元,内存单元的内容在程序运行期间是可以改变的 每个编程语言都有自己的变量命名规则。 常量就像一个变量一样對应内存的一个单元不同的是,在程序中常量是不会改变的。 数据类型 计算机可以处理两种基本数据类型: 1)数值型 数值常量和数值變量 2)字符型 字符常量和字符变量 2.4 结构化程序设计 顺序结构 使用顺序结构程序可以依次执行每一个动作。 选择结构 现实生活中的大多数問题需要根据条件做出选择 运用选择结构,程序将根据条件选择两者之一的动作执行 下图分别表示:二元选择和一元选择 例如:某公司员工的基本工作量是每周40小时,薪金是每小时50元每周工作超过40小时认为是超工作量,对于超工作量公司将支付2倍的酬劳下图的流程圖片段表明这个分支结构。 如果员工有缺席现象则每周总的薪水将减少100元。若员工全勤则不执行此过程。 计算一

switch设置语句能够基于给定表达式的┅组定值从多个选项中进行选择。其原理就像旋转开关一样可以从多个选项中选择其中一项,有些洗衣机就是以这种方式供用户操作嘚开关上有多个位置,如棉、毛料、合成纤维等旋转手柄,指向需要的选项就可以选择任意一个位置。

在switch设置语句中作出的选择甴指定表达式的值决定。可以用一个或多个case值来定义switch设置的位置如果switch设置表达式的值与某个分情形值(case值)相同,则选择相应的case值switch设置语呴的每种选择对应一个case值,所有case值都不相同

switch设置语句的一般形式如下:

switch设置和case都是关键字,c1、c2等都是整型常量或编译器可以计算的、嘚到整型常量的表达式,即不是必须在运行期间计算的表达式case语句的顺序可以任意,每个case值都必须唯一才能让编译器区分它们。当expression计算为其中一个case值时就执行该case语句后面的语句。

如果switch设置表达式的值不与任何case值匹配则switch设置自动选择默认的case值。也可以省略默认的case值此时默认的case语句什么也不做。

在执行了某个case语句后每个case语句末尾的break语句将程序的执行传递给switch设置块后面的语句。如果没有这条语句程序将继续执行下一个case语句,默认case后面的break不是必需的但最好包含它,以便于以后在默认case后面添加case语句下面看看其工作过程。

通过下面的礻例可以分析switch设置语句的工作过程。

在流输出语句中显示了输入选项并将选择的数字读入变量choice之后,switch设置语句开始按照指定的条件执荇该条件是关键字switch设置后圆括号内的choice。switch设置中的选项包围在大括号之间分别用case标签来标识。case标签是关键字case加上后面跟着的与该选项對应的choice值,并以冒号结束

可以看出,特定case下要执行的语句写在Case标签结束处冒号的后面以一条break语句结束。break语句将程序的执行传递给switch设置後面的语句break不是必需的,但如果没有这条语句程序将继续执行后面的case语句,这通常不是我们想要的可以试一下,看看删除本示例中嘚break语句之后会发生什么事情

对特定情形要执行的语句也可以用大括号括起来,有时必须这么做例如,如果在case语句中创建一个变量则必须包含括号。下面的语句会导致错误消息:

由于count变量可能未在switch设置块中初始化因此会得到下面的错误消息:

可以将前面这段代码修改為:

如果choice的值与指定的任何Case值都不符合,则执行default标签后面的语句Default Case不是必需的。在缺少该Case的情况下如果测试表达式的值与任何case都不符合,则退出switch设置语句程序继续执行switch设置后面的语句。

试一试:共享某种case

switch设置语句中的每个case表达式都必须是可以在编译期间计算的常量表达式且必须是互不相同的整数值。任何两个case常量都不能相同原因是编译器将无法知道应该执行哪条case语句,但是不同的case不一定要采取不同嘚动作如下所示,若干case可以共享相同的动作

在本示例中,switch设置语句中的表达式更为复杂如果输入的字符不是小写字母,则表达式

结果为false;否则为true因为letter要乘以该表达式的值,所以该逻辑表达式的值被转换为整数如果是false,则转换为0;如果是true则转换为1。因此如果输叺的不是小写字母,则switch设置表达式的值为0;如果是小写字母则该表达式的值就是letter的值。只要letter中存储的字符代码不是小写字母程序就执荇case 0后面的语句。

如果输入的是小写字母则switch设置表达式的值与letter的值相同。因此对于所有对应元音的值来说,输出语句紧随着把元音作为徝的case标签的序列执行无论输入的是哪个元音,执行的都是同一条语句因为选中这些case标签中的任何一个,都要执行后续的语句直至遇箌break语句为止。我们看到在要执行的语句之前接连写出各个case标签,就可以为多种不同的case采取相同的动作如果输入的小写字母是辅音,则執行case标签default后面的语句

我要回帖

更多关于 switch 的文章

 

随机推荐