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

    5 选择结构1.ppt

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

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

    5 选择结构1.ppt

    C语言程序设计语言程序设计第1页T THHE E C C P PR RO OG GR RA AMMMMI IN NG G L LA AN NG GU UA AG GE E第第5章章 选择结构程序设计选择结构程序设计5.1 关系运算符及表达式5.2 逻辑运算符及表达式5.3 if语句5.4 switch语句5.5选择结构程序设计举例C语言程序设计语言程序设计第2页T THHE E C C P PR RO OG GR RA AMMMMI IN NG G L LA AN NG GU UA AG GE E问题与说明问题与说明【问题问题】1、从键盘输入一个数,如果该数为正,打印,否则不打印;2、解一元二次方程,求出相应的实根或复根。解决办法:解决办法:1、引入新的程序结构:选择结构,又称之为分支结构选择结构,又称之为分支结构 2、为了配合分支结构相,需引入逻辑表达式的概念。3、有三种形式可进行分支结构的程序设计 A、if 结构(三种具体形式)B、多重选择结构(switch语句,即情形结构)C、无条件转移结构(goto语句,不要求)C语言程序设计语言程序设计第3页T THHE E C C P PR RO OG GR RA AMMMMI IN NG G L LA AN NG GU UA AG GE E5.1 关系运算符及表达式关系运算符及表达式关系运算符关系运算符 含义含义 例子例子 结果结果 优先级优先级 大于大于 4+69 T 小于小于 8=大于或等于大于或等于 6=5 T =小于或等于小于或等于 8=x+14521 结果为结果为0C语言程序设计语言程序设计第5页T THHE E C C P PR RO OG GR RA AMMMMI IN NG G L LA AN NG GU UA AG GE E5.1 关系表达式实例关系表达式实例 用关系运算符将两个算术表达式或两个字符串表达式联起来的式子,其值为逻辑值。例5101#includemain()int a,b;a=10=56;b=(10=5)6;printf(“%d,%dn”,a,b);输出结果:例5102#includemain()int a,b;a=6*77+8;b=7!=73;printf(“%d,%dn”,a,b);输出结果:0,11,1C语言程序设计语言程序设计第6页T THHE E C C P PR RO OG GR RA AMMMMI IN NG G L LA AN NG GU UA AG GE E1)C语言提供三种逻辑运算符:语言提供三种逻辑运算符:&逻辑与(相当于“同时”)|逻辑或(相当于“或者”)!逻辑非(相当于“否定”)2)运算规则运算规则 1)&:当且仅当两个运算量的值都为“真”时,运算结果为“真”,否则为“假”。2)|:当且仅当两个运算量的值都为“假”时,运算结果为“假”,否则为“真”。3)!:当运算量的值为“真”时,运算结果为“假”;当运算量的值为“假”时,运算结果为“真”。5.2 逻辑运算及其表达式逻辑运算及其表达式C语言程序设计语言程序设计第7页T THHE E C C P PR RO OG GR RA AMMMMI IN NG G L LA AN NG GU UA AG GE E5.2 逻辑运算符逻辑运算符例如,假定例如,假定x=5,则则 (x=0)&(x10)的值为的值为“真真”,(x5)的值为的值为“假假”。3)运算结果为数值型)运算结果为数值型:0表示假,表示假,1表示真。表示真。4)结合方向)结合方向:从左到右(从左到右(&、|););从右到左(!)。从右到左(!)。例:例:f=!(34)结果为结果为1 5)优先级别)优先级别:(高)(高)!,&、|(低)(低)C语言程序设计语言程序设计第8页T THHE E C C P PR RO OG GR RA AMMMMI IN NG G L LA AN NG GU UA AG GE E5.2 逻辑表达式中的优先级图示逻辑表达式中的优先级图示2、运算符的优先级、运算符的优先级1、逻辑运算符的优先级、逻辑运算符的优先级!&|高高低低()!,+,-,(类型类型),sizeof*,/,%+,-自右至左自右至左,=,!=&|赋值运算符赋值运算符?:C语言程序设计语言程序设计第9页T THHE E C C P PR RO OG GR RA AMMMMI IN NG G L LA AN NG GU UA AG GE E2 2、逻辑表达式、逻辑表达式用逻辑运算符连接关系表达式的式子称逻辑表达式。用逻辑运算符连接关系表达式的式子称逻辑表达式。例:用逻辑表达式表达下述数学式例:用逻辑表达式表达下述数学式(1)0 x10 (2)x80(3)10 x 30,50 x 90相应的逻辑表达相应的逻辑表达:(1)0 x&x10(2)x80(3)(x=10&x=50&x=90)C语言程序设计语言程序设计第10页T THHE E C C P PR RO OG GR RA AMMMMI IN NG G L LA AN NG GU UA AG GE E逻辑运算的特殊规则逻辑运算的特殊规则1)a&b&c:只有只有a 为非为非0时才计算时才计算b 的值;只有的值;只有a和和b 都为非都为非0时才计时才计算算c 的值;的值;2)a|b|c:只要只要a 为非为非0时就不必计算时就不必计算b 和和c;只有;只有a为为0时才计算时才计算b 的的值;值;只有只有a和和b 都为都为0时才计算时才计算c 的值;的值;3)a|b&c:当当a的值为的值为0时才计算时才计算b;只有当;只有当a的值为的值为0,且,且b的值为真的值为真(非(非0)时才计算)时才计算c;4)a&b|c:当当a的值为真(非的值为真(非0)时才计算)时才计算b;当(;当(a&b)运算后的)运算后的值为假时才计算值为假时才计算c;C语言程序设计语言程序设计第11页T THHE E C C P PR RO OG GR RA AMMMMI IN NG G L LA AN NG GU UA AG GE E逻辑运算的特殊规则实例逻辑运算的特殊规则实例例:写出程序运行结果main()int a=0,b=1,c=-1;a+|-b&c+;printf(“%d%d%dn”,a,b,c);-a|b+|+c;printf(“%d%d%dn”,a,b,c);-a+&ba;printf(“%d%d%dn”,a,b,c);输出结果:1 0 -10 1 01 1 0分析:a+|-b&c+;中,先判断a(为0),然后a在自加边为1;要执行-b;b 变为0;则c+不被执行,所有c的值不变。第一次输出结果为:1 0 -1C语言程序设计语言程序设计第12页T THHE E C C P PR RO OG GR RA AMMMMI IN NG G L LA AN NG GU UA AG GE E5.3 if 语句语句5.3.1 简单if语句语句一般格式一般格式:if(表达式)语句体【说明说明】1)表达式可以是任意类型的值,具体形式有:常量、变量、函数调用、表达式(包括算术表达式、赋值表达式、逗号表达式、关系表达式、逻辑表达式、条件运算表达式、)2)表达式必须加()括起来。3)语句体中的语句可以是:一条语句;多条语句(当语句体包含多个语句时,语句体要用括起来。可以单独占一行)。C语言程序设计语言程序设计第13页T THHE E C C P PR RO OG GR RA AMMMMI IN NG G L LA AN NG GU UA AG GE E4)执行过程:当表达式的值为非0时,执行语句体的语句5)一个if语句总体上只算一条语句注意:(1)c中对“真”、“假”的表示:只要表达式的值为非0则认为是“真”,否则是“假”;(2)“假”(0值)的几种具体形式:0、0.0、0、NULL(3)关系、逻辑运算的结果(的表示)与“真”、“假”值的区别与联系。5.3 if 语句语句C语言程序设计语言程序设计第14页T THHE E C C P PR RO OG GR RA AMMMMI IN NG G L LA AN NG GU UA AG GE E 例例5.2输入任意三个数a、b、c,按从小到大的顺序排序输出。分析:if(ab)a和b交换,另a为a,b中较小值 if(ac)a和c交换,另a为a,b,c中最小值 if(bc)b和c交换,另b为次大值,c为最大值 C语言程序设计语言程序设计第15页T THHE E C C P PR RO OG GR RA AMMMMI IN NG G L LA AN NG GU UA AG GE E 例例5.2输入任意三个数a、b、c,按从小到大的顺序排序输出。main()int a,b,c,t;printf(input three numbers:);scanf(%d,%d,%d,&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(%d,%d,%dn,a,b,c);input three numbers:11,22,1811,18,22C语言程序设计语言程序设计第16页T THHE E C C P PR RO OG GR RA AMMMMI IN NG G L LA AN NG GU UA AG GE E5.3.2 复合复合ifelse语句语句1复合if语句的一般格式 if(表达式表达式)语句组语句组1;else 语句组语句组2;【说明说明】(1)表达式可以是任意类型的值,具体形式有:常量、变量、表达式(2)if语句中的“表达式”必须用“(”和“)”括起来。(3)else子句(可选)是if语句的一部分,必须与if配对使用,不能单独使用。(4)if语句允许嵌套,但嵌套的层数不宜太多。(5)“语句组1”和“语句组2”,可以只包含一个简单语句,也可以是复合语句。C语言程序设计语言程序设计第17页T THHE E C C P PR RO OG GR RA AMMMMI IN NG G L LA AN NG GU UA AG GE Eif 逻辑表达式“真”复合语句 1 else 复合语句 2 计算逻辑表达式的值真否?复合语句1复合语句2执行复合语句后的语句FT执行复合语句后的语句ifelse 的执行过程的执行过程不管是简单语句,还是复合语句中的各个语句,每个语句后面的分号必不可少!例如:if(ab)max=a;else max=b;C语言程序设计语言程序设计第18页T THHE E C C P PR RO OG GR RA AMMMMI IN NG G L LA AN NG GU UA AG GE E5.3.2 ifelse if语句语句1符合if语句的一般格式 if(表达式1)语句组1else if(表达式2)语句组2 else if(表达式3)语句组3 else if(表达式4)语句组4 else if(表达式n)语句组n else 语句组n+1【注意】if语句嵌套时,else子句 与在它上面、距它最近、且尚未匹配的if配对。计算表达式1的值真否?语句组1语句组2FT执行复合语句后的语句计算表达式2的值真否?TF计算表达式3的值真否?T 语句组3C语言程序设计语言程序设计第19页T THHE E C C P PR RO OG GR RA AMMMMI IN NG G L LA AN NG GU UA AG GE EIfIfelseelse配对配对规则可能产生的规则可能产生的“副作用副作用”例例5.3:有符号函数,要求输入不同的x的值能输出正确的符号数。算法思路1:先可以用简单的if语句实现,用三个if 语句就可以。算法思路2:要求用简单的ifelse语句实现,分析以下几个程序。C语言程序设计语言程序设计第20页T THHE E C C P PR RO OG GR RA AMMMMI IN NG G L LA AN NG GU UA AG GE E程序1:程序2:if(x=0)if(x0)y=1;else if(x=0)y=0;else y=0;else y=1;else y=-1;程序3:程序4:y=-1;y=0;if(x!=0)if(x=0)if(x0)y=1;if(x0)y=1;else y=0;else y=-1;输入x=0验证输入x=-5验证if语句嵌套时,else子句 与在它上面、距它最近、且尚未匹配的if配对。C语言程序设计语言程序设计第21页T THHE E C C P PR RO OG GR RA AMMMMI IN NG G L LA AN NG GU UA AG GE E选择结构之选择结构之IF语句应用实例分析语句应用实例分析有如下实例,要求用简单if语句、ifelse语句、ifelse if语句分别实现。C语言程序设计语言程序设计第22页T THHE E C C P PR RO OG GR RA AMMMMI IN NG G L LA AN NG GU UA AG GE E算法之一:用算法之一:用if语句实现语句实现main()float x,y;printf(x=?);scanf(%f,&x);if(x1)y=x;if(x=1)y=2*x-1;if(x=10)y=3*x+11;printf(%.2f,y);C语言程序设计语言程序设计第23页T THHE E C C P PR RO OG GR RA AMMMMI IN NG G L LA AN NG GU UA AG GE E算法之二:用算法之二:用ifelse语句实现语句实现main()float x,y;printf(x=?);scanf(%f,&x);if(x=1 */if(x=1&x=10 */printf(%.2f,y);C语言程序设计语言程序设计第24页T THHE E C C P PR RO OG GR RA AMMMMI IN NG G L LA AN NG GU UA AG GE E算法之三:用算法之三:用ifelse if语句实现语句实现main()float x,y;printf(x=?);scanf(%f,&x);if(x1)y=x;else if(x=1&x=10 */printf(%.2f,y);C语言程序设计语言程序设计第25页T THHE E C C P PR RO OG GR RA AMMMMI IN NG G L LA AN NG GU UA AG GE E1一般格式一般格式:表达式1?表达式2:表达式3 3个表达式的类型可以各不相同。2运算规则运算规则 如果“表达式1”的值为非0,则运算结果等于“表达式2”的值;否则,等于“表达式3”的值。例:int max(int a,int b)int m;if(ab)m=a;else m=b;与条件运算等价:m=(ab?a:b);5.3.3 条件运算符条件运算符C语言程序设计语言程序设计第26页T THHE E C C P PR RO OG GR RA AMMMMI IN NG G L LA AN NG GU UA AG GE E例5.4 从键盘上输入一个字符,如果它是大写字母,则把它转换成小写字母输出;否则,直接输出。main()char ch;printf(Input a character:);scanf(%c,&ch);ch=(ch=A&chb?a:b+1 相当于:ab?a:(b+1)例2:ab?a:cd?c:d 相当于:ab?a:(cd?c:d)设:int a=1,b=2,c=3,d=4;则上述表达式的结果为45.3.3 条件运算符条件运算符C语言程序设计语言程序设计第28页T THHE E C C P PR RO OG GR RA AMMMMI IN NG G L LA AN NG GU UA AG GE E输入星期中的某一天输入星期中的某一天,显示对应的英显示对应的英文文#includemain()int i;printf(“Input 1-7:”);scanf(“%d”,&i);if (i=1)printf(“Today is Monday!n”);else if(i=2)printf(“Today is Tuesday!n”);else if(i=3)printf(“Today is Wednesday!n”);else if(i=4)printf(“Today is Thursday!n”);else if(i=5)printf(“Today is Friday!n”);else if(i=6)printf(“Today is Saturday!n”);else printf(“Today is Sunday!n”);此例此例似显似显复杂,复杂,是否是否有更有更好的好的办法办法?C语言程序设计语言程序设计第29页T THHE E C C P PR RO OG GR RA AMMMMI IN NG G L LA AN NG GU UA AG GE E5.4 switch语句的结构及其执行过程语句的结构及其执行过程1switch语句的一般形式一般形式switch(表达式)case 常量表达式1:语句组1;break;case 常量表达式2:语句组2;break;.case 常量表达式:语句组n;break;default:语句组;break;C语言程序设计语言程序设计第30页T THHE E C C P PR RO OG GR RA AMMMMI IN NG G L LA AN NG GU UA AG GE E2执行过程执行过程(1)首先计算)首先计算switch后的条件表达式的值,后的条件表达式的值,(2)找到与表达式的值相同的找到与表达式的值相同的case,执行该执行该case后面的语句组(包括之后的各个后面的语句组(包括之后的各个case和和default情形,情形,并不再对之后的各并不再对之后的各case进行判断);进行判断);(3)如果没有任何一个)如果没有任何一个case 匹配,则执行匹配,则执行default 后面的语句组(后面的语句组(若存在若存在default情形时情形时)。)。(4)break语句的功能:跳出语句的功能:跳出switch结构。(通常结构。(通常在在case语句执行完语句执行完 后添加后添加break,结束分支结构,结束分支结构)5.4 switch语句的结构及其执行过程语句的结构及其执行过程C语言程序设计语言程序设计第31页T THHE E C C P PR RO OG GR RA AMMMMI IN NG G L LA AN NG GU UA AG GE E3说明说明(1)switch后面的后面的“表达式表达式”一般是:一般是:int、char和枚举型中的一种和枚举型中的一种 也也可可以以是是不不含含变变量量与与函函数数的的常常量量表表达达式式。例例:case 3+4:/*正确正确*/case x+y:/*错误错误 设设int x=3,y=4;*/(2)多个)多个case子句,可共用同一语句(组)。子句,可共用同一语句(组)。例如例如:case 10:case 9:printf(grade=An);break;(3)default情形可以省略;每个情形可以省略;每个case后面的语句后面的语句有多条语句时不必加有多条语句时不必加括起来。括起来。5.4 switch语句的结构及其执行过程语句的结构及其执行过程C语言程序设计语言程序设计第32页T THHE E C C P PR RO OG GR RA AMMMMI IN NG G L LA AN NG GU UA AG GE Emain()int i;printf(“Input 1-7:”);scanf(“%d”,&i);switch(i)case 1:printf(“Today is Monday!”);case 2:printf(“Today is Tuesday!”);case 3:printf(“Today is Wednesday!”);case 4:printf(“Today is Thursday!”);case 5:printf(“Today is Friday!”);case 6:printf(“Today is Saturday!”);default:printf(“Today is Sunday!”);输入星期中的某一天输入星期中的某一天,显示对应的英文显示对应的英文break;break;break;break;break;break;C语言程序设计语言程序设计第33页T THHE E C C P PR RO OG GR RA AMMMMI IN NG G L LA AN NG GU UA AG GE E5.5 5.5 选择结构程序设计举例选择结构程序设计举例例例5.6 求一元二次方程求一元二次方程ax2+bx+c=0的解(的解(a0)。)。#include math.hmain()float a,b,c,disc,x1,x2,p,q;scanf(“%f,%f,%f”,&a,&b,&c);disc=b*b-4*a*c;if(fabs(disc)1e-6)x1=(-b+sqrt(disc)/(2*a);/*求出两个不相等的实根*/x2=(-b-sqrt(disc)/(2*a);printf(x1=%7.2f,x2=%7.2fn,x1,x2);C语言程序设计语言程序设计第34页T THHE E C C P PR RO OG GR RA AMMMMI IN NG G L LA AN NG GU UA AG GE E else p=-b/(2*a);/*求出两个共轭复根*/q=sqrt(fabs(disc)/(2*a);printf(“x1=%7.2f+%7.2f in“,p,q);printf(”x2=%7.2f-%7.2f in“,p,q);说明:由于实数在计算机中存储时,经常会有一些微小误差,所以本案例判断disc是否为0的方法是:判断disc的绝对值是否小于一个很小的数(例如10-6)。思考题:思考题:如果将系数a、b、c定义成整数,能否直接判断disc是否等于0?5.5 选择结构程序设计举例选择结构程序设计举例C语言程序设计语言程序设计第35页T THHE E C C P PR RO OG GR RA AMMMMI IN NG G L LA AN NG GU UA AG GE E例例:从键盘上输入一个百分制成绩从键盘上输入一个百分制成绩score,按下列原则,按下列原则输出其等级:输出其等级:score90,等级为,等级为A;80score90,等,等级为级为B;70score80,等级为,等级为C;60score70,等级,等级为为D;score60,等级为,等级为E。分析分析:1)可以用最简单的switch分支结构实现,将成绩转化为十个分数段(score/10):0-10;每个值分别对应于每个成绩段。再分10种情形处理。2)将问题划分为6种情形,106,default;再分6种情形处理。5.5 5.5 选择结构程序设计举例选择结构程序设计举例C语言程序设计语言程序设计第36页T THHE E C C P PR RO OG GR RA AMMMMI IN NG G L LA AN NG GU UA AG GE Emain()int score;printf(“Input a score(0100):”);scanf(“%d”,&score);/*将成绩转化成10种情形*/switch(score/10)case 10:case 9:printf(“grade=An”);break;case 8:printf(grade=Bn);break;case 7:printf(grade=Cn);break;case 6:printf(grade=Dn);break;case 5:case 4:case 3:case 2:case 1:case 0:printf(“grade=En”);break;default:printf(“The score is out of range!n”);C语言程序设计语言程序设计第37页T THHE E C C P PR RO OG GR RA AMMMMI IN NG G L LA AN NG GU UA AG GE E一下为参考部分C语言程序设计语言程序设计第38页T THHE E C C P PR RO OG GR RA AMMMMI IN NG G L LA AN NG GU UA AG GE E第第5章章 作业及上机练习作业及上机练习作业:5.2,5.3;5.5上机练习:1)练习例题5.2,5.4,5.7;2)上机编程作业题

    注意事项

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

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




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

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

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

    收起
    展开