当前课程知识点:C语言程序设计 > 第22讲 编程训练 > 编程训练 > 选择结构的典型例子
包括求三个整数的最大值、求函数值、判断字符类型、成绩转换。
这一讲
讲一下选择结构的几个典型例子
目的是通过典型例子
初步掌握选择结构在编程中的使用
第一个例子是求最大值
要求输入三个整数
输出其中最大的那个整数值
这个思路是这样的
如果三个数分别是a,b,c
首先设定a暂时是最大的
让它与b比较
如果b更大
那就代替a成为目前最大的
再与c比较
如果c更大
它就成为最大者
这个解题思路可以推广到求更多个数的最大值
另外呢求最小值的思路与求最大值的思路非常相似
就是比较时拿更小的值替代当前的最小值
下面我们看一下具体程序
我们看这地方
在程序中首先定义了四个变量a,b,c,max
那么其中a,b,c就是三个整数变量
这个max表示存储最大值这样一个含义的变量
然后我们通过scanf这个控制符
输入a、b、c 3个变量的值
在这儿 先假定a是最大值
然后让b和这个假定的最大值比较
如果b比最大的还大
就把b赋值给这个max
它暂时成为最大值
然后c再跟最大值比较
如果c大于最大值
那么c赋值给max
c现在成为最大值
那么这个地方如果b大于max
b代替max
那换句话说
如果B小于等于max
那原先的max值依然是a
就是这样一个简单的思路
整个过程处理完了以后
这是输出
我们下面看一下程序的运行结果
我们编译、运行
现在输入的三个值分别是1 2 6
结果是这样的
我们再验证一下
换一下输入
比如输入的是6 3 2
同样得到了正确结果
第二个例子是求函数值
根据给出的函数
编程序
输入x值
要求输出相应的y值
我们看
这个函数是这样的
就是如果x<0,y值是-1
如果x=0,y是0
如果x>0,y是1。
好 我们看一下程序
首先在这儿
定义了一个float类型的变量x
然后我们通过这个scanf从键盘输入这个x的值
下面是处理
如果x>0 就是根据刚才前面那个公式
如果x>0 y等于1
else就是除了这个大于0的情况
也就是换句话说
后面这个else整个的这一块儿
就是x小于等于0的情况
因为小于等于零是两种情况
所以这个里面又把它再判断一下
如果x<0 那么y=-1
然后再else
那么这个else实际上就只有一种情况
就是x=0的情况
那么这儿就让y=0
这儿输出y的值
这个第三个例子是判断字符的类型
要求输入一个字符
输出该字符是什么类型
这儿类型包括字母、数字字符、空格及其它字符
也就是说我们输入的字符就分这么四类
下面我们看一下这个程序
程序中先定义一个char类型的变量ch
然后通过getchar输入这个字符
当然这个地方也可以通过scanf输入字符
下面是这个判断类型的过程
首先这个地方就是判断字符是不是字母
字母的大小在大写的“A”与大写“Z”之间
或者是在小写“a”和小写“z”之间
如果是这种情况的话
它就是字母
然后就是除了上面字母这种情况以外
下面的判断它是不是数字字符
数字子符判断依据是这个字符
它是大于等于“0”小于等于“9”
再其它情况就是如果ch等于空格
就是单引号中间空着
如果它是这样
那么它就是一个空格符号
再else就是刨去前面的那三种情况以外
剩下的就是其它字符
我们来演示一下这个程序
编译运行一下
比如说现在输入的是一个小写字母e
判断出来这是字母
我们再输入别的字符
比如现在输入的是分号
判断出来是其它字符
这个复合条件语句
在理解的时候
有一个要用集合的概念来理解
下面我们就以这个字符分类
就是刚才那个程序为例来讲一下
在复合条件语句怎么用集合的概念的理解
首先我们把输入的字符
不管它什么类型
我们作为一个整体的一个集合的全部
然后在这里
如果它是在大写字母“A”到大写字母“Z”之间
或者是在小写字母“a”到小写字母“z”之间
这种类型的就是说“字母”类型
这个条件判断完了以后
就是它把整个集合当中的这一块儿等于给它划分出去了
然后从这个地方else直到后面这儿
就是集合的这块
在这一块儿当中
我们再判断
如果它是在“0”到“9”中间的符号
那么它就是“数字字符”
就是在刚才这一块儿里面又把这一块儿刨掉了
那么在这个范围内就剩下了这个空格和其它的这个
然后呢再判断
如果它是空格
那么它就又把这个给刨掉了
那么else再剩下的就是这一块儿
整个这个过程
大家可以仔细琢磨一下
用集合的概念来理解这个复合语句
if else if这样子是比较合适的
第四个例子是成绩转换
通过这个例子学习switch语句的用法
好 我们看这样要求
输入成绩(0-100之间的数字)
要求将这个百分制成绩转换为5级等级制
90分及以上为A
80-90分为B
70-80分为C
60-70分为D
60分以下为E
好 我们看一下这个程序
首先 因为成绩可能是有小数点的
就是多少点多少分
所以这个地方呢
使用float类型
这儿用scanf读入这个成绩
这个地方做一个判断
就是你这个成绩
录入成绩如果大于100
或者是小于0
就认为是非法输入
然后return
整个程序就退出了
然后这儿这地方用一个类型强制转换
就是把这个实型的score强制转换成整型
转换成整型以后这个等于就是把它的小数点后面的东西去掉了
然后除以十
除以十以后
我们就根据它除完以后的整数商
然后来判断
在C语言当中
这样的除只会得到整数商
比如说89除以10
那么它得到的商是8
如果是100除以10
得到的就是10
根据这个k的值
我们用switch语句来做判断
那么对于k的值为10和9
是大于等于90分小于等于100分的是“A”
如果k的值是8
也就是说它是从80分到89分这个范围内的
那么它就输出“B”
其他的比如说这个
k的值是7
那么他的值就是“C”
也就是成绩在70到79
这个6呢
就是成绩是60到69之间的
他是“D”
那么刨除掉上面的几种情况
剩下的default就是小于60分的
那么这个就是“E”
-作业
-作业
-作业
-作业
-作业
-作业
-作业
-作业
-循环类型
-作业
-程序结构
-函数基础
-作业
-数组基础
-作业
-作业
-作业
-作业
-程序调试
- 文件(上)
- 编程训练


