当前课程知识点:基于Linux的C++ >  第二讲 程序控制结构 >  2.5 break语句 >  LinuxCPP0205

返回《基于Linux的C++》慕课在线视频课程列表

LinuxCPP0205在线视频

LinuxCPP0205

下一节:LinuxCPP0206

返回《基于Linux的C++》慕课在线视频列表

LinuxCPP0205课程教案、知识点、字幕

好 现在我们通过日历的打印例子

给同学们演示一下

我们为什么需要break语句

让同学们有一个深刻的感性认识

我们还是按照原来的方式

新建了之后 首先把它保存起来

这样的话 下一次就能够在编辑的时候

显示语法高亮信息

现在输入我们的源代码

因为需要决定数据显示的格式

所以需要一个iomanip头

进行输入输出操纵

这是我们的主函数

我们还要加上一个标准的枚举类型的定义

SUN、MON、TUE、WED、THU、FRI、SAT

然后是WEEKDAY

正常情况下

我们需要用户输入一个日期

然后才能决定它是星期几

所以我们有一个起始日期

有一个const WEEKDAY

有个1号的起始日期

它是什么呢 它是FRI

然后我们要通过这样的一个日期

来去计算用户传过来的新的日期

最终的结果是星期几

首先我们要输出整个程序的功能性描述

cout 我们继续输出

就是问他date

然后是cin 得到这个date

在这个地方同学们就要特别注意了

实现了一个if语句 做什么用的呢

就是如果用户输入的这个日期是无效的

比如说date小于1 我问你的是什么呢

实际上是2006年的12月的

某一天的星期几的信息

你给我输入一个数据

然后date是0

有12月0号吗 没有

你给我输一个250

它有这样的250吗 没有

所以一个日期得到了之后

我们必须要对它进行数据的有效性检查

这是必须要的

是你的程序里边一定要有的

这是非常重要的一个设计原则

对于重要数据

我们要进行数据有效性检查

我们将在第四讲 讲算法的时候

会特别强调这一点

现在我们来看整个程序的实现

如果你真地输入了一个日期

是小于1的 或者是大于31的

这说明这个日期就是非法的日期

那么就会显示一个错误消息

然后程序就应该退出

这个时候退出也不退出0了

0往往表示这个程序正确退出

没有发生任何错误 所以用0

现在这里面我就用1退出

表示发生了一个日期输入错误

跟我们正常执行的时候肯定是不一样的

我们按照这个模式就能够得到正确的date

此后我们就要完成计算

weekday等于什么呢 WEEKDAY

这是个类型转换

然后是(date + (int)date_1 – 1) % 7

然后输出我们的数据

这是我们的标题 输出我们的标题

最后完成switch这部分代码

其实我们已经算出来weekday是星期几了

现在我们完成我们的switch

根据weekday的值决定

数据输出在什么特定的位置

如果它是SUN 因为是顶头

所以我们设置它的宽度是2

然后输出date

输出完了以后同学们记得要break

我们把它拷贝过来

MON是6

然后是星期二 TUE是10

然后WED是14

THU是18

FRI是22

SAT是26

正常情况下边

这已经完成了全部分支 对吧

default实际上什么也没有

它的可能取值就那么几种嘛

所以default可以不写

完成全部输出之后 我们return

这段程序代码是我们目前写的

最长的一段程序代码了

这地方还有个错误呢

终于把它查出来了

现在进入我们的Cal目录

我们来看看 main.cpp已经在了

我们g++ main.cpp 还没有问题

刚才错误就被我们找到了

a.out 我们执行看 看看什么结果

问你要日期 给一个3号

惨了 很难看 说明什么呀

说明压根就不是我们所要的

刚才我们的格式输出有问题了

“Calendar”后边缺少了换行标志

结果那个短横跟它合在一起了

然后这个日期打完了以后

它也缺少一个换行标志 对吧

我们就在这个地方用“\n”表示换行

和endl一样 现在我们重新编译它

g++ main.cpp

我们再尝试着运行一下 3号

现在打的就对了

我们现在要演示的就是最重要的地方

如果我们的程序中没有break

它会发生什么事

把所有的break都注释掉

然后重新编译 运行给你看 3号

你看看打了什么东西

太奇怪了 对不对

非常非常奇怪的一个结果

怎么打了这么多3

好 我们可以把这个地方改掉

“<< endl” 拷贝

然后我把这个去掉

我们再重新编译 再演示一遍给你看

你看它干了什么事

3号 这倒好看了 刚才很不规整

一时半会儿 不知道它为什么

会打成这个样子 对吧

我们现在可以看

这是很规整的一个结构了

现在你就知道它是什么原因了

打了几个 打了7个3

在星期天打了一个

星期一打了一个

星期二打了一个

一直到星期六都打了一个

每天下面都打了一个3号

这肯定就不对了

这就是最重要的原因

没有break

没有break语句的时候

它就会从SUN标号下边去找

去开始执行它对应的那条语句

就是“cout << setw(2)”这条语句

然后去做 把这个日期打印一下

然后做完了它就会做下一条语句

下一条语句是哪一个

下一条语句就是这一条

不是switch语句后边这一条

比如cout这一条语句 不是的

它是这一条语句 它要做一条

做完了这一条做下一条

所以这个case的标号 这个常数表达式

只起到什么时候

进入这条switch语句的作用

它并不能起到离开这条switch语句的作用

如果你想离开这条switch的这条子句

必须要加上break

没有break是不能够工作的

不信我们再执行一遍

这个时候我不用3了 我用4

4是星期一

这跟刚才可不一样

3号是从Su一直打到Sa

现在4号就从Mo一直打到Sa

它就只打了6个 我们再运行一遍

如果使用2 它一切都很正常

这是一个非常重要的地方

所以我们必须使用break

来终止这条switch

基于Linux的C++课程列表:

第一讲 C/C++基本语法元素

-1.1 提纲

--LinuxCPP0101

-1.2 程序设计的基本概念

--LinuxCPP0102

-1.3 简单C/C++程序介绍

--LinuxCPP0103

-1.4 程序设计的基本流程

--LinuxCPP0104

-1.5 基本语法元素

--LinuxCPP0105

-1.6 程序设计风格

--LinuxCPP0106

-1.7 编程实践

--LinuxCPP0107

-第一讲 C/C++基本语法元素--编程实践提交入口

第二讲 程序控制结构

-2.1 提纲

--LinuxCPP0201

-2.2 结构化程序设计基础

--LinuxCPP0202

-2.3 布尔数据

--LinuxCPP0203

-2.4 分支结构

--LinuxCPP0204

-2.5 break语句

--LinuxCPP0205

-2.6 循环结构

--LinuxCPP0206

-2.7 编程实践

--LinuxCPP0207

-第二讲 程序控制结构--编程实践提交入口

第三讲 函数

-3.1 提纲

--LinuxCPP0301

-3.2 函数声明、调用与定义

--LinuxCPP0302

-3.3 函数调用栈框架

--LinuxCPP0303

-3.4 编程实践

--LinuxCPP0304

-第三讲 函数--编程实践提交入口

第四讲 算法

-4.1 提纲

--LinuxCPP0401

-4.2 算法概念与特征

--LinuxCPP0402

-4.3 算法描述

--LinuxCPP0403

-4.4 算法设计与实现

--LinuxCPP0404

-4.5 递归算法(一)

--LinuxCPP0405

-4.6 递归算法(二)

--LinuxCPP0406

-4.7 容错与计算复杂度

--LinuxCPP0407

-4.8 编程实践

--LinuxCPP0408

-第四讲 算法--编程实践提交入口

第五讲 程序组织与开发方法

-5.1 提纲

--LinuxCPP0501

-5.2 库与接口

--LinuxCPP0502

-5.3 随机数库(一)

--LinuxCPP0503

-5.4 随机数库(二)

--LinuxCPP0504

-5.5 作用域与生存期

--LinuxCPP0505

-5.6 典型软件开发流程(一)

--LinuxCPP0506

-5.7 典型软件开发流程(二)

--LinuxCPP0507

-5.8 编程实践

--LinuxCPP0508

-第五讲 程序组织与开发方法--编程实践提交入口

第六讲 复合数据类型

-6.1 提纲

--LinuxCPP0601

-6.2 字符

--LinuxCPP0602

-6.3 数组(一)

--LinuxCPP0603

-6.4 数组(二)

--LinuxCPP0604

-6.5 结构体

--LinuxCPP0605

-6.6 编程实践

--LinuxCPP0606

-第六讲 复合数据类型--编程实践提交入口

第七讲 指针与引用

-7.1 提纲

--LinuxCPP0701

-7.2 指针基本概念

--LinuxCPP0702

-7.3 指针与函数

--LinuxCPP0703

-7.4 指针与复合数据类型(一)

--LinuxCPP0704

-7.5 指针与复合数据类型(二)

--LinuxCPP0705

-7.6 字符串

--LinuxCPP0706

-7.7 动态存储管理(一)

--LinuxCPP0707

-7.8 动态存储管理(二)

--LinuxCPP0708

-7.9 引用

--LinuxCPP0709

-7.10 编程实践

--LinuxCPP0710

-第七讲 指针与引用--编程实践提交入口

第八讲 链表与程序抽象

-8.1 提纲

--LinuxCPP0801

-8.2 数据抽象(一)

--LinuxCPP0802

-8.3 数据抽象(二)

--LinuxCPP0803

-8.4 链表(一)

--LinuxCPP0804

-8.5 链表(二)

--LinuxCPP0805

-8.6 链表(三)

--LinuxCPP0806

-8.7 链表(四)

--LinuxCPP0807

-8.8 函数指针(一)

--LinuxCPP0808

-8.9 函数指针(二)

--LinuxCPP0809

-8.10 抽象链表(一)

--LinuxCPP0810

-8.11 抽象链表(二)

--LinuxCPP0811

-8.12 编程实践

--LinuxCPP0812

-第八讲 链表与程序抽象--编程实践提交入口

第九讲 类与对象

-9.1 提纲

--LinuxCPP0901

-9.2 程序抽象与面向对象

--LinuxCPP0902

-9.3 类类型

--LinuxCPP0903

-9.4 对象(一)

--LinuxCPP0904

-9.5 对象(二)

--LinuxCPP0905

-9.6 类与对象的成员(一)

--LinuxCPP0906

-9.7 类与对象的成员(二)

--LinuxCPP0907

-9.8 类与对象的成员(三)

--LinuxCPP0908

-9.9 继承(一)

--LinuxCPP0909

-9.10 继承(二)

--LinuxCPP0910

-9.11 继承(三)

--LinuxCPP0911

-9.12 多态(一)

--LinuxCPP0912

-9.13 多态(二)

--LinuxCPP0913

-9.14 编程实践

--LinuxCPP0914

-第九讲 类与对象--编程实践提交入口

第十讲 操作符重载

-10.1 提纲

--LinuxCPP1001

-10.2 四则运算符重载(一)

--LinuxCPP1002

-10.3 四则运算符重载(二)

--LinuxCPP1003

-10.4 关系与下标操作符重载

--LinuxCPP1004

-10.5 赋值操作符重载(一)

--LinuxCPP1005

-10.6 赋值操作符重载(二)

--LinuxCPP1006

-10.7 赋值操作符重载(三)

--LinuxCPP1007

-10.8 赋值操作符重载(四)

--LinuxCPP1008

-10.9 赋值操作符重载(五)

--LinuxCPP1009

-10.10 流操作符重载(一)

--LinuxCPP1010

-10.11 流操作符重载(二)

--LinuxCPP1011

-10.12 流操作符重载(三)

--LinuxCPP1012

-10.13 操作符重载总结

--LinuxCPP1013

-10.14 编程实践

--LinuxCPP1014

-第十讲 操作符重载--编程实践提交入口

第十一讲 泛型编程

-11.1 提纲

--LinuxCPP1101

-11.2 泛型编程概览

--LinuxCPP1102

-11.3 异常处理机制(一)

--LinuxCPP1103

-11.4 异常处理机制(二)

--LinuxCPP1104

-11.5 运行期型式信息(一)

--LinuxCPP1105

-11.6 运行期型式信息(二)

--LinuxCPP1106

-11.7 模板与型式参数化

--LinuxCPP1107

-11.8 题外话:术语翻译

--LinuxCPP1108

-11.9 泛型编程实践(一)

--LinuxCPP1109

-11.10 泛型编程实践(二)

--LinuxCPP1110

-11.11 泛型编程实践(三)

--LinuxCPP1111

-11.12 泛型编程实践(四)

--LinuxCPP1112

-11.13 泛型编程实践(五)

--LinuxCPP1113

-11.14 泛型编程实践(六)

--LinuxCPP1114

-11.15 泛型编程实践(七)

--LinuxCPP1115

-11.16 泛型编程实践(八)

--LinuxCPP1116

-11.17 泛型编程实践(九)

--LinuxCPP1117

-11.18 泛型编程实践(十)

--LinuxCPP1118

-11.19 编程实践

--LinuxCPP1119

-第十一讲 泛型编程--编程实践提交入口

第十二讲 Linux系统编程基础

-12.1 提纲

--LinuxCPP1201

-12.2 程序执行环境(一)

--LinuxCPP1202

-12.3 程序执行环境(二)

--LinuxCPP1203

-12.4 程序执行环境(三)

--LinuxCPP1204

-12.5 程序执行环境(四)

--LinuxCPP1205

-12.6 输入输出(一)

--LinuxCPP1206

-12.7 输入输出(二)

--LinuxCPP1207

-12.8 文件系统

--LinuxCPP1208

-12.9 设备

--LinuxCPP1209

-12.10 库(一)

--LinuxCPP1210

-12.11 库(二)

--LinuxCPP1211

-12.12 makefile文件(一)

--LinuxCPP1212

-12.13 makefile文件(二)

--LinuxCPP1213

-12.14 makefile文件(三)

--LinuxCPP1214

-12.15 编程实践

--LinuxCPP1215

-第十二讲 Linux系统编程基础--编程实践提交入口

第十三讲 进程编程

-13.01 提纲

--LinuxCPP1301

-13.02 进程基本概念

--LinuxCPP1302

-13.03 信号

--LinuxCPP1303

-13.04 进程管理(一)

--LinuxCPP1304

-13.05 进程管理(二)

--LinuxCPP1305

-13.06 进程管理(三)

--LinuxCPP1306

-13.07 进程间通信(一)

--LinuxCPP1307

-13.08 进程间通信(二)

--LinuxCPP1308

-13.09 进程间通信(三)

--LinuxCPP1309

-13.10 进程间通信(四)

--LinuxCPP1310

-13.11 进程池

--LinuxCPP1311

-13.12 编程实践

--LinuxCPP1312

-第十三讲 进程编程--编程实践提交入口

第十四讲 线程编程

-14.1 提纲

--LinuxCPP1401

-14.2 线程基本概念

--LinuxCPP1402

-14.3 线程管理(一)

--LinuxCPP1403

-14.4 线程管理(二)

--LinuxCPP1404

-14.5 线程管理(三)

--LinuxCPP1405

-14.6 线程管理(四)

--LinuxCPP1406

-14.7 线程同步机制(一)

--LinuxCPP1407

-14.8 线程同步机制(二)

--LinuxCPP1408

-14.9 C++11线程库(一)

--LinuxCPP1409

-14.10 C++11线程库(二)

--LinuxCPP1410

-14.11 C++11线程库(三)

--LinuxCPP1411

-14.12 C++11线程库(四)

--LinuxCPP1412

-14.13 C++11线程库(五)

--LinuxCPP1413

-14.14 编程实践

--LinuxCPP1414

-第十四讲 线程编程--编程实践提交入口

第十五讲 网络编程

-15.1 提纲

--LinuxCPP1501

-15.2 Internet网络协议

--LinuxCPP1502

-15.3 套接字(一)

--LinuxCPP1503

-15.4 套接字(二)

--LinuxCPP1504

-15.5 编程实践

--LinuxCPP1505

-第十五讲 网络编程--编程实践提交入口

课程文档

-课程PDF文件

LinuxCPP0205笔记与讨论

也许你还感兴趣的课程:

© 柠檬大学-慕课导航 课程版权归原始院校所有,
本网站仅通过互联网进行慕课课程索引,不提供在线课程学习和视频,请同学们点击报名到课程提供网站进行学习。