




版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
第4章选择结构程序设计4.2if语句4.2if语句4.2.1单分支结构if语句
4.2.2双分支结构if…else…语句4.2.3多分支结构if…elseif…语句4.2.4if语句的嵌套4.2.1单分支结构if语句
单分支结构if语句,即if语句中条件成立就执行相应的语句,否则不执行。单分支结构if语句的特点:该语句只有条件成立才执行,否则就什么也不做。
4.2.1单分支结构if语句1、单分支结构if语句执行流程如图4-2-1所示2、单分支结构if语句的一般格式为:if(表达式)语句3、单分支结构if语句的语法含义是:若表达式的值为非0(真),则执行语句;否则不执行该语句而直接执行下一条语句。表达式语句真(非0)假(0)4.2.1单分支结构if语句【例4.1】输入两个整数,要求比较其大小并将较大者输出。#include<stdio.h>voidmain(){inta,b,max;//定义整型变量scanf("%d,%d",&a,&b);//接受用户键盘输入变量a,b的值max=a;//赋值运算if(max<b) //单分支条件语句max=b;printf("max=%d\n",max);//输出运算结果}4.2.1单分支结构if语句程序说明:(1)如果表达式(max<b)的值为真,则执行if语句的语句块,即“max=b;”语句,然后执行控制语句的后续语句;(2)如果表达式的值为假,则不执行if语句控制的语句块,而直接跳转执行控制语句的后续语句。4.2.2双分支结构if…else…语句双分支结构if…else…语句,即if语句中条件成立,执行紧跟if条件之后的语句,否则执行紧跟else之后的语句。
双分支结构if…else…语句的特点:
无论条件是否成立,都会执行一条语句。4.2.2双分支结构if…else…语句1、双分支结构的if语句,执行流程如图4-2-2所示2、双分支结构的if语句的一般格式为:if(表达式)语句1else语句23、双分支结构的if语句的语法含义是:如果表达式的值为非0(真),则执行语句1,否则执行语句2。4.2.2双分支结构if…else…语句【例4.2】输入一个数,求该数的绝对值。#include<stdio.h>voidmain(){intx;scanf("%d",&x);if(x>=0)printf("|x|=%d\n",x);elseprintf("|x|=%d\n",-x);}程序运行结果:-5↙|x|=54.2.2双分支结构if…else…语句程序说明:(1)如果表达式的值为非0,即x>=0成立,则执行if所控制的语“printf("|x|=%d\n",x);”,否则,执行else语句所控制的语句“printf("|x|=%d\n",-x);”。4.2.3多分支结构if…elseif…else语句多分支结构if…elseif…else语句,即首先判断第一个表达式1,如果其值为真,则执行表达式1之后的语句,然后结束if语句;如果表达式1的值为假,则判断表达式2,如果其值为真,则执行表达式2之后的语句,然后结束if语句;如果表达式2的值为假,再继续往下判断其他表达式的值;如果所有表达式的值都为假,则执行else之后的语句。多分支结构if…elseif…else语句的特点:有多个条件选择,从上至下逐个对条件进行判断,一旦发现某个表达式的值为非0就执行紧跟该表达式后面的语句,该语句执行完后跳过整个if结构,执行后续语句。4.2.3多分支结构if…elseif…else语句1、多分支结构if语句执行流程如图4-2-3所示表达式1表达式2表达式n语句1语句2语句n语句n+1000非0非0非0非04.2.3多分支结构if…elseif…else语句2、多分支结构if语句的一般格式为:if(表达式1)语句1elseif(表达式2)语句2elseif(表达式3)语句3……elseif(表达式n)语句n[else语句n+1]4.2.3多分支结构if…elseif…else语句这种结构执行流程是从上至下逐个对条件进行判断,一旦发现某个表达式的值为非0就执行紧跟该表达式后面的语句,该语句执行完后跳过整个if结构,执行后续语句;若没有表达值为非0,则执行“语句n+1”。最后这个else常起着“缺省条件”的作用,当然也可以根据实际情况省略“else语句n+1”。但是建议使用时尽量加上else子句,以保证整个条件判断的严密性,不至于漏掉某种情况。3、多分支结构if语句的语法含义是:4.2.3多分支结构if…elseif…else语句【注意】无论是if…else结构还是if…elseif结构,尽量将它们分写在多行之上,但它们仍然使一条语句,而不是多条语句。4.2.3多分支结构if…elseif…else语句【例4.3】输入一个学生的成绩(分数),输出该成绩对应的等级。#include<stdio.h>voidmain(){intx;scanf("%d",&x);if(x>=90)printf("优秀");elseif(x>=80)printf("良好");elseif(x>=70)printf("中");elseif(x>=60)printf("及格");elseprintf("不及格");}程序运行结果:
91↙优秀4.2.3多分支结构if…elseif…else语句(1)在此例的if语句中,各表达式先后次序都不能颠倒,不能写成如下形式:if(x<60)printf("不及格");elseif(x>=60)printf("及格");elseif(x>=70)printf("中");elseif(x>=80)printf("良好");elseprintf("优秀");这样,程序运行将得不到正确的运行结果。(2)如果写成:if(x<60)printf("不及格");elseif(x>=60&&x<70)printf("及格");elseif(x>=70&&x<80)printf("中");elseif(x>=80&&x<90)printf("良好");elseprintf("优秀");则先后次序就可以任意。程序说明:4.2.3多分支结构if…elseif…else语句4、使用if应该注意以下几方面:(1)三种形式的if语句中在if关键字后面都有“表达式”,该表达式通常是逻辑表达式或关系表达式。(2)在if语句中,条件表达式必须用括号括起来,在语句之后必须加分号。在每一个else语句之前必须加分号,整个语句结束处也必须有分号。(3)在if语句的三种形式中,所有的语句应为单条语句,如果在条件成立时需要执行多条语句,则必须把多条语句用“{}”括起来形成一个复合语句,因为复合语句在逻辑上视为一条语句。但要注意的是在“}”之后不能再加分号。4.2.3多分支结构if…elseif…else语句(4)else子句不能作为语句单独使用,它必须是if语句的一部分,与if配对使用,即有else肯定有与之匹配的if,有if不一定有else。(5)多分支结构if…elseif…语句中,else与if之间需留有空格,为了便于阅读,书写时每个else应对齐。4.2.4if语句的嵌套4.2.4if语句的嵌套
多分支结构实现的是复杂条件的判断,即在一定的条件下,又需要满足其它的条件才能确定相应的动作。这需要在判断结构中再嵌入另一个判断结构,称为选择结构的嵌套。4.2.4if语句的嵌套1、嵌套的if语句一般格式为:if(表达式1)
else
if(表达式2)
语句1;else
语句2;if(表达式3)
语句3;else
语句4;内部的(嵌套)if内部的(嵌套)if2、匹配规则:else总是与它上面的,最近的,统一复合语句中的,未配对的if语句配对。4.2.4if语句的嵌套3x+8(x≤-3)y=5-x(-3<x<0)x2+5(x≥0)【例4.4】根据下列分段函数,输入x的值,计算输出y的值。方法一:#include<stdio.h>voidmain(){intx,y;printf("请输入x的值:");scanf("%d",&x);if(x<=-3)y=3*x+8;elseif(x<0)y=5-x;elsey=x*x+5;printf("x=%d,y=%d\n",x,y);}4.2.4if语句的嵌套方法二:
#include<stdio.h>voidmain(){intx,y;printf("请输入x的值:");scanf("%d",&x);if(x>-3)if(x<0)y=5-x;elsey=x*x+5;elsey=3*x+8;printf("x=%d,y=%d\n",x,y);}方法三:#include<stdio.h>voidmain(){intx,y;printf("请输入x的值:");scanf("%d",&x);if(x>=0)y=x*x+5elseif(x>-3)y=5-x;elsey=3*x+8;printf("x=%d,y=%d\n",x,y);}4.2.4if语句的嵌套程序说明:(1)程序通过执行scanf("%d",&x);语句,得到x的值,方法一是先判断如果x<=-3,则将3*x+8赋给y,否则继续判断,如果x<0,则将5-x赋给y,否则将x*x+5赋给y。(2)方法二是先判断x>-3,如果条件成立,直接执行嵌套的if……else,否则直接执行最后一个else,将3*x+8赋给y。(3)方法三是采用多分支结构if语句,x的值直接与判断条件匹配,x与哪一条匹配,与之对应就执行后面的语句,该语句执行完后跳过整个if结构,执行后续语句。4.2.4if语句的嵌套3、使用嵌套if语句的注意事项(1)书写嵌套结构时要有层次。内层的嵌套结构要相对外层有一定的缩进
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 2024福建福州市可持续发展城市有限公司招聘3人笔试参考题库附带答案详解
- 浙江国企招聘2025中移铁通嘉兴海盐分公司招聘10人笔试参考题库附带答案详解
- MySQL教程(新体系-综合应用实例视频)(第4版) 第05章-答案
- 2025年度智能机器人产业员工聘用合同
- 二零二五农村宅基地买卖与农村土地流转收益分配与管理合同
- 2025年度购物中心店铺转租及品牌入驻合作协议
- 二零二五年度商业街区月停车位车库租赁合同样本
- 2025年度航空航天投资战略合作框架协议书
- 2025年度电商平台返点积分兑换协议书
- 二零二五年度智能电网建设工期调整补充协议
- 高标准农田建设项目验收技术方案
- 2024年甘肃天水麦积山石窟艺术研究所招聘工作人员考试真题
- 人效的指标体系及其“落地双引擎”
- 2025年山东省荣成市属事业单位招聘岗位及历年高频重点模拟试卷提升(共500题附带答案详解)
- 《教育强国建设规划纲要(2024-2035年)》解读讲座
- 《义务教育语文课程标准》2022年修订版原版
- 天耀中华合唱简谱大剧院版
- 《成本会计学》习题集及答案
- 荧光绿送货单样本excel模板
- 科技馆解说词
- 二年级下册万以内数的认识复习公开课(课堂PPT)
评论
0/150
提交评论