资源简介 (共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")elseprintf("密码错误,无法登录!\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")elseprintf("女\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)语句1else if(表达式2)语句2…else if(表达式n)语句nelse语句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)语句1else语句2elseif(表达式3)语句3else语句45.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,运行结果:#includemain(){char ch;printf("请输入一个字符:");scanf("%c",&ch);if (ch>='A' && ch<='Z' || ch>='a' && ch<='z' )printf("%c是英文字母.\n",ch);elseif (ch>='0' && ch<='9')printf("%c是数字字符.\n",ch);elseprintf("%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、输出象限。#includemain(){int x,y;scanf("%d%d",&x,&y);if(x>0)if(y>0)printf("该点属于第一象限!\n")elseprintf("该点属于第四象限!\n");elseif(y>0)printf("该点属于第二象限!\n");elseprintf("该点属于第三象限!\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.005.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语句实现)【微视频】算法与流程图简介谢谢观看 展开更多...... 收起↑ 资源预览