当前课程知识点:C语言程序设计(上) >  选择结构的程序设计 >  3.6 选择结构的程序实例 >  3.6 程序展示

返回《C语言程序设计(上)》慕课在线视频课程列表

3.6 程序展示在线视频

3.6 程序展示

下一节:计算第几天.c

返回《C语言程序设计(上)》慕课在线视频列表

3.6 程序展示课程教案、知识点、字幕

最后我们大家再来

看一道例题

这是一个稍微综合一些的题目

问题是这样

输入我们从键盘上敲

某一年某一月某一天

比如说

今年2014年

9月5号

那么 我们把这一天敲进去

让计算机来判断这一天

是这一年的第几天

我们看

对这个问题里边

我们是不是涉及到了

这么三个变量

年月日

还有什么

还有你最后要计算的这一年

现在过了多少个月

你输入的那个月

是多少个月

而且这个月里边大家还要注意

哪个是大月哪个是小月

是30天还是31天

然后还要说

你最后说的那个月的那一天

它不是个满月

比如说5号

那这个月

你前四个月是满月整数月

这个月只有5天

是不是大家考虑这个日期

应该是说

前面四个月的天数加起来

再加上这一个月的这5天

就是这一年的第sum天

所以sum应该等于什么

加上day

因为给的日子是day

这个问题

除过我们刚才说的大月小月

这一点之外还有一个

非常重要的问题需要注意

这个问题是什么

这一年是不是闰年

如果你是闰年并且

你选的是超过了2月份

什么意思呢

如果这一年是闰年

可是你选的月份是1月份

那与闰年没有关系

因为闰年只涉及到2月它是

28天还是29天

如果是闰年你选了

3月份4月份也就说

超过了2月份以后的任何月份

那2月份就是一个整数月

2月份到底算28天还是算29天

就是个问题

所以要判断是不是闰年

并且这一年你选的这个月份

是不是超过了2月份

所以这块

sum里边有一件事情

就有一个一天的差别

是需要注意的

这个算法的描述我们看

是不是可以这样

大家看

先输入年月日

然后计算sum

sum是某月之前的月份的总天数

然后再计算

是什么意思

前面的sum只是那些整数月的

整数月的

然后还要加上

你当前月的那个天

这个事情做完了以后

你需要判断一下

我先默认它不是闰年

我已经做完了

做完了之后我判断它是闰年吗

你是闰年并且你的月份是

超过了2月份了吗

如果是

需要在sum里边加1天

sum里边加1天

否则刚才的做法就是对的

与闰年没有关系

就直接输出sum

也就说你这块

是不是闰年只差一个什么

要不要加这1天

是闰年加1天否则不加

这就是我们整个这件事情的

一个流程

这个流程里边大家注意两个

前边这个计算sum

就是整数月的天数

要注意大月和小月

比如你输入的是11月

那前边的1到11月

1到10月你都要考虑

它是30天还是31天

程序我们看看

是不是这样

这块大家先看一下前边

我们定义了四个变量

年月日和sum

就是累加器

下边的scanf读进了年月日

然后我们用了一个什么样的结构呢

switch switch结构

在这个结构里我们条件是用谁给的

是用月

比如说 我是5月

那我这里边

月里边我输入的是5

这里边就是常量 里边是数值5

现在下边问

你刚才输的月是1吗

当然不是

是2吗 不是 是3 4 不是

从5入口

从5这块入口

前面四个都没有

这四条路径都没有走

从5月这入口

sum等于什么

120

也就说5月之前的这个天数

一共是120

然后break

120天 break

break完了吗

一定没完

你现在才算出来

这里边的任意一个入口

只支持了你算出来整数月

还有你当前月的天数

所以下面要做一件事

sum加上day天数

比如我们刚才说是5月5号

我这个也加上了5

那就是120天加上5就是125天

送到了sum

然后

下边要做我们刚才说的

判断是不是闰年

怎么判断闰年

我们看前面曾经举过一个例子

怎么判断闰年呢

是这个年份能被400整除

或者是能被4整除

并且不能被100整除

这样子

而且这里边还有一个

end了一个什么东西

这个月份是大于2月份的

这个东西才需要算

否则是不需要算的

如果是这样就给sum加1天

否则就直接输出

就可以了

无论加还是不加

这是一个单选择

这只是一个单选择

无论加还是不加大家都会输出sum

这个天数

大家看这个程序看上去很长

但是结构很简单

定义了几个变量然后输入

人机交互的方式输入这个变量

然后进入了switch

问月数是哪个月

然后就得到了这个月之前的天数

再加上当前的月

再加上是不是闰年的这个问题

所有问题考虑完了

这件事情我们得到结果

我们再来看一道例题

这个例题是我们前面用过的

是算银行的利率

我存了一些钱

到底本金和利息能拿到多少

我们是用多路径的选择

if else嵌套这个方法来实现的

我们用switch来实现一下这个功能

是不是这个程序看上去更简洁一些

用switch解决问题最关键的是

里边的条件是谁

我们现在说条件里边是year

year是什么

我们给它定义成是整型的

然后是你要存的时间段

这个是你的钱数 利率

和你的总的本金和利息

合起来的一个总数

我们读进来的是

你存的存款以及要存多长时间

多长时间这件事

我们是用整型的

所以它可以在switch的条件里边出现

是因为switch的条件里边大家是知道的

它一定是只能是整型或者字符型

因为字符型就是整型

所以总归一句话

它只能是一个整型数

它不能是一个实型数

为什么不能

最主要的是case后边都是常量

是常量或者符号常量

是常量而且是整型常量

这里边要出现实型数

跟它就没法比较了

所以这里边只能是整型数

我们读进来你存的钱数和你的时间

然后这进入了判断

你存的时间段是1年吗

比如说我是存了3年

那我现在是1年吗 不是

那这条路不走了

是2年吗 不是

这条路也不走了

是3年吗 是3年

做这件事

这件事做了给利率赋了

赋值0.005

然后break

break的哪里呢

到了default的底下

到了switch的出口处

这是switch的出口处

switch入口处在这

这个红颜色

switch出口处在这

到了switch的出口处

我们就该算了

总共拿到多少钱

这跟我们刚才是一样的

把这个钱数算出来

然后printf输出

我们现在看什么不同了

刚才的if else

else这样的东西现在被这种开关

开关是一档吗两档吗三档吗

五档吗八档吗

如果你输错了

你前边的什么都不是

比如你输了9

或者你存了10年

你存了10年

也是按8年的利息给你

按8的利率给你

当然时间它要给你算到10年

按8年的利率给你

所以这块你这样是不合算的

所以你要是输入了

不是这几年里边的任何一个

它就走了default

比如输入了一个6

即不是5也不是8

也就说你的利率要给你5

按5年给你不是吃亏了

按8你又够不着

所以这时候它没有算

这种情况我们都用default

利率是0

你存了多少没有给你利息

你还愿意做吗

你不愿意做那就考虑一下

你重新选择

大家看

这个程序实现这个功能

用switch也是非常合适的一种选择

default在这起了一个什么作用呢

如果你选择的年不合适的话

在这块给你提了个醒

当然你这块还可以做的是

不是给rate赋了一个0

你完全是

可以给它提个醒

是你给它提个醒

你这里边你要返回去

做什么事情

你输入的年号不合适等等

也可以是这样做

给你明显的一个明示

无论怎么样

比如我们现在运行一下这个程序

我们看一下

比如我存的是一个15万

15万不要是15元

然后存多长时间

存3年

这样我们拿15万存了3年

我们可以得到27000块钱的利息

大家看

回过头来看

这个程序看上去比if else

看上去明快一些

所以我们今天举的例子

都是比较简单的

简单的一个应用

实际上在一些更复杂的应用背景的

情况下

switch这个语句

它的功能还是非常的好用的

C语言程序设计(上)课程列表:

从问题到C语言程序设计

-1.1 计算机的问题求解方法

--1.1.1--程序设计面向的问题

--1.1.2--关于计算

--1.1.3-1关于算法-算法的特征

--1.1.3-2关于算法——算法的表示

--1.1.3-3关于算法——算法的优化

--1.1.4-1-程序设计方法

--1.1.4-2-程序设计方法

--讨论题:数学模型

-1.1 计算机的问题求解方法--作业

-1.2 C语言与C程序

--1.2.1-1-C概述

--1.2.1-2-C概述

--1.2.2-C初步

--讨论题:运算符

-1.3 C语言处理系统与程序调试运行

--1.3.1C程序如何调试运行

--1.3.2常用C语言处理系统

--1.3.3DEVC++的使用-v1

--1.3.4C语言概貌小程序

--例程

-1.4 程序中的人机交互

--1.4 printf用法

--1.4.2 scanf的用法

--例程

--作业讨论区

数据计算实现与顺序结构程序设计(一)

-2.1 算术运算的C程序实现

--2.1.1 第二章

--2.1.2 C语言算术表达式概念

--2.1.3 算术运算的实现

--2.1.4 整数相除

--2.1.5 输入格式造成的计算错误

--2.1.6 求余运算

--2.1.7 自增自减运算

--2.1.8 复合运算

--fangcheng.c

--fangcheng-1.c

--fangcheng-2.c

--fangcheng-3.c

--fangcheng-4.c

--算术混合运算.c

--讨论题:自增自减符

--讨论题:程序输出结果

--讨论题:程序运行结果

-2.1 算术运算的C程序实现--作业

-2.2 关系运算的C程序实现

--2.2.1 关系比较问题

--2.2.2 C语言关系表达式

--2.2.3关系运算优先级

--2.2.4 用关系运算做判断条件

--2.2.5 程序实例

--2.2.6 字符比较

--bukao.c

--pingshifen-1.c

--panduanzhengshu.c

--pingshifen-2.c

--字符比较.c

--讨论题:比较大小

--讨论题:程序的运行

-2.2 关系运算的C程序实现--作业

-第二周作业--作业

数据计算实现与顺序结构程序设计(二)

-2.3 逻辑运算的C程序实现

--2.3.1 逻辑运算问题~1

--2.3.2 逻辑运算表达式

--2.3.3 如何判断闰年

--2.3.4 逻辑运算优先级

--2.3.5 条件运算符

--计算结合性

--2.3.7 一个简单实例

--闰年.c

--自动购票问题.c

--讨论题:逻辑表达式

-2.3 逻辑运算的C程序实现--作业

-2.4 位运算的C程序实现

--2.4.1 什么是位运算

--2.4.2 位运算有哪些

--2.4.3 位运算怎么用

--讨论题:位运算

-2.5 几种很个别的运算

--2.5 几个很个别的运算

--讨论题

--讨论题

-2.5 几种很个别的运算--作业

-2.6 混合运算及数据类型转换

--2.6 混合运算及数据类型转换

--讨论题:数据类型

-2.7 顺序结构程序实例

--2.7.1 第一个程序:三角形

--Video

--三角形面积.c

--讨论题:工业产值

--讨论题:程序无效结果

-2.7 顺序结构程序实例--作业

选择结构的程序设计

-3.1 程序中的路径选择实现

--3.1.1_1 第三章

--3.1.1_2 神奇的if_else

--打印学生成绩.c

--一元二次方程.c

-3.1 程序中的路径选择实现--作业

-3.2 路径中的再选择——嵌套判断

--3.2.1_1 if语句的嵌套

--3.2.1_2三个数排序1029

--例程

--3.2.2 用户登录检查

--三个数排序_未优化.c

--三个数排序_优化.c

--讨论题:程序改错

-3.2 路径中的再选择——嵌套判断--作业

-3.3 复杂判断问题的C程序设计

--3.3 多级选择

--银行存款.c

--讨论题:多级选择

-3.4 多分支问题的C程序设计

--3.4.1 switch语句表达式

--3.4.2 加减乘除计算

--3.4.3 几类说明

--加减乘除运算.c

--讨论题:关于switch

-3.4 多分支问题的C程序设计--作业

-3.5 GOTO的适当使用

--3.5 GOTO的适当使用

-3.6 选择结构的程序实例

--3.6 程序展示

--计算第几天.c

--存款利息__switch实现.c

--讨论题:输出奇数

--讨论题:计算税金

-3.6 选择结构的程序实例--作业

-第四周作业--作业

循环结构的程序设计(一)

-4.1 需要重复执行的程序

--4.1.1----第四章~1

--4.1.2---while实现先判断后循环~1

--4.1.3----while循环的应用-录入速度~1

--求和.c

--打印学生成绩.c

--统计录入速度.c

--求平均数.c

-4.1 需要重复执行的程序--作业

-4.2 至少要执行一次的循环

--4.2.1至少要执行一次的循环

--4.2.2-do-while循环应用

--成绩录入_do while实现.c

--n的阶乘.c

--字符分类统计.c

--讨论题:关于while

-4.2 至少要执行一次的循环--作业

-4.3 已知循环次数用for语句

--4.3.1--用for语句控制循环次数

--4.3.2--循环的应用-求和

--求和问题.c

--斐波那契数列问题.c

--数列求和.c

--讨论题:循环语句的不同

--讨论题:循环语句

-4.3 已知循环次数用for语句--作业

-4.4 循环控制——简单循环应用

--4.4.1-循环的应用-找数-水仙花数

--4.4.2--循环的应用-求素数

--水仙花数.c

--讨论题:死循环

--讨论题:continue和break

--讨论题:猜数字

-循环结构的程序设计(一)--4.4 循环控制——简单循环应用

循环结构的程序设计(二)

-4.5 循环的嵌套

--4.5.1 循环的嵌套——九九乘法表

--4.5.2 循环的嵌套——打印三角形

--打印九九乘法表.c

--打印实心三角图案.c

--打印空心三角图案.c

--讨论题:程序运行

-4.5 循环的嵌套--作业

-4.6 break与continue

--4.6 循环中断与继续循环——break再讨论

--最大素数.c

--求正数个数及平均数.c

-4.6 break与continue--作业

-4.7 循环的综合应用

--4.7.1 数的排列组合问题

--4.7.2 循环综合应用——穷举算法

--4.7.3 循环综合应用——满足条件的数

--4.7.4 循环综合应用——求最后三位数

--4.7.5 循环综合应用——打印空心图案

--数的排列组合.c

--数的排列组合优化.c

--鸡兔同笼.c

--找满足条件的数.c

--输出14的13次方的最后三位数.c

--打印空心字符.c

--讨论题:打印图形

--讨论题:打印空心图形

--讨论题:计算闰年

-第六周作业

--虚拟实验:循环程序设计实验

-第六周作业--作业

数组(一)

-5.1 同类有序数据处理问题

--5.1.0 数组开篇

--5.1.1 同类有序数据存储问题

--讨论题:下标变量与下标

-5.2 一维数组的定义和引用

--5.2.1_1 数组的定义~1

--5.2.1_2 数组的初始化

--5.2.2 一维数组的输入输出

--5.2.3 一维数组的应用1--成绩排序(选择法)~2

--5.2.4 一维数组的应用2--Fibonacci数列

--数组定义.c

--数组初始化.c

--输出大于平均值的数.c

--反向输出.c

--选择法_成绩排序.c

--求斐波那契数列前n项.c

--讨论题:对称数

--讨论题:关于'\0'

-5.2 一维数组的定义和引用--作业

-5.3 一维字符串数组

--5.3 一维字符串数组11.24~1

--用函数测试字符串长度.c

--讨论题:编程

-5.4 字符串处理函数

--5.4 字符数组的输入与输出

--字符串反向.c

--字符串函数

--讨论题:程序如何运行

--讨论题:黑色星期五

数组(二)

-5.5 二维数组的定义与使用

--5.5 二维数组定义

--二维数组的定义与初始化.c

-5.6 二维数组的输入输出

--5.6 二维数组的输入与输出

--二位数组输出_矩阵输出.c

--讨论题:随机数据存储

-5.6 二维数组的输入输出--作业

-5.7 二维数组的应用‍

--5.7.1二维数组的应用-转置矩阵

--5.7.2 用一维数组方式引用二维数组元素

--转置矩阵.c

--找二维数组最大数.c

--讨论题:修改程序

--讨论题:关于随机数函数 rand()

-5.8 二维字符数组

--5.8 单词排序

--单词排序.c

--讨论题:回文字符串

-5.8 二维字符数组--作业

-5.9 数组综合应用

--5.9.1 应用1——学生成绩统计

--统计成绩.c

--5.9.2 应用2——删除重复字符

--删除串中的重复字符串

--5.9.3 应用3——统计字符

--5.9_4数组的应用4--矩阵相乘

--统计字符次数.c

--讨论题:洗牌

-本期课程结束语

--end

-第八周编程作业

--虚拟实验:冒泡排序算法程序设计实验

期末复习

-《C语言程序设计(上)》期末复习参考

--html

期末复习答案

-《C语言程序设计(上)》期末复习参考答案

--html

3.6 程序展示笔记与讨论

也许你还感兴趣的课程:

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