欢迎来到淘文阁 - 分享文档赚钱的网站! | 帮助中心 好文档才是您的得力助手!
淘文阁 - 分享文档赚钱的网站
全部分类
  • 研究报告>
  • 管理文献>
  • 标准材料>
  • 技术资料>
  • 教育专区>
  • 应用文书>
  • 生活休闲>
  • 考试试题>
  • pptx模板>
  • 工商注册>
  • 期刊短文>
  • 图片设计>
  • ImageVerifierCode 换一换

    C语言程序设计谭浩强编 选择结构程序设计学时.pptx

    • 资源ID:87404757       资源大小:227.92KB        全文页数:37页
    • 资源格式: PPTX        下载积分:20金币
    快捷下载 游客一键下载
    会员登录下载
    微信登录下载
    三方登录下载: 微信开放平台登录   QQ登录  
    二维码
    微信扫一扫登录
    下载资源需要20金币
    邮箱/手机:
    温馨提示:
    快捷下载时,用户名和密码都是您填写的邮箱或者手机号,方便查询和重复下载(系统自动生成)。
    如填写123,账号就是123,密码也是123。
    支付方式: 支付宝    微信支付   
    验证码:   换一换

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

    C语言程序设计谭浩强编 选择结构程序设计学时.pptx

    5.1.2 关系表达式 用关系运算符将两个表达式连接起来的式子,称为关系表达式。下面为一些合法的关系表达式:a+bb+c(a=3)(b=5)ab 关系表达式的结果只有两种:真或假;在C语言中,“真”的值为1代表,“假”的值为0代表。例:假设a=3,b=2,c=1,则:(ab)=c 结果为:表达式的值为真;d=ab 结果为:d的值为1;f=abc 结果为:f的值为0;第1页/共37页 5.2 逻辑运算符和逻辑表达式5.2.1 逻辑运算符及其优先次序C语言提供三种逻辑运算符:(1)&逻辑与(与运算符)(2)|逻辑或(或运算符)(3)!逻辑非(非运算符)说明:1)“&”和“|”为双目运算符,“!”为单目运算符;2)逻辑运算的结果只有两种:真或假。逻辑运 算的真值表详细情况见书P89表5.1。第2页/共37页几种运算符的优先次序为:!(!(非非)(高)(高)算术运算符算术运算符关系运算符关系运算符&和和|赋值运算符赋值运算符 (低)(低)例:!a&b|xy&c 第3页/共37页5.2.2 逻辑表达式 C语言编译系统在给出逻辑运算结果时,“真”的值为1,“假”的值为0。但是在判断一个量是否为“真”时,以0代表“假”,以非0代表“真”。例:1)若a=4,则!a=0;2)若a=4,b=5 则 a&b=1;a|b=1;!a|b=1;3)53&2|8b)&(n=cd)(m=ab)&(n=cd)后后mm和和n n的值分别是多少?的值分别是多少?在逻辑表达式的求解中,并不在逻辑表达式的求解中,并不是所有的逻辑运算符都被执行,只是是所有的逻辑运算符都被执行,只是在必须执行下一个逻辑运算符才能求在必须执行下一个逻辑运算符才能求出表达式的解时,才执行该运算符。出表达式的解时,才执行该运算符。第4页/共37页一个重要的例子:判断某一年是否为闰年的方法。而为闰年的条件是符合下面两者之一:(1)能被4整除,但不能被100整除;(2)能被4整除,又能被400整除;首先分析逻辑结构:1、条件(1)和条件(2)的关系应该是“或”;2、而每个条件内部应该为“与”关系;3、条件(2)内,满足被400整除的一定满足被4整除,因此只需一个逻辑表达式即可;所以最后的逻辑表达式为:(year%4=0)&(year%100!=0)|(year%400=0)根据运算符的优先级关系,上式可简化为:year%4=0&year%100!=0|year%400=0第5页/共37页 5.3 if 语句 if语句是用来判断所给的条件是否满足,根据判定的结果决定执行给出的两种操作之一。5.3.1 if 语句的三种形式:1.if (表达式)语句执行过程,如左图:if(xy)printf(“%d”,x);表达式表达式语句语句假(0)真(非0)xyxyprintf(“%d”,x)printf(“%d”,x)假(0)真(非0)第6页/共37页2.if (表达式)语句1 else 语句2例如:if(xy)printf(“%d”,x);else printf(“%d”,y);表达式表达式语句语句1 1假(0)真(非0)语句语句2 2xyxyprintf(“%d”,x)printf(“%d”,x)假(0)真(非0)printf(“%d”,y)printf(“%d”,y)第7页/共37页3.if(表达式1)语句1 else if(表达式2)语句2 else if(表达式3)语句3 else if(表达式m)语句m else 语句n表达式表达式1 1语句语句1 1假真表达式表达式2 2语句语句2 2真假表达式表达式3 3语句语句3 3语句语句4 4真假表达式表达式4 4语句语句5 5假真第8页/共37页例:if(number500)cost=0.15;else if(number300)cost=0.10;else if(number100)cost=0.075;else if(number50)cost=0.05;else cost=0;number500number500cost=0.15cost=0.15假真cost=0.10cost=0.10真假cost=0.075cost=0.075cost=0.05cost=0.05真假cost=0cost=0假真number300number300number100number100number50number50第9页/共37页说明:1)if 语句中在if后面都有表达式,如果表达式的值为0,则按“假”处理,如果为非0,则按“真”处理;例如:if(3)printf(“O.K.”);直接执行打印“O.K.”if(a)printf(“%d”,a);打印a的ASCII码972)注意在if 语句第二、三形式中每个语句后都有分号;if (number500)if (number500)cost=0.15 cost=0.15;elseelse if(number300)if(number300)cost=0.10 cost=0.10;else else if(number100)if(number100)cost=0.075 cost=0.075;elseelse if(number50)if(number50)cost=0.05 cost=0.05;else else cost=0 cost=0;第10页/共37页3)在if 和else后面只能含一个内嵌的操作语句,当有多个操作语句,此时须用花括号“”将几个语句括起来成为一个复合语句。例:if(ab)m=a;printf(“The MAX number is%d”,m);else m=b;printf(“The MAX number is%d”,m);第11页/共37页#例5.1:输入两个实数,按代数值由小到大的次序输出这两个数;分析:这是一个简单而重要的程序,算法的关键在与设 置一个中间交换变量,用于比较两个实数的大小 后进行次序的变换;main()float a,b,t;scanf(“%f,%f”,&a,&b);if(ab)t=a;a=b;b=t;printf(“%5.2f,%5.2f”,a,b);5t3abt535第12页/共37页*例5.2 输入3个数a、b、c,要求按由小到大的顺序输出;分析:此题算法比上题稍微复杂一些。上题为两个变量 比较大小,只需进行一次比较,而本题为三个变 量,则需进行三次比较。其伪代码算法为:if ab 将a和b对换 (对换之后,a比b小)if ac 将a和c对换 (对换之后,a比c小,a为最小)if bc 将b和c对换 (对换之后,b比c小,b为次小)经过三次比较和变换后:a为最小值,b为次小值,c为最大值。程序可写为:第13页/共37页#includemain()float a,b,c,t;scanf(“%f,%f,%f”,&a,&b,&c);if(ab)t=a;a=b;b=t;if(ac)t=a;a=c;c=t;if(bc)t=b;b=c;c=t;printf(“%5.2f,%5.2f,%5.2f”,a,b,c);第14页/共37页5.3.2 if语句的嵌套 在 if 语句又包含一个或多个if语句称为if语句的嵌套.一般形式:if()if()语句1 else 语句2else if()语句3 else 语句4注意:if与else的配对关系。else总是与它上面的最近的if 配对。第15页/共37页if()if()语句1else if()语句2 else 语句3if()if()语句1 else if()语句2 else 语句3此此if,elseif,else配对配对此此if,elseif,else配对配对它们共同构成第它们共同构成第一个一个If If的内嵌语句的内嵌语句加上一个花括符,限定了内嵌加上一个花括符,限定了内嵌if if语句的范围,可避免上述错误的语句的范围,可避免上述错误的出现出现第16页/共37页*例例5.3 5.3 有一函数:有一函数:编一程序,输入一个编一程序,输入一个x x值,输出值,输出y y值。值。算法算法1:1:若若x0 y=-1x0 y=1x0 y=1 输出输出y ymain()main()int x,y;int x,y;scanf(“%d”,&x);scanf(“%d”,&x);if(x0)y=-1;if(x0)y=1;if(x0)y=1;printf(“x=%d,y=%dn”,x,y);printf(“x=%d,y=%dn”,x,y);y=-1 (x0)开始开始输入输入x xx0 x0 x0Y YN N第17页/共37页开始开始输入输入x xx0 x0 x=0 x=0Y YN Ny=0y=0y=1y=1Y YN Ny=-1y=-1输出输出x,yx,y结束结束(算法算法2)2)main()int x,y;scanf(“%d”,&x);if(x0)y=-1;else if(x=0)y=0;else y=1;printf(“x=%d,y=%dn”,x,y);算法算法2:2:输入输入x x 若若x0 y=-1x0)y=1;else y=0 x!=0 x!=0Y Yy=-1y=-1x0 x0Y YN NN Ny=1y=1y=0y=0此程序的错误在于当x=0时使y=-1而产生错误的原因是认为第二行的if和第四行的else配对书P96程序4也是犯了同样的错误第20页/共37页5.3.3 条件运算符条件运算符的引入:例如:if(ab)max=a;else max=b;可以写为:max=(ab)?a:b;一般形式为:表达式1?表达式2:表达式3这是C语言中惟一的三目运算,其流程图如左图所示。表达式表达式1 1条件表达式条件表达式取表达式取表达式2 2的值的值条件表达式条件表达式取表达式取表达式3 3的值的值真真(非非0)0)假假(0)(0)简化某些简单的简化某些简单的if if 语句。语句。第21页/共37页说明:1)执行顺序:先求解表达式1,若为真(非0),则求解表达式2,并把表达式2的值作为整个条件表达式的值;否则求解表达式3,把表达式3的值作为整个条件表达式的值;例:max=(ab)?a:b2)条件运算符优先于赋值运算符,而低于关系运算符和算术运算符;3)条件运算符的结合方式为“自右向左”。如:ab?a:cd?c:d相当于ab?a:(cd?c:d)作业:找出a,b,c三个数中的最大值 放到max中。要求:用条件运算符,一个表达式实现第22页/共37页4)只有在if语句中内嵌的语句为赋值语句,且两个分支都给同一变量赋值时才能代替if语句。if(ab)max=a;else max=b;5)条件表达式中,表达式的类型可以不同,而表达式的值取它们之中较高的类型。例1:设x为整型变量,有x?a:b例2:xy?1:1.5,当xy时,表达式的值转换为1.0第23页/共37页#例 5.4 输入一个字符,判断它是否为大写字母,如果是,将它转换为小写字符;如果不是,不转换。然后输出最后得到的字符。main()char ch;scanf(“%c”,&ch);ch=(ch=A&ch=Z)?(ch+32):ch;printf(“%c”,ch);此程序介绍一个大小写字母转换的方法,值得注意和掌握。作业:输入一个字符,判断:1)如果是大写,则大写变小写;2)如果是小写,则小写变大写;3)都不是,则不变要求:用if.else和条件运算符两中方法来编写第24页/共37页5.4 switch 语句一般形式:switch(表达式)case 常量表达式1:语句1 case 常量表达式2:语句2 case 常量表达式n:语句n default:语句n+1流程图如左图所示。表达式表达式=常量表达式常量表达式1 1表达式表达式=常量表达式常量表达式2 2表达式表达式=常量表达式常量表达式n n语句语句1 1语句语句2 2语句语句n ndefaultdefault语句语句n+1n+1第25页/共37页例:要求按照考试成绩的等级打印出百分制分数段。switch(grade)caseA:printf(“85100n”);caseB:printf(“7084n”);caseC:printf(“6069n”);caseD:printf(“60n”);default:printf(“errorn”);如果grade的值等于A,则将连续输出:851007084 606960error 产生这样结果的原产生这样结果的原因是因是:“casecase常量表常量表达式达式”只是起只是起语句标语句标号作用号作用,并不是在该,并不是在该处进行条件判断。因处进行条件判断。因此,根据此,根据switchswitch后面后面表达式的值找到匹配表达式的值找到匹配的入口标号,就从此的入口标号,就从此开始执行下去,不再开始执行下去,不再进行判断。而这种流进行判断。而这种流程控制并不是我们通程控制并不是我们通常所希望的。常所希望的。第26页/共37页 我们通常情况下,希望在执行一个case分支后,使流程跳出switch结构,终止switch语句的执行。一般我们使用break语句来达到此目的。因此,我们通常使用的switch语句的一般形式为:switch(表达式)case 常量表达式1:语句1;break;case 常量表达式2:语句2;break;case 常量表达式n:语句n;break;default:语句n+1 最后一个分支可以不加break语句。第27页/共37页表达式表达式=常量表达式常量表达式1 1表达式表达式=常量表达式常量表达式2 2表达式表达式=常量表达式常量表达式n n语句语句1 1语句语句2 2语句语句n ndefaultdefault语句语句n+1n+1breakbreakbreakbreakbreakbreakbreakbreak第28页/共37页因此上例可以改写为:switch(grade)caseA:printf(“85100n”);break;caseB:printf(“7084n”);break;caseC:printf(“6069n”);break;caseD:printf(“60n”);break;default:printf(“errorn”);break;如果grade的值为B,则只输出“7084”。第29页/共37页说明:说明:(1)(1)当表达式的值与某一个当表达式的值与某一个casecase后面的常量表达式的值相等时,就执行此后面的常量表达式的值相等时,就执行此casecase后面的语句。若所有的后面的语句。若所有的casecase中的常量表达式的值都没有与表达式中的常量表达式的值都没有与表达式的值匹配,执行的值匹配,执行defaultdefault后面的语句;后面的语句;(2)(2)每一个每一个casecase的常量表达式的值必须的常量表达式的值必须互不相同互不相同,否则就会出现互相矛盾的,否则就会出现互相矛盾的现象;现象;(3)(3)各个各个casecase和和defaultdefault的出现次序不影响执行结果;的出现次序不影响执行结果;(4)(4)casecase后面即使有一个以上的执行语句,也可以后面即使有一个以上的执行语句,也可以不必用花括弧不必用花括弧括起来,系括起来,系统会自动顺序执行本统会自动顺序执行本casecase后面所有的执行语句。后面所有的执行语句。(5)(5)多个多个casecase可以共用一组执行语句。可以共用一组执行语句。第30页/共37页5.5 程序举例编写程序的一般步骤:1)分析题意;2)根据题意划出N-S流程图;3)写出伪代码;4)写出程序代码;5)调试程序。*例5.5 写程序,判断某一年是否闰年。分析题意可参见例2.3和例2.13。此题中为了程序书写 方便,我们定义一个整型变量leap作为是否闰年的标志。划出N-S流程图。第31页/共37页yearyear被被4 4整除整除真真假假yearyear被被100100整除整除yearyear被被400400整除整除真真真真真真假假假假假假leap=0leap=0leap=0leap=0leap=1leap=1leap=1leap=1leapleap输出输出“闰年闰年”输出输出“非闰年非闰年”第32页/共37页main()int year,leap;scanf(“%d”,&year);if(year%4=0)if(year%100=0)if(year%400=0)leap=1;else leap=0;else leap=1;else leap=0;if(leap)if(leap)printf(“%d is”,year);printf(“%d is”,year);else else printf(“%d is not”,year);printf(“%d is not”,year);printf(“a leap year.n”);printf(“a leap year.n”);第33页/共37页*例5.7运输公司对用户计算费用。路程(s)越远,每公里运费越低。标准如下:s 250km 没有折扣 250=s 500 2%折扣 500=s 1000 5%折扣 1000=s 2000 8%折扣 2000=s 3000 10%折扣 3000=3000)c=12;else c=s/250;switch(c)case 0:d=0;break;case 1:d=2;break;case 2:case 3:d=5;break;case 4:case 4:case 5:case 5:case 6:case 6:case 7:d=8;break;case 7:d=8;break;case 8:case 8:case 9:case 9:case 10:case 10:case 11:d=10;break;case 11:d=10;break;case 12:d=15;break;case 12:d=15;break;f=p*w*s*(1-d/100.0);f=p*w*s*(1-d/100.0);printf(“freight=%15.4”,f);printf(“freight=%15.4”,f);第36页/共37页谢谢您的观看!第37页/共37页

    注意事项

    本文(C语言程序设计谭浩强编 选择结构程序设计学时.pptx)为本站会员(莉***)主动上传,淘文阁 - 分享文档赚钱的网站仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。 若此文所含内容侵犯了您的版权或隐私,请立即通知淘文阁 - 分享文档赚钱的网站(点击联系客服),我们立即给予删除!

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




    关于淘文阁 - 版权申诉 - 用户使用规则 - 积分规则 - 联系我们

    本站为文档C TO C交易模式,本站只提供存储空间、用户上传的文档直接被用户下载,本站只是中间服务平台,本站所有文档下载所得的收益归上传人(含作者)所有。本站仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。若文档所含内容侵犯了您的版权或隐私,请立即通知淘文阁网,我们立即给予删除!客服QQ:136780468 微信:18945177775 电话:18904686070

    工信部备案号:黑ICP备15003705号 © 2020-2023 www.taowenge.com 淘文阁 

    收起
    展开