5.2双分支结构 课件(共21张PPT)-《C语言程序设计》同步教学(西安电子科技大学出版社)

资源下载
  1. 二一教育资源

5.2双分支结构 课件(共21张PPT)-《C语言程序设计》同步教学(西安电子科技大学出版社)

资源简介

(共21张PPT)
C 语言程序设计
2023
翻转课堂实用教程
5.3 双分支结构
5.3.1双分支结构知识点
if(<表达式>)
<语句1>
Else
<语句2>
if…else…语句格式:
执行过程:
先判断表达式是否为真,如果为真,那么执行语句1,如果为假,那么执行语句2,语句1和语句2 只能执行其中一个。
流程图

表达式
语句2
语句1

5.3.2 双分支结构案例分析
案例5-3-1判断密码是否正确
要求:输入一个数字密码,判断密码是否预先设定的一致
案例5-3-1程序代码:
案例5-3-1,运行结果:
算法设计:
1、定义一个整型变量;
2、输入一个密码;
3、如果该密码等于设定密码,则输出“密码正确,登录成功!”,否则输出“密码
错误,无法登录!”。
main()
{
int pwd;
scanf("%d",&pwd);
if(pwd==666888)
printf(“密码正确,登录成功!\n")
else
printf("密码错误,无法登录!\n");
}
123456↙
密码错误,无法登录!
666888↙
密码正确,登录成功!.
流程图:
如何将“案例2:判断一个三位奇数是否能被15整除”的这道题改为双分支结构?
思考:
5.3.2 双分支结构案例分析
案例5-3-2从接收的字符判断是男是女?
要求:本题要求编写程序,输入一个字符,判断该字符代表“男”还是“女”。男用字符“m”表示,女用字符“f”表示。本体假设输入的字符只有m和f两种情况。
案例5-3-2程序代码:
案例5-3-2,运行结果:
算法设计:
1、定义一个字符型变量;
2、输入一个字符;
3、进行判断,如果是字符=‘m’,输出“男”,否则输出“女”。
main()
{
char sex;
scanf("%d",&sex);
if (sex==’m’)
printf(“男\n")
else
printf("女\n");
}
m↙

f↙

5.3.3 双分支结构练习题
练习5.3.1:输入一个整数,判断是奇数还是偶数。
要求:从键盘接收一个整数,并判断它是奇数还是偶数,把结果输出。
练习5.3.2:网吧上网需要验证年龄,年龄大于18岁才可以上网,否则不允许,请编程实现年龄验证。
要求:从键盘接收一个整数,判断是否大于18,如大于,则打印“您可以上网。”,否则打印“您还未成年,不可上网。”
5.4 多分支结构
5.4.1多分支结构知识点
1. if...else if语句格式:
执行过程:
从上到下依次检测判断条件,当某个判断条件成立时,则执行其对应的语句块,然后跳到整个 if else 语句之外继续执行其他代码。如果所有判断条件都不成立,则执行语句块n,然后继续执行后续代码。
流程图
if(表达式1)
语句1
else if(表达式2)
语句2

else if(表达式n)
语句n
else
语句n+1
注意:if和 else 的配对问题
1、如果存在if语句后没有else的情况,就出现了if和 else数量不一致的情况;2、else 总是与它前面最近的 if 配对
例如:
if(a!=b) // ①
if(a>b) printf("a>b\n"); // ②
else printf("a
和谁配对?
5.4.1多分支结构知识点
2. if...else 嵌套语句格式:
执行过程:
如果表达式1为真,继续判断表达式2如果为真,那么执行语句1;如果表达式1为真,表达式2为假,那么执行语句2;如果表达式1为假,继续判断表达式3如果为真,那么执行语句3;如果表达式1为假,表达式3为假,那么执行语句4。
流程图
if(表达式1)
if(表达式2)
语句1
else
语句2
else
if(表达式3)
语句3
else
语句4
5.4.1多分支结构知识点
3. switch语句格式:
执行过程:
先计算表达式的值,然后依次与每一个case中的整型数值进行比较,若有相等的,则从该case开始依次往下执行,若没有相等的,则从default开始往下执行。执行过程中遇到break语句就跳出该swtich语句,否则一直按顺序继续执行下去,也就是会执行其它case 后面的语句, 直到遇到“}”符号才停止。
流程图
switch(表达式)
{
case 整型数值1:语句体1;[break;]
case 整型数值2:语句体2;[break;]

case 整型数值n:语句体n;[break;]
default: 语句体n+1;}
}
switch语句
注意1: case语句
注意2:break语句
1、case 后面必须是一个整数,或者是结果为整数的表达式(如字符型或枚举类型),但不能包含任何变量;
2、case子句中<常量表达式>的类型应该与switch后面<表达式>的类型相容,每个case子句中<常量表达式>的值必须互不相等,case和<常量表达式>之间要有空格,case后面的<常量表达式>之后有“:”,且所有case包含在“{}”里。
3、default 不是必须的。当没有 default 时,如果所有 case 都匹配失败,那么就什么都不执行;
4、由于 default 是最后一个分支,匹配后不会再执行其他分支,所以也可以不添加break;语句。
当和某个整型数值匹配成功后,会执行该分支以及后面所有分支的语句,会得到意想不到的结果,因此某个语句执行完之后应马上跳出switch语句;
break 是C语言中的一个关键字,专门用于跳出 switch 语句;
3、所谓“跳出”,是指一旦遇到 break,就不再执行 switch 中的任何语句,包括当前分支中的语句和其他分支中的语句;也就是说,整个 switch 执行结束了,接着会执行整个 switch 后面的代码。
switch语句
例如:(if-else):输入一个整数,输出该整数对应的星期几的英文表示
Input integer number:2↙
Tuesday
#include
int main()
{ int a;
printf("Input integer number:");
scanf("%d",&a);
if(a==1){
printf("Mnday\n");
}else if(a==2){
printf("Tuesday\n");
}else if(a==3){
printf("Wednesday\n");
}else if(a==4){
printf("Thursday\n");
}else if(a==5){
printf("Friday\n");
}else if(a==6){
printf("Saturday\n");
}else if(a==7){
printf("Sunday\n");
}else{
printf("error\n");
}
retun 0;
}
用switch语句编写比较合适
switch语句
例如:例子(switch+break):输入一个整数,输出该整数对应的星期几的英文表示
例如:(switch不加break):输入一个整数,输出该整数对应的星期几的英文表示
5.4.2 多分支结构案例分析
案例5-4-1(if...else if语句):统计英文字母、数字字符和其他字符
要求:本题要求编写程序,输入一个字符,判断是英文字母还是数字字符。
算法设计:
流程图:
判断表达式:英文字母可以用表达式“ch>=’A’&& ch<=’Z’|| ch>=’a’&& ch<=’z’”来判断,而数字字符的判断则用表达式“ch>=’0’&& ch<=’9’。
1、定义一个字符型变量;
2、输入一个字符;
3、进行判断,如果是字符,输出“是英文字符”,否则判断是否是数字字符,是则输出数字字符,否则输出是其他字符。
5.4.2 多分支结构案例分析
案例5-4-1程序代码:
案例5-4-1,运行结果:
#include
main()
{
char ch;
printf("请输入一个字符:");
scanf("%c",&ch);
if (ch>='A' && ch<='Z' || ch>='a' && ch<='z' )
printf("%c是英文字母.\n",ch);
else
if (ch>='0' && ch<='9')
printf("%c是数字字符.\n",ch);
else
printf("%c是其他字符.\n",ch );
}
m↙
m是英文字母
5.4.2 多分支结构案例分析
案例5-4-2(if...else 嵌套语句):输入一个点的x和y坐标,输出该点属于哪个象限。
案例5-4-2程序代码:
案例5-3-2,运行结果:
算法设计:
1、定义两个整型变量;
2、输入两个整数;
3、利用嵌套语句判断横坐标和纵坐标的大小;
4、输出象限。
#include
main()
{
int x,y;
scanf("%d%d",&x,&y);
if(x>0)
if(y>0)
printf("该点属于第一象限!\n")
else
printf("该点属于第四象限!\n");
else
if(y>0)
printf("该点属于第二象限!\n");
else
printf("该点属于第三象限!\n");
}
15 -20↙
该点属于第四象限!
5.4.2 多分支结构案例分析
案例5-4-3(switch语句)商场促销活动打折计算。
某商场在节日期间举办促销活动,顾客可按购买商品的款数多少分别给予以下不同的优惠折扣:
购物不足250元的,没有折扣,赠送小礼品;
购物满250元,不足500元的,折扣5%;
购物满500元,不足1000元的,折扣8%;
购物满1000元,不足2000元的,折扣10%;
购物满2000元及2000元以上,折扣15%。
试用switch语句编写程序,计算顾客的实际付款数。
问题分析:
由于switch后面的表达式的取值必须对应于每个case子句的一个单值,所以如何设计表达式是关键。对于本题,假设购物款为payment,由于折扣点是以250的倍数变化的,所以可以把表达式设计为payment /250,即:
payment<250元时,对应折扣点payment /250为0;
250≤payment<500元时,对应折扣点payment /250取值1;
500≤payment<1000元时,对应折扣点payment /250分别取值2、3;
1000≤payment<2000元时,对应折扣点payment /250分别取值4、5、6、7.
5.4.2 多分支结构案例分析
案例5-4-3 程序代码:
案例5-4-3,运行结果
请输入你的购物款:1200↙
请付款¥1080.00
5.4.2 多分支结构案例分析
注意
1、当多种常量表达式代表同一种情况时,出现在前面的case子句可以无处理语句,即多个case子句共用一组处理语句,上例中, case 2和case 3共用一个执行语句, case 2后可以缺省;
2、case 后面必须是一个整数,或者是结果为整数的表达式,但不能包含任何变量;
3、default 不是必须的。当没有 default 时,如果所有 case 都匹配失败,那么就什么都不执行。
例如:
case 7: printf("..."); break;
case 3+2: printf("..."); break;
case 'a': printf("..."); break;
case 'b'+3: printf("..."); break;
case 7.5: printf("..."); break;
case m: printf("..."); break;
case n+10: printf("..."); break;
选择结构有三种,但各有自己适用的情况,我们也要清楚各自的优势,来选择适合自己的人生道路;
人生处处有选择,选择错了,就会沿着错误的路径走下去;
一旦做了正确的选择,就坚定的走下去吧。你选择了这个专业去学习,就努力去实现自己的目标吧,加油加油。
启示:从分支结构想到的
正确
错误
正确
正确
正确
错误
错误
5.4.3 课堂练习题
5.4.1: 高速公路超速处罚
按照规定,在高速公路上行使的机动车,超出本车道限速的10%则处200元罚款;若超出50%,就要吊销驾驶证。请编写程序根据车速和限速自动判别对该机动车的处理。
5.4.2:计算油费
现在90号汽油6.95元/升、93号汽油7.44元/升、97号汽油7.93元/升。为吸引顾客,某自动加油站推出了“自助服务”和“协助服务”两个服务等级,分别可得到5%和3%的折扣。本题要求编写程序,根据输入顾客的加油量a,汽油品种b(90、93或97)和服务类型c(m - 自助,e - 协助),计算并输出应付款。
5.4.3:判断学生成绩等级
本题要求编写程序读入N个学生的百分制成绩,统计五分制成绩的分布。百分制成绩到五分制成绩的转换规则:大于等于90分为A;小于90且大于等于80为B;小于80且大于等于70为C;小于70且大于等于60为D;小于60为E。
(分别用if-else语句和switch语句实现)
【微视频】算法与流程图简介
谢谢观看

展开更多......

收起↑

资源预览