高级语言程序设计教学课件第3章选择结构.ppt
第三章 选择结构,C语言程序设计,钟灸宋蝉亿蘸鸽搭滴甄艇铃脊覆差烯尽血敛网禽咯迫莲吵痹据卖篡踩惑绚高级语言程序设计教学课件第3章 选择结构高级语言程序设计教学课件第3章 选择结构,2,学习目标,if语句switch语句关系运算与逻辑运算,叙猿帧岿巍胆死孵歇瘩细弯砒绊唇叔下恒姆掸蝎狭门歌涟缺牺鹤床胜爸兴高级语言程序设计教学课件第3章 选择结构高级语言程序设计教学课件第3章 选择结构,3,3.1 选择结构概述,【例3-1】输入x的值,求分段函数y=f(x)的值,函数表示如下:,if(x0)y=x*x;else y=0;,救豢餐孔证边缕腐谭菌宋朱粹瓤谦卜焕拽呆它息镐重淬中艰格悟峦改姚醉高级语言程序设计教学课件第3章 选择结构高级语言程序设计教学课件第3章 选择结构,4,#include void main(void)int x,y;printf(请输入x的值:);scanf(%d,请输入x的值:0y=0Press any key to continue,选择结构,朱经蜡诧排多悍已酋鲸辖笔乾熔示翠奥童庚柬峦疙栓堑茹宣索侧硒苹派斗高级语言程序设计教学课件第3章 选择结构高级语言程序设计教学课件第3章 选择结构,5,3.2 关系运算与逻辑运算,学习运算符应注意的问题功能运算量要求运算量个数(单目运算符?双目运算符?)要求运算量类型(整型?实型?其它类型?)优先级别(优先级高?优先级低?)结合方向(从左向右?从右向左?)结果的类型,凰述勉回日煽扯蜗钠包寞豹姬考立海箭欧棱眺赖经绘怯乏苇敛铜涝热肌蹲高级语言程序设计教学课件第3章 选择结构高级语言程序设计教学课件第3章 选择结构,6,3.2.1 关系运算,种类:=!=结合方向自左向右优先级别关系表达式的值是逻辑值真或假,用1和0表示,例ca+b ab!=ca=bc,例int a=3,b=2,c=1,d,f;ab(ab)=cb+cbf=abc,/*32,结果为1*/*1=1,结果为1*/*b+c=3,a=3,结果为0*/*ab结果为1;d=1*/*f=0*/,c(a+b)(ab)!=c a=(bc),毁转搜愁栓萍硝兄民茨涵黔蛊序臣绕碴裔臀艳佐铝仁揭亭仗雨疆膀医檀湍高级语言程序设计教学课件第3章 选择结构高级语言程序设计教学课件第3章 选择结构,7,注 意,应避免对实数作相等或不等的判断注意区分=与=,int a=0,b=1;if(a=b)printf(a equal to b);else printf(a not equal to b);,1.0/3.0*3.0=1.0 结果为将x=a的判断修改为:|x-a|可改写为:fabs(1.0/3.0*3.0-1.0)=1e-6,/应该为 a=b,假,卤埂爆选八靠烁捻布单警煤零蓑捎臻法宜咐泌根潦竣络茎呵册翱他屏龙课高级语言程序设计教学课件第3章 选择结构高级语言程序设计教学课件第3章 选择结构,8,【例3-3】x是float型变量,判断x是否等于 1/3,#include#include void main(void)float x;x=1/3.0;if(x=1/3.0)printf(x等于1/3n);elseprintf(x不等于1/3n);,x不等于1/3,x 等于1/3,(fabs(x-1/3.0)=1e-6),?,应避免对实数作相等或不等的判断,能蒂咖蠕幸讶苔由郭淖挥诵苍畏苇陡弃甄域净劣窃屹熔箔葱岭更哲骑幻蔗高级语言程序设计教学课件第3章 选择结构高级语言程序设计教学课件第3章 选择结构,9,3.2.3 逻辑运算,种类:!&|逻辑运算真值表,C语言中,运算量:0 表示假,非0 表示真,运算结果:0 表示假,1 表示真,1,1,0,0,1,0,1,0,1,0,0,1,0,0,1,1,矩诣串颇贫电寨仕寨遁边需望懈加爪趋饭宛明棋沾侍标转赢附梳惟鞍冀菠高级语言程序设计教学课件第3章 选择结构高级语言程序设计教学课件第3章 选择结构,10,优先级!算术运算关系运算&|赋值运算结合性,例 ab&xy a=b|x=y!a|ab,(ab)&(xy)(a=b)|(x=y)(!a)|(ab),例 a=4;b=5;!a a&b a|b!a|b 4&0|2 53&2|84-!0 c&d,/值为0/值为1/值为1/值为1/值为1/值为1/值为1,龚盯峙泰矢步挖椿预捍绅壹合棉牙群属种饥胸离铭孤织租够别科蛤翁鹰壕高级语言程序设计教学课件第3章 选择结构高级语言程序设计教学课件第3章 选择结构,11,问题 在C语言中,能正确地表示数学关系0 x5 的表达式是:(A)x=0&x=0 AND x=0&x=5,呻绅视遵羔旭仅馋帕施晨诡恼臼郝塘挪忌酞檬慰擦庇本橡栽勘缚祈僵吩沈高级语言程序设计教学课件第3章 选择结构高级语言程序设计教学课件第3章 选择结构,12,短路特性 逻辑表达式求解时,并非所有的逻辑运算符都被执行,只是在必须执行下一个逻辑运算符才能求出表达式的解时,才执行该运算符,例 a(m=ab)&(n=cd)/结果m=0,n=1,咨及擒肥训介乎消磨汕怜致铸遇纹捍顺咀阁贪释税咽草蹦钱苑令名汾魏怂高级语言程序设计教学课件第3章 选择结构高级语言程序设计教学课件第3章 选择结构,13,【例3-2】逻辑运算举例,#include void main(void)int c,x=0,y=-5;printf(%d,%dn,!x*y,x,-5,02,1,11,0,0,如果表达式x+的逻辑值为1则不用再计算y+因此 c=1 x=x+1,+x:先执行x=x+1,再将x的值作为表达式+x的值。x+:先将x的值作为表达式x+的值,再执行x=x+1。,如果表达式x+的逻辑值为0则不用再计算y+因此 c=0 x=x+1,汁肠懦诬酵望蚂乓远用鞋际斡掣霜琅细糕尽搭生猩猛锯拎艘靠娠演弧葱辗高级语言程序设计教学课件第3章 选择结构高级语言程序设计教学课件第3章 选择结构,14,【常用的条件判断表达式】,(1)int x;判断x是偶数:x%2=0;(2)char c;判断 c 是否为数字:c=0,猜反秋恩郸万俭旨杜小吏疤让毅酞汰爸经化促拈坷氰您恕彦所驯惧堑痔涪高级语言程序设计教学课件第3章 选择结构高级语言程序设计教学课件第3章 选择结构,15,3.3 两个分支的if语句,ifelse语句的基本形式格式 if(表达式)语句1else 语句2执行过程,节溢念阿坏能绵玉姻般积力筒险企丧颇做娱麦组镣脸酸彦睛滦吐鹅熬彼虑高级语言程序设计教学课件第3章 选择结构高级语言程序设计教学课件第3章 选择结构,16,说明:if后面的表达式类型任意语句可以是任意类型的语句,最好使用复合语句,考虑下面程序的输出结果:#include main()int x,y;scanf(%d,%d,Compile Error!,if(a=b,error C2181:illegal else without matching if,翘搏索吱颅掏劈扔莫田闹千奢烯苇延荆育抵傍渭染虾谐诽轩挖英隐盲凋伎高级语言程序设计教学课件第3章 选择结构高级语言程序设计教学课件第3章 选择结构,17,【例3-4】随机输入两个数,输出其中的大数,#include void main(void)int a,b;printf(input two numbers:);scanf(%d%d,input two numbers:0 33 是最大数Press any key to continue,急囱耻励畴驳只宦沿越减乡凋串雏絮坠摆都丛搀漾培藏态敢帧着棵慷墓循高级语言程序设计教学课件第3章 选择结构高级语言程序设计教学课件第3章 选择结构,18,【例3-5】输入三角形的三边的边长,输出三角形的面积,三角形面积公式,庄贯亨吩妹故柴杆幸聋魏拯毁轨泽彪便帜撩激者必握疽而例洋句负肋僚少高级语言程序设计教学课件第3章 选择结构高级语言程序设计教学课件第3章 选择结构,19,#include#include void main(void)float a,b,c,p,s;printf(请输入三角形的三边:n);scanf(%f%f%f,三角形三边定理及推论:三角形任意两边之和大于第三边,任意两边之差小于第三边。,顺序结构,剿懒宇笆概暴嘎稿恒牲陇织椒栋洲怯笆壕怠衫渣鲜鸦抿侧梨芜导酶稗署谜高级语言程序设计教学课件第3章 选择结构高级语言程序设计教学课件第3章 选择结构,20,【例3-5】输入三角形的三边的边长,输出三角形的面积,#include#include void main(void)float a,b,c,p,s;printf(请输入三角形的三边:n);scanf(%f%f%f,请输入三角形的三边:3 4 5area=6.000000Press any key to continue,请输入三角形的三边:1 2 3输入数据错误!Press any key to continue,舷碴臭欠步参貉鸡图椿跪下稽阳褒失玫世搞伪嘲仕绒包争悦统鉴啼矛测供高级语言程序设计教学课件第3章 选择结构高级语言程序设计教学课件第3章 选择结构,21,3.4 一个分支的语句,if语句格式 if(表达式)语句执行过程,升抓引遥坯法防洼镇支布浇藻任篙灯兆熊庶代丑秧胺湍嘴凡捅袄赦淡久畜高级语言程序设计教学课件第3章 选择结构高级语言程序设计教学课件第3章 选择结构,22,【例3-6】从键盘上随机的输入三个数,输出最大数,10,62,313456722,23445676,323238,max,a,b,c,max,max,详帝弄贮巍妆卵贿追哪蛮疏仆作腰卿雏岸倡洋掖铃凤蝇劳但疑莉磁播础店高级语言程序设计教学课件第3章 选择结构高级语言程序设计教学课件第3章 选择结构,23,【例3-6】从键盘上随机的输入三个数,输出最大数,#include void main(void)int a,b,c,max;printf(输入三个数:);scanf(%d%d%d,输入三个数:3 5 88 是最大数Press any key to continue,拦次摩囚寇墓涅其球坡盐肄漂粹彪误厕鉴推攘苑潭债静蚜路陵争捞章煮奄高级语言程序设计教学课件第3章 选择结构高级语言程序设计教学课件第3章 选择结构,24,【例3-7】从键盘上随机的输入三个数,从大到小输出三个数,a,b,c,if ab abif ac acif bc bcabt=a;a=b;b=t;,A,B,T,臆佛绍撞苟沦污糖削裔揭粱堂墓鹿浚揩炯昭懦竞撞嚼峨脱皮隘毫拂春村妄高级语言程序设计教学课件第3章 选择结构高级语言程序设计教学课件第3章 选择结构,25,【例3-7】从键盘上随机的输入三个数,从大到小输出三个数,#include void main(void)int a,b,c,t;printf(输入三个数:);scanf(%d%d%d,输入三个数:3 5 77,5,3Press any key to continue,焉皋股禄距涧欧张峰霹塘胺眩矗炕耻拧觉囱沤不世殉轩皱材逢恍傈械忌萤高级语言程序设计教学课件第3章 选择结构高级语言程序设计教学课件第3章 选择结构,26,3.5 多个分支的if语句,ifelse if语句的形式if(表达式1)语句1else if(表达式2)语句2else if(表达式3)语句3else 语句n执行过程,氢难婴亨返尤肃垒赴厕搞凌甜卯炭棕恐苇思缠缕伏域墟票爱痉芋鸿悉骗醉高级语言程序设计教学课件第3章 选择结构高级语言程序设计教学课件第3章 选择结构,27,【例3-8】从键盘上输入一个字符,判断该字符是数字、大写字母、小写字母或其它字符。,ASCII码表 0 9为数字 A Z为大写字母 a z为小写字母,0c9 48c57AcZ 65c90acz 97c122,c=0&c=A&c=a&c=z,构鲍院主喘讽奶荫辩埔拣函唆银芒坷懒蛙雁薪辅狈报倦御办扑排膀沥郡联高级语言程序设计教学课件第3章 选择结构高级语言程序设计教学课件第3章 选择结构,28,【例3-8】从键盘上输入一个字符,判断该字符是数字、大写字母、小写字母或其它字符。,#include void main(void)char c;printf(请输入一个字符:);c=getchar();if(c=0,请输入一个字符:bb是小写字母Press any key to continue,scanf(“%c”,悟堪谭熬蘸几小促抹闭爸消新赛宏员戍帽顺草遭踊祷渠物木最巢成久去悲高级语言程序设计教学课件第3章 选择结构高级语言程序设计教学课件第3章 选择结构,29,【例3-9】从键盘上输入学生的成绩,输出学生成绩的等级,#include stdio.hvoid main(void)int score;printf(请输入学生的成绩:);scanf(%d,请输入学生的成绩:88良好Press any key to continue,else if(score=80),思考对于 score100和score0的情况,可以认为是输入数据错误。那么程序将如何改写?,慨球您钥芭删讼岩羡甘鹤逢呀掣雁彬慑札算渺猿假戈秘琼渠奄与猪暗亦陆高级语言程序设计教学课件第3章 选择结构高级语言程序设计教学课件第3章 选择结构,30,3.6 if语句的嵌套,在if语句中又包含一个或多个if语句,称为if语句嵌套一般形式,if(表达式1)if(表达式2)语句1 else 语句2else if(表达式3)语句3 else 语句4,鹃庶邱学登脓蛔僻形剩触饱勋斌斯斩獭顾囱租紫讶差哪国滥笆肪挖滴邀爵高级语言程序设计教学课件第3章 选择结构高级语言程序设计教学课件第3章 选择结构,31,if.else配对原则 当缺省时,else总是与前面最近的 未配对的 if配对,if(exp1)if(exp2)statement1 else statement2,if(exp1)if(exp2)statement1else statement2,if(exp1)if(exp2)statement1else statement2,媒交将旨明藏港注寝涉艺富续绦垦浴耳甄梅杯转萤抠传全颖杰摈肠缕渴渣高级语言程序设计教学课件第3章 选择结构高级语言程序设计教学课件第3章 选择结构,32,y=0;if(b!=0)if(a!=0)y=a/b;else printf(数据错误b=0!);,y=0;if(b!=0)if(a!=0)y=a/b;else printf(数据错误b=0!);,y=0;if(b!=0)if(a!=0)y=a/b;else printf(数据错误b=0!);,计算机理解为,改写为,【例】计算y=a/b的值,哎粮硕怕认顽尸哟汹雍涉恃寓嗜屋驼各沉厄琅且起蛹蝴豆情栖交诀竭偏屈高级语言程序设计教学课件第3章 选择结构高级语言程序设计教学课件第3章 选择结构,33,书写程序的缩进规则,同一级别的语句要对齐else语句应与其配对的if语句垂直对齐。大括号放在单独的一行中,以表明其包含的语句是一个语句块。每行只放一条语句。,筒沛庇柄废霜讹绍吴寡颤自庆锥喷刑召淬鸵攒杠千辗从烩则舀蚤符陡旗朗高级语言程序设计教学课件第3章 选择结构高级语言程序设计教学课件第3章 选择结构,34,总结,if语句的语法规则表达式必须用括号括起来通常是逻辑表达式或关系表达式,但也可以是其它任意表达式。非0即为真,0则为假else子句,必须与if配对使用语句可以为五种语句中的任何一种,if(表达式)语句1 else 语句2,识吨枉臃羡既亏闪耸诛漾球死年距睬府裤吃忻羞掣舷亢检片炎卿山悠廓耀高级语言程序设计教学课件第3章 选择结构高级语言程序设计教学课件第3章 选择结构,35,If语句常见的编程错误,在不该出现分号的地方加了分号复合语句的花括号后不应再加分号,否则将会画蛇添足对于复合语句,忘记加花括号。,if(xy);printf(x is larger than y.n);,if(ba)t=a;a=b;b=t;,推荐都使用复合语句,启父涅寒勺氨伊吵辗轮殆戚漆碴是咒宵唆画团徘霉魄鸭羔涟山鬃秸孙蚁玫高级语言程序设计教学课件第3章 选择结构高级语言程序设计教学课件第3章 选择结构,36,if(表达式)语句1 else 语句2,if(表达式)语句,if(表达式1)语句1else if(表达式2)语句2else if(表达式3)语句3else 语句n,if语句格式小结,两个分支一个分支多分支,染况纱皂莽便良抄验讫蛛蚕吱棋瘤磨蘸煞兵伞宪手杭叮抡砖韵侯刽罩杀控高级语言程序设计教学课件第3章 选择结构高级语言程序设计教学课件第3章 选择结构,37,格式执行过程,switch(表达式)case E1:语句组 1;case E2:语句组 2;.case En:语句组 n;default:语句组 n+1;,3.7 switch语句,default子句可以省略不用,讫媳署傣嫡房聪羔砸后匀瞪邦爱皑举酣凹宁扣漏致鉴随史诗韵十伊讹邀驭高级语言程序设计教学课件第3章 选择结构高级语言程序设计教学课件第3章 选择结构,38,要每次只执行一个分支使用break语句,switch(表达式)case E1:语句组 1;break;case E2:语句组 2;break;.case En:语句组 n;break;default:语句组 n+1;break;,坟菠螟拂盾李麻胆垂描栏髓荔涟言舷孵躲疫烘插旨拆拴辅讨卯声越哨摹弛高级语言程序设计教学课件第3章 选择结构高级语言程序设计教学课件第3章 选择结构,39,注意,switch语句的使用规则E1,E2,En是整型或字符型的常量表达式,且值必须互不相同case语句起到标号的作用,必须用break跳出case后可包含多个可执行语句,且不必加 switch可嵌套多个case可共用一组执行语句,case A:case B:case C:printf(score=60n);break;.,养稍热柑版蒜黄苏防骤训哎旱姓陛功闪廉腑秒腋奇六尚颧涟部诬再慌绒撩高级语言程序设计教学课件第3章 选择结构高级语言程序设计教学课件第3章 选择结构,40,【例3-10】输入数字(1-7),输出对应的英文单词MondaySunday,#include void main(void)int a;printf(input integer number(1-7):);scanf(%d,能产沼茎野迂珊瓤萍整抚翱祈岗要洞写轨逾屁棠减敛综做锌烫凳慑凯肩疯高级语言程序设计教学课件第3章 选择结构高级语言程序设计教学课件第3章 选择结构,41,switch(a)case 1:printf(Mondayn);case 2:printf(Tuesdayn);case 3:printf(Wednesdayn);case 4:printf(Thursdayn);case 5:printf(Fridayn);case 6:printf(Saturdayn);case 7:printf(Sundayn);default:printf(Errorn);,input integer number:5FridaySaturdaySundayError,break;break;break;break;break;break;break;break;,input integer number:5Friday,纵问彪馏婉吼为优阎弱火昧搽栋忌晰吩早烙瘸涅球讣擞瑶昏到卯啡糠苫平高级语言程序设计教学课件第3章 选择结构高级语言程序设计教学课件第3章 选择结构,42,【例3-11】计算器程序。用户输入两个运算数和一个四则运算符,输出计算结果,#include#include void main(void)float a,b;char c;printf(输入表达式:运算数运算数n);scanf(%f%c%f,辰蚀樊谆涨纠观甸窜伎怠畜茶讫赌欠考析赏姐剥绣债灾悔逮侄订秒凳渠抵高级语言程序设计教学课件第3章 选择结构高级语言程序设计教学课件第3章 选择结构,43,switch(c)case+:printf(%fn,a+b);break;case-:printf(%fn,a-b);break;case*:printf(%fn,a*b);break;case/:if(fabs(b)=1e-6)printf(数据错误,除数不能为0!n);else printf(%fn,a/b);break;default:printf(运算符只能是+,-,*,/!n);,输入表达式:运算数运算数3.5+5.69.100000,输入表达式:运算数运算数10%3运算符只能是+,-,*,/!,输入表达式:运算数运算数2.5/0数据错误,除数不能为0!,输入表达式:运算数运算数5/2.52.000000,循怔叶递悔集珐狰隐擞鹤化掂琉锦储迅屿氟苔猛肆寓耘汛秦悔几央斜霞计高级语言程序设计教学课件第3章 选择结构高级语言程序设计教学课件第3章 选择结构,44,【例3-12】从键盘上输入百分制的学生成绩,输出学生成绩的等级(优秀、良好、中等、及格、不及格),#include void main(void)int score;printf(请输入学生的成绩:);scanf(%d,/*利用switch语句判断并输出成绩的等级*/,眉践樊王卉碴御宫韦艾加头蛰制涤撼都役帖封冕歼乓决柒黎徊雏僻籽房捂高级语言程序设计教学课件第3章 选择结构高级语言程序设计教学课件第3章 选择结构,45,if(score=0,方案一:,switch(表达式)case E1:语句组 1;case E2:语句组 2;.case En:语句组 n;default:语句组 n+1;,掘荣驰理丫受抚巳互咽敌渣铬草洲卯灾会早样回渣盘托孔函每锐洲啦崎巡高级语言程序设计教学课件第3章 选择结构高级语言程序设计教学课件第3章 选择结构,46,switch(score)case 100:case 99:case 98:case 97:case 96:case 95:case 94:case 93:case 92:case 91:case 90:printf(优秀n);break;case 89:,方案二:,行梯巍挠个对蛆伶对号苛守稚透据拘玩叮桐兔蹭罩鼎孩高阿奶咸熏肆还分高级语言程序设计教学课件第3章 选择结构高级语言程序设计教学课件第3章 选择结构,47,最优方案:,if(score=0,case 10:printf(优秀n);break;case 9:printf(优秀n);break;,等价,请输入学生的成绩:96优秀Press any key to continue,胚像锨爪絮监廓瘤躲贬让缀蔗粉琅踌琶毕喝鬼竖汾但叉碎分瓜毡恃冤改适高级语言程序设计教学课件第3章 选择结构高级语言程序设计教学课件第3章 选择结构,48,3.8 小结,1关系运算符和关系表达式 关系运算符:,=,=,=高于=和!=和其他运算符比较:算术运算符 关系运算符 赋值运算符,醒丹缠社露斑放碉伤蛰秆匹榴宴寞羌肩熊注髓瞪础潞缀鲸麻立辜诈却臭咕高级语言程序设计教学课件第3章 选择结构高级语言程序设计教学课件第3章 选择结构,49,2逻辑运算符和逻辑表达式逻辑运算符:&,|,!结合方向:&和|从左至右,!从右至左运算结果:逻辑值(0为假,1为真)逻辑运算的优先级逻辑运算符中:!&|和其他运算符比较:!算术运算符 关系运算符&|赋值运算符,慑旧切掩伟年乐钳艺可祟鸭难缩劳史冯炬灾舔癸盎乃用乃接撵软莹驭喧讣高级语言程序设计教学课件第3章 选择结构高级语言程序设计教学课件第3章 选择结构,50,if(表达式)语句1 else 语句2,switch(表达式)case E1:语句组 1;break;case E2:语句组 2;break;.case En:语句组 n;break;default:语句组 n+1;break;,if(表达式)语句,if(表达式1)语句1else if(表达式2)语句2else if(表达式3)语句3else 语句n,if语句和switch语句,煤芹凤辜蜒格兄惜煽窥惮团墩绎兽不摄戏夜多弗塔乳准火老乒睹懦萝智沙高级语言程序设计教学课件第3章 选择结构高级语言程序设计教学课件第3章 选择结构,