欢迎来到三一办公! | 帮助中心 三一办公31ppt.com(应用文档模板下载平台)
三一办公
全部分类
  • 办公文档>
  • PPT模板>
  • 建筑/施工/环境>
  • 毕业设计>
  • 工程图纸>
  • 教育教学>
  • 素材源码>
  • 生活休闲>
  • 临时分类>
  • ImageVerifierCode 换一换
    首页 三一办公 > 资源分类 > PPT文档下载  

    四章选择结构程序设计ppt课件.ppt

    • 资源ID:5379975       资源大小:1.40MB        全文页数:32页
    • 资源格式: PPT        下载积分:10金币
    快捷下载 游客一键下载
    会员登录下载
    三方登录下载: 微信开放平台登录 QQ登录  
    下载资源需要10金币
    邮箱/手机:
    温馨提示:
    用户名和密码都是您填写的邮箱或者手机号,方便查询和重复下载(系统自动生成)
    支付方式: 支付宝    微信支付   
    验证码:   换一换

    加入VIP免费专享
     
    账号:
    密码:
    验证码:   换一换
      忘记密码?
        
    友情提示
    2、PDF文件下载后,可能会被浏览器默认打开,此种情况可以点击浏览器菜单,保存网页到桌面,就可以正常下载了。
    3、本站不支持迅雷下载,请使用电脑自带的IE浏览器,或者360浏览器、谷歌浏览器下载即可。
    4、本站资源下载后的文档和图纸-无水印,预览文档经过压缩,下载后原文更清晰。
    5、试题试卷类文档,如果标题没有明确说明有答案则都视为没有答案,请知晓。

    四章选择结构程序设计ppt课件.ppt

    第四章 逻辑运算和判断选择控制,C关系运算符和关系表达式,逻辑运算符和逻辑表达式,if 语句,switch 语句,实例,第四章 逻辑运算和判断选择控制,本章要点:理解关系运算及其表达式理解逻辑运算及其表达式掌握分支语句if的使用掌握多分支语句 switch的使用掌握选择结构程序设计,第四章 逻辑运算和判断选取控制4.1关系运算符和关系表达式 一、关系运算符及优先级,=,=(优先级相同)高=,!=(优先级相同)低 优先级低于算术运算符,高于赋值运算符。结合性:从左至右,例:c a+b 等价于 c(a+b)a b!=c 等价于(a b)!=c a=b c 等价于 a=(b c),二、关系表达式 格式:(表达式 1)关系运算符(表达式 2)例如:(a=3)(b=5)a b+c 注意:1.表达式可以是算术表达式;关系表达式;逻辑表达式;赋值表达式;字符表达式等。2.关系表达式的值为逻辑值,即“真”或“假”。用“1”表示“真”,“0”表示“假”。如:int a=3,b=2,c=1;则:a b 表达式的 值为 1(a b)=c 表达式的 值为 1 f=a b c f 的值为 0,4.2逻辑运算符和逻辑表达式 一、逻辑运算符及优先级!,&,|,(!高于&高于|)1.!高于算术运算符,高于关系运算符,高于&,高于|赋值运算符 2.结合性:从左至右 例如:(a b)&(cd)等价于 ab&cd!a&b|x y&c 等价于(!a)&b|(x y)&c(!a=b)|(x=y)等价于!a=b|x=y,二、逻辑表达式 如:(m=a b)&(n=c d)C 语言中逻辑表达式的值为“1”或“0”。在判断 一个数值量是否为“真”时,以“0”代表“假”,以“非 0”代表“真”。,注意:(1)逻辑表达式的值只能为“1”或“0”。在表达式中不同位置上出现数值,应正确区分 那些是作为数值运算或是关系运算,那些是 逻辑运算对象。,(2)在逻辑表达式的求解中,并非所有的逻辑运算 符都被执行。,1.如:a=4 则!a 为 0 a=4,b=5 则 a&b 的值为 1 4&0|2 则表达式的值为 1,注意:(1)如:5 3 最后 1|0 结果为 1。,注意:(2)例如:a 则:(m=a b)&(n=cd)表达式中n仍为1,注意:(1)如:5 3 最后 1|0 结果为 1。,例如,示例,a=4 则!a 为 0 a=4,b=5 则 a&b 的值为 1 4&0|2 则表达式的值为 1,示例,(2)例如:a 则:(m=a b)&(n=cd)表达式中n仍为1,例如,示例,例如:,二、逻辑表达式 如:(m=a b)&(n=c d)C 语言中逻辑表达式的值为“1”或“0”。在判断 一个数值量是否为“真”时,以“0”代表“假”,以“非 0”代表“真”。,注意:(1)逻辑表达式的值只能为“1”或“0”。在表达式中不同位置上出现数值,应正确区分 那些是作为数值运算或是关系运算,那些是 逻辑运算对象。,(2)在逻辑表达式的求解中,并非所有的逻辑运算 符都被执行。,1.如:a=4 则!a 为 0 a=4,b=5 则 a&b 的值为 1 4&0|2 则表达式的值为 1,注意:(1)如:5 3 最后 1|0 结果为 1。,注意:(2)例如:a 则:(m=a b)&(n=cd)表达式中n仍为1,注意:(1)如:5 3 最后 1|0 结果为 1。,例如,示例,a=4 则!a 为 0 a=4,b=5 则 a&b 的值为 1 4&0|2 则表达式的值为 1,示例,(2)例如:a 则:(m=a b)&(n=cd)表达式中n仍为1,例如,示例,例如:,例如:,4.3 if 语句 一、if 语句的形式 1.if(表达式)语句 例如:if(x y)printf(“%d”,x);,表达式,语句,基本型,1.举例 if(x y)printf(“%d”,x);,if 语句实例 从键盘输入一个整数,如果大于60,就输出这个数。main()int x,y;y=60;printf(“Please input x:”);scanf(“%d”,实例,例如:,4.3 if 语句 一、if 语句的形式 1.if(表达式)语句 例如:if(x y)printf(“%d”,x);,表达式,语句,基本型,1.举例 if(x y)printf(“%d”,x);,if 语句实例 从键盘输入一个整数,如果大于60,就输出这个数。main()int x,y;y=60;printf(“Please input x:”);scanf(“%d”,实例,例如:,4.3 if 语句 一、if 语句的形式 2.if(表达式)语句 1 else 语句 2 例如:if(x y)printf(“%d”,x);else printf(“%d”,y);,表达式,语句 2,语句 1,标准型,2.例如:if(x y)printf(“%d”,x);else printf(“%d”,y);,if 语句实例 从键盘输入两个整数,输出较大的一个数。main()int x,y;printf(“Please input x,y:”);scanf(“%d,%d”,实例,例如:,4.3 if 语句 一、if 语句的形式 2.if(表达式)语句 1 else 语句 2 例如:if(x y)printf(“%d”,x);else printf(“%d”,y);,表达式,语句 2,语句 1,标准型,2.例如:if(x y)printf(“%d”,x);else printf(“%d”,y);,if 语句实例 从键盘输入两个整数,输出较大的一个数。main()int x,y;printf(“Please input x,y:”);scanf(“%d,%d”,实例,3.if(表达式 1)语句 1 else if(表达式 2)语句 2 else if(表达式 3)语句 3 else if(表达式m)语句 m else 语句 n,流程图,switch 多分支结构示意图,重点,说明:表达式:可以是各种类型的表达式或任意的 数值类型(整型、实型,字符型,指针型数据)else 不能单独使用,它是 if 的一部分。if 和else后的语句为复合语句时,应加 号。,表达式类型,反例,正例,如:if(a=b,正例 如:if(a b)a+=2;b=1;else a=1;b+=2;,反例if(a b)a+=2;b=1;else a=1;b+=2;/*b+=2 语句总要执行*/,正例if(a b)a+=2;b=1;/*复合语句必须加 号*/else a=1;b+=2;,正例,if 语句反例if(a b)a+=2;b=1;else a=1;b+=2;/*b+=2 语句总要执行*/,实例,if语句的表达式可以是各种类型的表达式或任意的 数值类型如:if(a=b,正例,说明:表达式:可以是各种类型的表达式或任意的 数值类型(整型、实型,字符型,指针型数据)else 不能单独使用,它是 if 的一部分。if 和else后的语句为复合语句时,应加 号。,表达式类型,反例,正例,如:if(a=b,正例 如:if(a b)a+=2;b=1;else a=1;b+=2;,反例if(a b)a+=2;b=1;else a=1;b+=2;/*b+=2 语句总要执行*/,正例if(a b)a+=2;b=1;/*复合语句必须加 号*/else a=1;b+=2;,正例,if 语句反例if(a b)a+=2;b=1;else a=1;b+=2;/*b+=2 语句总要执行*/,实例,if语句的表达式可以是各种类型的表达式或任意的 数值类型如:if(a=b,正例,例 5.1 将二个数进行升序排序 main()float a,b,t;scanf(“%f,%f”,运行结果:3.6,3.2 3.20,3.60,例 5.1 将二个数进行升序排序,例 5.2 将三个数进行升序排序,例 5.2 将三个数进行升序排序 main()float a,b,c,t;scanf(“%f,%f,%f”,二个数升序淅程序,三个数升序淅程序,将二个数进行升序排序 main()float a,b,t;scanf(“%f,%f”,运行结果:3.6,3.2 3.20,3.60,例 5.1,示例,将三个数进行升序排序 main()float a,b,c,t;scanf(“%f,%f,%f”,例 5.2,示例,例 5.1 将二个数进行升序排序 main()float a,b,t;scanf(“%f,%f”,运行结果:3.6,3.2 3.20,3.60,例 5.1 将二个数进行升序排序,例 5.2 将三个数进行升序排序,例 5.2 将三个数进行升序排序 main()float a,b,c,t;scanf(“%f,%f,%f”,二个数升序淅程序,三个数升序淅程序,将二个数进行升序排序 main()float a,b,t;scanf(“%f,%f”,运行结果:3.6,3.2 3.20,3.60,例 5.1,示例,用if语句和goto语句构成循环,main()int i,sum=0;i=1;loop:if(i=100)sum=sum+i;i+;goto loop;printf(“%d”,sum);,例 5.2,示例,二、if 语句的嵌套 if语句中又包含一个或多个if语句叫 if语句的嵌套。一般形式:if(表达式1)else,内嵌 if 语句,内嵌 if 语句,if(表达式2)语句 1else 语句 2,if(表达式3)语句 3else 语句 4,注意:if和else的配对关系:一个else总是和它上面离 它最近的且没有与其它 else 配对的 if 配对。如if和else的数目不等,应分辩else 与哪个if 配对,必要时可通过加 号来确定配对关系。,例如:if()if()语句1 else 语句2,例 5.3(p95)程序1.main()int x,y;scanf(“%d”,输入 x,x 0,真,假,x=0,真,假,y=1,y=0,y=1,输出 y,程序2.将上面程序的 if 语句改为:,main()int x,y;scanf(“%d”,三、条件运算符和条件表达式 条件运算符:?:C中唯一的一个三元(三目)运算符。条件表达式:表达式1?表达式2:表达式3 说明:1.条件表达式的值可以是表达式2的值或表达式3的值,结果取决于表达式1。2.条件运算符的优先级高于赋值运算符而低于算术、关系、逻辑运算符。,3.条件表达式可嵌套,结合性为“从右至左”。,5.表达式1、2、3 的数据类型可不同,此时 条件表达式值的类型为高类型。,4.条件表达式有时可以替代 if 语句,但条件表达式不能取代一般的 if 语句。,2。例如:max=(a b)?a:b 等价于 max=a b?a:ba+b?a:b+1 等价于(a+b)?a:(b+1),3。如:a b?a:c d?c:d 等价于 a b?a:(c d?c:d)即:表达式3又是一个条件表达式。,4。如:if(a b)max=a;else max=b;等价于:max=(a b)?a:b;如:if(a b)printf(“%d”,a);else printf(“%d”,b);但可以用:printf(“%d”,ab a:b);,2.例,优先级举例如:max=(a b)?a:b 等价于:max=a b?a:b而:a+b?a:b+1 等价于(a+b)?a:(b+1),2,3.例,结合性“从右至左”如:a b?a:c d?c:d 等价于:a b?a:(c d?c:d)即:表达式3又是一个条件表达式。,3,4.例,有时可以替代 if 语句如:if(a b)max=a;else max=b;等价于:max=(a b)?a:b;,4,5.例如:x?a:b(x 为整型)x y?1:1.5 若 x y,则值为1,由于1.5 是实型,故将 1 转换成实型值 1.0,5.例,条件表达式值的类型为高类型 x?a:b(x 为整型)x y?1:1.5 若 x y,则值为1,由于1.5 是实型,故将 1 转换成实型值 1.0,5,三、条件运算符和条件表达式 条件运算符:?:C中唯一的一个三元(三目)运算符。条件表达式:表达式1?表达式2:表达式3 说明:1.条件表达式的值可以是表达式2的值或表达式3的值,结果取决于表达式1。2.条件运算符的优先级高于赋值运算符而低于算术、关系、逻辑运算符。,3.条件表达式可嵌套,结合性为“从右至左”。,5.表达式1、2、3 的数据类型可不同,此时 条件表达式值的类型为高类型。,4.条件表达式有时可以替代 if 语句,但条件表达式不能取代一般的 if 语句。,2。例如:max=(a b)?a:b 等价于 max=a b?a:ba+b?a:b+1 等价于(a+b)?a:(b+1),3。如:a b?a:c d?c:d 等价于 a b?a:(c d?c:d)即:表达式3又是一个条件表达式。,4。如:if(a b)max=a;else max=b;等价于:max=(a b)?a:b;如:if(a b)printf(“%d”,a);else printf(“%d”,b);但可以用:printf(“%d”,ab a:b);,2.例,优先级举例如:max=(a b)?a:b 等价于:max=a b?a:b而:a+b?a:b+1 等价于(a+b)?a:(b+1),2,3.例,结合性“从右至左”如:a b?a:c d?c:d 等价于:a b?a:(c d?c:d)即:表达式3又是一个条件表达式。,3,4.例,有时可以替代 if 语句如:if(a b)max=a;else max=b;等价于:max=(a b)?a:b;,4,5.例如:x?a:b(x 为整型)x y?1:1.5 若 x y,则值为1,由于1.5 是实型,故将 1 转换成实型值 1.0,5.例,条件表达式值的类型为高类型 x?a:b(x 为整型)x y?1:1.5 若 x y,则值为1,由于1.5 是实型,故将 1 转换成实型值 1.0,5,补充例题:main()int m=10,n=5,a=5,b=5;int x,y,z;x=m=n+?m:+n;y=+a+a?+b:a;z=z+=z=m+n+a+b;printf(“%d,%d,%dn”,x,y,z);,等价于 x=(m=n+)?(m):(+n)x为7,此时 m,n分别为 9,7。,等价于y=+a+a?+b:a)y=+ab?a:ay 的值为表达式3 的值,应为 a。此时 a 已自 增了两次。故 y=7,b=4。,等价于z=m+n+a+b+m+n+a+b 故 z 为 54,例 4.4(大写字母转换为小写字母)main()char ch;scanf(“%c”,也可:#include“stdio.h”main()char ch;ch=getchar();ch=(ch=65,switch语句流程示意图,多分支结构也可用if语句嵌套实现,4.4 switch 语句(多分支或开关语句)一般格式:switch(表达式)case 常量表达式1:语句 1 case 常量表达式2:语句 2.case 常量表达式n:语句 n default:语句 n+1,注意冒号,一般格式:,流程示意图,if多分支结构流程示意图,重点,switch 多分支结构示意图,重点,switch语句流程示意图,多分支结构也可用if语句嵌套实现,4.4 switch 语句(多分支或开关语句)一般格式:switch(表达式)case 常量表达式1:语句 1 case 常量表达式2:语句 2.case 常量表达式n:语句 n default:语句 n+1,注意冒号,一般格式:,流程示意图,if多分支结构流程示意图,重点,switch 多分支结构示意图,重点,default:,switch,case D:,break;,A:,例:根据键盘输入的等级,输出对应的分数段main()char grade;scanf(“%c”,说明:1.表达式可为任何数据类型。一般是一个 整数表达式(或字符表达式),与之相应 case 后面应是一个整数或字符。2.每个 case 后的常量表达式的值互不相等。,3.例如:,若输入 A 输出为:85 10070 8460 69 60error,4.多个 case 可以共用一组执行语句。如:.case A:case B:case C:printf(“60 n”);break;.,5.switch 语句可以嵌套。,grade,switch说明1 表达式可为任何数据类型。一般是一个 整数(或字符)表达式,与之相应 case 后面应是一个整数或字符。,重点,switch说明2 每个 case 后的常量表达式的值互不相等。冒号与常量表达式一起构成标号,不能省,,重点,main()char grade;scanf(“%c”,switch说明3 break语句的功能是跳出switch结构。若省略此处及后面的break语句后,程序将顺序执行,不再属于多分支结构。,重点,switch语句 说明4 多个 case 可以共用一组执行语句。,重点,switch语句 说明5 switch 语句可以嵌套。break语句只能跳出本层的switch语句。参见习题内容。,重点,switch语句 说明6 default的功能与程序中的位置无关。参见习题内容。,重点,default:,switch,case D:,break;,A:,例:根据键盘输入的等级,输出对应的分数段main()char grade;scanf(“%c”,说明:1.表达式可为任何数据类型。一般是一个 整数表达式(或字符表达式),与之相应 case 后面应是一个整数或字符。2.每个 case 后的常量表达式的值互不相等。,3.例如:,若输入 A 输出为:85 10070 8460 69 60error,4.多个 case 可以共用一组执行语句。如:.case A:case B:case C:printf(“60 n”);break;.,5.switch 语句可以嵌套。,grade,switch说明1 表达式可为任何数据类型。一般是一个 整数(或字符)表达式,与之相应 case 后面应是一个整数或字符。,重点,switch说明2 每个 case 后的常量表达式的值互不相等。冒号与常量表达式一起构成标号,不能省,,重点,main()char grade;scanf(“%c”,switch说明3 break语句的功能是跳出switch结构。若省略此处及后面的break语句后,程序将顺序执行,不再属于多分支结构。,重点,switch语句 说明4 多个 case 可以共用一组执行语句。,重点,switch语句 说明5 switch 语句可以嵌套。break语句只能跳出本层的switch语句。参见习题内容。,重点,switch语句 说明6 default的功能与程序中的位置无关。参见习题内容。,重点,说明:1.表达式可为任何数据类型。常为一个 整型(或字符)表达式,case 后面为对应的一个整型或字符型常量。2.每个 case 后常量表达式的值互不相等。3.各个 case 的出现次序不影响执行结果。(对后面有break 语句时才成立)4.多个 case 可以共用一组执行语句。5.switch 语句可以嵌套。,程序,程序,程序,程序,程序,例:以下程序的输出是:main()int x=1,y=0,a=0,b=0;switch(x)case 1:,switch(y)case 0:a+;break;case 1:b+;break;,case 2:a+;b+;break;case 3:a+;b+;printf(“a=%d,b=%d n”,a,b);,A)a=1,b=0 B)a=2,b=1C)a=1,b=1 D)a=2,b=2,答案:B,例 4.6 求 ax2+bx+c=0 方程的解#include“math.h”main()float a,b,c,disc,x1,x2,realpart,imagpart;scanf(“%f,%f,%f”,else realpart=b/(2*a);imagpart=sqrt(disc)/(2*a);printf(“It has complex roots:n”);printf(“%8.4f+%8.4fin”,realpart,imagpart);printf(“%8.4f%8.4fi n”,realpart,imagpart);运行结果:1,2,1 The equation has two equal roots:1.0000 若输入:1,2,2 The equaton has complex roots:1.0000+1.0000 i 1.0000 1.0000 i,

    注意事项

    本文(四章选择结构程序设计ppt课件.ppt)为本站会员(sccc)主动上传,三一办公仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。 若此文所含内容侵犯了您的版权或隐私,请立即通知三一办公(点击联系客服),我们立即给予删除!

    温馨提示:如果因为网速或其他原因下载失败请重新下载,重复下载不扣分。




    备案号:宁ICP备20000045号-2

    经营许可证:宁B2-20210002

    宁公网安备 64010402000987号

    三一办公
    收起
    展开