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

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

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

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

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

    会计学1C语言程序设计谭浩强编语言程序设计谭浩强编 选择选择(xunz)结结构程序设计学时构程序设计学时PPT课件课件第一页,共37页。n n5.1.2 5.1.2 关系表达式关系表达式n n 用关系运算符将两个表达式连接起来的式子,用关系运算符将两个表达式连接起来的式子,称为称为(chn(chn wi)wi)关系表达式。下面为一些合法的关系关系表达式。下面为一些合法的关系表达式:表达式:n na+bb+ca+bb+c(a=3)(b=5)(a=3)(b=5)ab abn n 关系表达式的结果只有两种:真或假;在关系表达式的结果只有两种:真或假;在C C语语言中,言中,“真真”的值为的值为1 1代表,代表,“假假”的值为的值为0 0代表。代表。n n 例:假设例:假设a=3,b=2,c=1a=3,b=2,c=1,则:,则:n n (ab)=c (ab)=c 结果为:表达式的值为真;结果为:表达式的值为真;n n d=ab d=ab 结果为:结果为:d d的值为的值为1 1;n n f=abc f=abc 结果为:结果为:f f的值为的值为0 0;第1页/共37页第二页,共37页。n n 5.2 5.2 逻辑运算符和逻辑表达式逻辑运算符和逻辑表达式n n5.2.1 5.2.1 逻辑运算符及其优先逻辑运算符及其优先(yuxin)(yuxin)次序次序n nC C语言提供三种逻辑运算符:语言提供三种逻辑运算符:(1)&逻辑(lu j)与(与运算符)(2)|逻辑(lu j)或(或运算符)(3)!逻辑(lu j)非(非运算符)说明(shumng):1)“&”和“|”为双目运算符,“!”为单目运算符;2)逻辑运算的结果只有两种:真或假。逻辑运 算的真值表详细情况见书P89表5.1。第2页/共37页第三页,共37页。n n几种几种(j(j zh zh n n)运算符的优先次序为:运算符的优先次序为:!(!(非非)(高)(高)算术运算符算术运算符关系运算符关系运算符&和和|赋值运算符赋值运算符 (低)(低)例:!a&b|xy&c 第3页/共37页第四页,共37页。n n5.2.2 5.2.2 逻辑表达式逻辑表达式n n C C语言编译系统在给出逻辑运算结果时,语言编译系统在给出逻辑运算结果时,“真真”的的值为值为1 1,“假假”的值为的值为0 0。但是在判断一个量是否为。但是在判断一个量是否为“真真”时,以时,以0 0代表代表(dibi(dibi o)“o)“假假”,以非,以非0 0代表代表(dibi(dibi o)“o)“真真”。n n例:例:1 1)若)若a=4a=4,则,则!a=0!a=0;n n 2 2)若)若a=4a=4,b=5 b=5 则则 a&b=1 a&b=1;a|b=1a|b=1;!a|!a|b=1b=1;n n 3 3)53&2|83&2|8b)&(n=cd)后m和n的值分别是多少?在逻辑表达式的求解(qi ji)中,并不是所有的逻辑运算符都被执行,只是在必须执行下一个逻辑运算符才能求出表达式的解时,才执行该运算符。第4页/共37页第五页,共37页。n n一个重要的例子:n n 判断某一年是否为闰年的方法。而为闰年的条件是符合下面(xi mian)两者之一:n n (1)能被4整除,但不能被100整除;n n (2)能被4整除,又能被400整除;n n首先分析逻辑结构:n n 1、条件(1)和条件(2)的关系应该是“或”;n n 2、而每个条件内部应该为“与”关系;n n 3、条件(2)内,满足被400整除的一定满足被4整除,因此只需一个逻辑表达式即可;n n所以最后的逻辑表达式为:n n(year%4=0)&(year%100!=0)|(year%400=0)n n根据运算符的优先级关系,上式可简化为:n nyear%4=0&year%100!=0|year%400=0第5页/共37页第六页,共37页。5.3 if 5.3 if 语句语句语句语句 if if语句是用来判断所给的条件是否满足语句是用来判断所给的条件是否满足语句是用来判断所给的条件是否满足语句是用来判断所给的条件是否满足(m(m nz)nz),根据判定的结果决定执行给出的两,根据判定的结果决定执行给出的两,根据判定的结果决定执行给出的两,根据判定的结果决定执行给出的两种操作之一。种操作之一。种操作之一。种操作之一。n n5.3.1 if 5.3.1 if 语句语句(y(y j)j)的三种形式:的三种形式:n n1.if (1.if (表达式)语句表达式)语句(y(y j)j)n n执行过程,如左图:执行过程,如左图:n n if(xy)printf(“%d”,x);if(xy)printf(“%d”,x);表达式表达式语句语句(yj)(yj)假(0)真(非0)xyxyprintf(“%d”,x)printf(“%d”,x)假(0)真(非0)第6页/共37页第七页,共37页。n n2.if (2.if (表达式)语句表达式)语句(y(y j)1 else j)1 else 语句语句(y(y j)2j)2n n例如:例如:n nif(xy)printf(“%d”,x);if(xy)printf(“%d”,x);n nelse printf(“%d”,y);else printf(“%d”,y);表达式表达式语句语句(yj)1(yj)1假(0)真(非0)语句语句(yj)2(yj)2xyxyprintf(“%d”,x)printf(“%d”,x)假(0)真(非0)printf(“%d”,y)printf(“%d”,y)第7页/共37页第八页,共37页。n n3.if(3.if(表达式表达式1)1)语句语句(y(y j)1 j)1 n n else if(else if(表达式表达式2)2)语句语句(y(y j)2j)2n n else if(else if(表达式表达式3)3)语句语句(y(y j)3j)3n n n n else if(else if(表达式表达式m)m)语句语句(y(y j)mj)mn n else else 语句语句(y(y j)nj)n表达式表达式1 1语句语句1 1假真表达式表达式2 2语句语句2 2真假表达式表达式3 3语句语句3 3语句语句4 4真假表达式表达式4 4语句语句5 5假真第8页/共37页第九页,共37页。n n例:n nif(number500)cost=0.15;n nelse if(number300)cost=0.10;n n else if(number100)cost=0.075;n n else if(number50)cost=0.05;n n 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页第十页,共37页。n n说明:说明:n n1 1)if if 语句中在语句中在if if后面都有表达式,如果表达式的后面都有表达式,如果表达式的值为值为0,0,则按则按“假假”处理,如果为非处理,如果为非0 0,则按,则按“真真”处理;处理;n n例如:例如:if(3)printf(“O.K.”);if(3)printf(“O.K.”);直接执行直接执行(zhxng)(zhxng)打印打印“O.K.”“O.K.”n nif(a)printf(“%d”,a);if(a)printf(“%d”,a);打印打印aa的的ASCIIASCII码码9797n n2 2)注意在)注意在if if 语句第二、三形式中每个语句后都有语句第二、三形式中每个语句后都有分号;分号;n n 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页第十一页,共37页。n n3)在if 和else后面只能含一个内嵌的操作语句,当有多个操作语句,此时须用花括号“”将几个语句括起来成为(chngwi)一个复合语句。n n例:if(ab)n n m=a;n n printf(“The MAX number is%d”,m);n nn n elsen n m=b;n n printf(“The MAX number is%d”,m);n n第11页/共37页第十二页,共37页。n n#例5.1:输入两个实数,按代数值由小到大的次序输出这两个数;n n分析:这是一个简单(jindn)而重要的程序,算法的关键在与设 n n 置一个中间交换变量,用于比较两个实数的大小n n 后进行次序的变换;n n main()n n n n float a,b,t;n n scanf(“%f,%f”,&a,&b);n n if(ab)n n t=a;a=b;b=t;n n printf(“%5.2f,%5.2f”,a,b);n n 5t3abt535第12页/共37页第十三页,共37页。n n*例5.2 输入3个数a、b、c,要求(yoqi)按由小到大的顺序输出;n n分析:此题算法比上题稍微复杂一些。上题为两个变量n n 比较大小,只需进行一次比较,而本题为三个变n n 量,则需进行三次比较。其伪代码算法为:n n if ab 将a和b对换 (对换之后,a比b小)n nif ac 将a和c对换 (对换之后,a比c小,a为最小)n n if bc 将b和c对换 (对换之后,b比c小,b为次小)n n 经过三次比较和变换后:a为最小值,b为次小值,n n c为最大值。n n 程序可写为:第13页/共37页第十四页,共37页。n n#includen nmain()n n n n float a,b,c,t;n n scanf(“%f,%f,%f”,&a,&b,&c);n n if(ab)n n t=a;a=b;b=t;n n if(ac)n n t=a;a=c;c=t;n n if(bc)n n t=b;b=c;c=t;n n printf(“%5.2f,%5.2f,%5.2f”,a,b,c);n n第14页/共37页第十五页,共37页。5.3.2 if5.3.2 if语句的嵌套语句的嵌套语句的嵌套语句的嵌套 在在在在 if if 语句又包含一个或多个语句又包含一个或多个语句又包含一个或多个语句又包含一个或多个(du(du )if)if语句语句语句语句称为称为称为称为if if语句的嵌套语句的嵌套语句的嵌套语句的嵌套.n n一般形式(xngsh):n nif()n n if()语句1n n else 语句2n nelsen n if()语句3n n else 语句4n n注意:if与else的配对关系。else总是与它上面的最近的if n n 配对。第15页/共37页第十六页,共37页。n nif()n n if()语句(yj)1n nelsen n if()语句(yj)2n n else 语句(yj)3n nif()n n if()语句(yj)1 n nelsen n if()语句(yj)2n n else 语句(yj)3此此if,elseif,else配对配对此此if,elseif,else配对配对它们共同构成第它们共同构成第一个一个If If的内嵌语句的内嵌语句加上一个花括符,限定了内嵌加上一个花括符,限定了内嵌if if语句的范围语句的范围(fnwi)(fnwi),可避免上述错误的出现,可避免上述错误的出现第16页/共37页第十七页,共37页。*例例5.3 5.3 有一函数:有一函数:编一程序,输入一个编一程序,输入一个x x值,输出值,输出(shch)y(shch)y值。值。算法算法1:1:若若x0 y=-1x0 y=1x0 y=1 输出输出(shch)y(shch)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)开始开始(kish)(kish)输入输入(shr)x(shr)xx0 x0 x0Y YN N第17页/共37页第十八页,共37页。开始开始(kish)(kish)输入输入(shr)x(shr)xx0 x0 x=0 x=0Y YN Ny=0y=0y=1y=1Y YN Ny=-1y=-1输出输出(shch)x,y(shch)x,y结束结束(算法算法2)2)n nmain()main()n n n n int x,y;int x,y;n n scanf(“%d”,&x);scanf(“%d”,&x);n n if(x0)if(x0)n n y=-1;y=-1;n n else else n n if(x=0)if(x=0)n n y=0;y=0;n n else elsen n y=1;y=1;n n printf(“x=%d,y=%dn”,x,y);printf(“x=%d,y=%dn”,x,y);n n 算法算法2:2:输入输入x x 若若x0 y=-1x0)y=1;n nelse y=0 x!=0 x!=0Y Yy=-1y=-1x0 x0Y YN NN Ny=1y=1y=0y=0此程序的错误(cuw)在于当x=0时使y=-1而产生错误的原因(yunyn)是认为第二行的if和第四行的else配对书P96程序4也是犯了同样的错误第20页/共37页第二十一页,共37页。5.3.3 5.3.3 条件条件条件条件(tiojin)(tiojin)运算符运算符运算符运算符n n条件运算符的引入:n n例如:n nif(ab)max=a;n nelse max=b;n n 可以写为:n nmax=(ab)?a:b;n n一般形式(xngsh)为:n n 表达式1?表达式2:表达式3n n这是C语言中惟一的三目运n n算,其流程图如左图所示。表达式表达式1 1条件条件(tiojin)(tiojin)表达式表达式取表达式取表达式2 2的值的值条件表达式条件表达式取表达式取表达式3 3的值的值真真(非非0)0)假假(0)(0)简化某些简单的简化某些简单的if if 语句。语句。第21页/共37页第二十二页,共37页。n n说明:说明:n n1 1)执行顺序:先求解表达式)执行顺序:先求解表达式1,1,若为若为(ru wi)(ru wi)真真(非非0)0),则求,则求解表达式解表达式2 2,并把表达式,并把表达式2 2的值作为整个条件表达式的值;的值作为整个条件表达式的值;否则求解表达式否则求解表达式3 3,把表达式,把表达式3 3的值作为整个条件表达式的的值作为整个条件表达式的值;值;n n例:例:max=(ab)?a:bmax=(ab)?a:bn n2 2)条件运算符优先于赋值运算符,而低于关系运算符和算)条件运算符优先于赋值运算符,而低于关系运算符和算术运算符;术运算符;n n3 3)条件运算符的结合方式为)条件运算符的结合方式为“自右向左自右向左”。n n如:如:ab?a:cd?c:dab?a:cd?c:d相当于相当于ab?a:(cd?c:d)ab?a:(cd?c:d)作业:找出a,b,c三个数中的最大值 放到max中。要求:用条件运算符,一个(y)表达式实现第22页/共37页第二十三页,共37页。n n4)只有在if语句中内嵌的语句为赋值语句,且两个分支都给同一变量赋值时才能代替if语句。n nif(ab)max=a;n nelse max=b;n n5)条件表达式中,表达式的类型可以(ky)不同,而表达式的值取它们之中较高的类型。n n例1:设x为整型变量,有x?a:bn n例2:xy?1:1.5,当xy时,表达式的值转换为1.0第23页/共37页第二十四页,共37页。n n#例 5.4 输入一个字符,判断它是否为大写字母,如果是,将它转换为小写字符;如果不是,不转换。然后输出最后得到的字符。n nmain()n n char ch;n n scanf(“%c”,&ch);n n ch=(ch=A&ch=Z)?(ch+32):ch;n n printf(“%c”,ch);n nn n此程序(chngx)介绍一个大小写字母转换的方法,值得注意和掌握。作业:输入一个字符,判断:1)如果是大写,则大写变小写;2)如果是小写,则小写变大写;3)都不是,则不变要求:用if.else 和条件(tiojin)运算符两中方法来编写第24页/共37页第二十五页,共37页。5.4 switch 5.4 switch 语句语句语句语句(y(y j)j)n n一般形式(xngsh):n nswitch(表达式)n n n n case 常量表达式1:语句1n n case 常量表达式2:语句2n n n n case 常量表达式n:语句nn n default:语句n+1n nn n流程图如左图所示。表达式表达式=常量常量(chngling)(chngling)表达式表达式1 1表达式表达式=常量表达式常量表达式2 2表达式表达式=常量表达式常量表达式n n语句语句1 1语句语句2 2语句语句n ndefaultdefault语句语句n+1n+1第25页/共37页第二十六页,共37页。n n例:要求按照考试成绩的等级打印出百分制分数段。例:要求按照考试成绩的等级打印出百分制分数段。n nswitch(grade)switch(grade)n n n n caseA:printf(“85100n”);caseA:printf(“85100n”);n n caseB:printf(“7084n”);caseB:printf(“7084n”);n n caseC:printf(“6069n”);caseC:printf(“6069n”);n n caseD:printf(“60n”);caseD:printf(“60n”);n n default:printf(“errorn”);default:printf(“errorn”);n n n n如果如果gradegrade的值等于的值等于AA,则将连续,则将连续(linx)(linx)输出:输出:n n8510085100n n7084 7084 n n60696069n n6060n nerrorerror 产生这样结果的原产生这样结果的原因是:因是:“case“case常量表常量表达式达式”只是起语句标号只是起语句标号作用,并不是在该处作用,并不是在该处进行条件判断进行条件判断(pndun)(pndun)。因此,。因此,根据根据switchswitch后面表达后面表达式的值找到匹配的入式的值找到匹配的入口标号,就从此开始口标号,就从此开始执行下去,不再进行执行下去,不再进行判断判断(pndun)(pndun)。而。而这种流程控制并不是这种流程控制并不是我们通常所希望的。我们通常所希望的。第26页/共37页第二十七页,共37页。n n 我们通常情况下,希望(xwng)在执行一个case分支后,使流程跳出switch结构,终止switch语句的执行。一般我们使用break语句来达到此目的。因此,我们通常使用的switch语句的一般形式为:n n switch(表达式)n n n n case 常量表达式1:语句1;break;n n case 常量表达式2:语句2;break;n n n n case 常量表达式n:语句n;break;n n default:语句n+1n n n n 最后一个分支可以不加break语句。第27页/共37页第二十八页,共37页。表达式表达式=常量常量(chngling)(chngling)表达式表达式1 1表达式表达式=常量常量(chngling)(chngling)表达式表达式2 2表达式表达式=常量常量(chngling)(chngling)表达式表达式n n语句语句1 1语句语句2 2语句语句n ndefaultdefault语句语句n+1n+1breakbreakbreakbreakbreakbreakbreakbreak第28页/共37页第二十九页,共37页。n n因此上例可以(ky)改写为:n nswitch(grade)n n n n caseA:printf(“85100n”);break;n n caseB:printf(“7084n”);break;n n caseC:printf(“6069n”);break;n n caseD:printf(“60n”);break;n n default:printf(“errorn”);break;n nn n如果grade的值为B,则只输出“7084”。第29页/共37页第三十页,共37页。说明:说明:(1)(1)当表达式的值与某一个当表达式的值与某一个casecase后面的常量表达式的后面的常量表达式的值相等时,就执行此值相等时,就执行此casecase后面的语句。若所有的后面的语句。若所有的casecase中的常量表达式的值都没有与表达式的值匹中的常量表达式的值都没有与表达式的值匹配,执行配,执行defaultdefault后面的语句;后面的语句;(2)(2)每一个每一个casecase的常量表达式的值必须互不相同,否则的常量表达式的值必须互不相同,否则就会出现互相矛盾的现象;就会出现互相矛盾的现象;(3)(3)各个各个casecase和和defaultdefault的出现次序不影响执行结果;的出现次序不影响执行结果;(4)case(4)case后面即使后面即使(jsh)(jsh)有一个以上的执行语句,也有一个以上的执行语句,也可以不必用花括弧括起来,系统会自动顺序执行本可以不必用花括弧括起来,系统会自动顺序执行本casecase后面所有的执行语句。后面所有的执行语句。(5)(5)多个多个casecase可以共用一组执行语句。可以共用一组执行语句。第30页/共37页第三十一页,共37页。5.5 5.5 程序程序程序程序(chngx)(chngx)举例举例举例举例n n编写程序的一般步骤:n n1)分析题意;n n2)根据题意划出N-S流程图;n n3)写出伪代码;n n4)写出程序代码;n n5)调试程序。n n*例5.5 写程序,判断某一年是否闰年。n n 分析题意可参见例2.3和例2.13。此题中为了程序书写n n 方便(fngbin),我们定义一个整型变量leap作为是否闰年的标志。n n 划出N-S流程图。第31页/共37页第三十二页,共37页。yearyear被被4 4整除整除(zhngch)(zhngch)真真假假yearyear被被100100整除整除(zhngch)(zhngch)yearyear被被400400整除整除(zhngch)(zhngch)真真真真真真假假假假假假leap=0leap=0leap=0leap=0leap=1leap=1leap=1leap=1leapleap输出输出“闰年闰年”输出输出“非闰年非闰年”第32页/共37页第三十三页,共37页。n nmain()n n n n int year,leap;n n scanf(“%d”,&year);n n if(year%4=0)n n if(year%100=0)n n if(year%400=0)n n leap=1;n n else n n leap=0;n n n n elsen n leap=1;n n n n else n n 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页第三十四页,共37页。n n*例5.7运输公司对用户(yngh)计算费用。路程(s)越远,每公里运费越低。标准如下:n n s 250km 没有折扣n n 250=s 500 2%折扣n n 500=s 1000 5%折扣n n 1000=s 2000 8%折扣n n 2000=s 3000 10%折扣n n 3000=3000)c=12;n n else c=s/250;n n switch(c)n n n n case 0:d=0;break;n n case 1:d=2;break;n n case 2:n n 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页。

    注意事项

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

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




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

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

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

    收起
    展开