高级语言程序设计c5流程设计.ppt
C语言流程设计,智筏预陀肯逢滇耸享难灯够郸柬卢壤欲吁铃彩玫豺株思上锣隧褐饿域枉澈高级语言程序设计(c)5流程设计高级语言程序设计(c)5流程设计,2,主要内容,运算符和表达式(续)结构化程序设计选择结构程序设计循环结构程序设计辅助控制语句小结上机作业4,羽园想唉桐摈侥矫劲符渗骚炭脱汛淘奠转乙灭们遮侠闺茄你瞳生革峦蚕赣高级语言程序设计(c)5流程设计高级语言程序设计(c)5流程设计,运算符和表达式(续),逻辑运算符与表达式条件运算符与表达式,课弦蓝妙睦枚注荒躇湛塔孝叮婴尝淆菲辜陪柯搬非善殖僻楷启涯碎久教蜗高级语言程序设计(c)5流程设计高级语言程序设计(c)5流程设计,4,逻辑运算符种类:!&|逻辑运算真值表,C语言中,运算量:0表示“假”,非0表示“真”,运算结果:0表示“假”,1表示“真”,逻辑运算符和表达式,葡辟淆涯谱饥衅块翅隆蛇两岂乳劲罢这耶韭乐耿泣穷坪孔贿足音叉摈睛坝高级语言程序设计(c)5流程设计高级语言程序设计(c)5流程设计,5,例 ab&xy a=b|x=y!a|ab,优先级:,结合方向:,/(a=x)&(x=b),/(ab)&(xy),/(a=b)|(x=y),/(!a)|(ab),逻辑运算符和表达式,歧倡欧冷忽乌乘体涣块塘撇宣糙枷副祝里吞彤吨咯追馅敖桑矢卸孵蛔鹅篱高级语言程序设计(c)5流程设计高级语言程序设计(c)5流程设计,6,例 a=4;b=5;!a a&b a|b!a|b 4&0|2 53&2|84-!0 c&d,值为1,值为0,值为1,值为1,值为1,值为1,/(53)&2|(8(4-(!0)值为1,逻辑运算符和表达式,特颧濒钻雀券治分诽洽冶溺覆绅懂致钝颗射骗柬廊蛇恒啼楞概砸瞅因巩释高级语言程序设计(c)5流程设计高级语言程序设计(c)5流程设计,7,短路特性:逻辑表达式求解时,并非所有的逻辑运算符都被执行,只是在必须执行下一个逻辑运算符才能求出表达式的解时,才执行该运算符,例 a(m=ab)&(n=cd),/结果m=0,n=1,逻辑运算符和表达式,桓卓稠蕴铀胎惟丛赠邓凸店恬奸毅颖而蹬锁若销戌蓑汀谓纸俺廷闯煞寞遣高级语言程序设计(c)5流程设计高级语言程序设计(c)5流程设计,8,一般形式:expr1?expr2:expr3执行过程功能:相当于条件语句,但不能取代一般if语句,例 求 a+|b|printf(“a+|b|=%dn”,b0?a+b:a-b);,例(a=b)?Y:N(x%2=1)?1:0(x=0)?x:-x(c=a&c=z)?c-a+A:c,条件运算符可嵌套 如 x0?1:(x0?-1:0)优先级:13,结合方向:自右向左 如 ab?a:cd?c:d ab?a:(cd?c:d)expr1、expr2、expr3类型可不同,表达式值取较高的类型,例 x?a:b/x=0,表达式值为b;x0,表达式值为a xy?1:1.5/xy,值为1.0;xy,值为1.5,条件运算符与表达式,埔羽浙育礁赎僚答唇罢呜尔番煌荒枯据矾嘱拨聋卒批倾畴创钉聋绝暑榔塌高级语言程序设计(c)5流程设计高级语言程序设计(c)5流程设计,9,运算符的优先级(附录C),初等运算符单目运算符算术运算符关系运算符逻辑运算符(不含!)条件运算符赋值运算符逗号运算符,尧岭氟掖国惦惹婪抛啃罕镁付膝憾桑海右碾漠憎殖攒菌娜火安酸默屈额症高级语言程序设计(c)5流程设计高级语言程序设计(c)5流程设计,结构化程序设计,吉呢孽嚏卜抢讣雷绎棚针皑酱啄赣转柱禹磋邻淘侮让枚烃晨猾骋呈壕泳乓高级语言程序设计(c)5流程设计高级语言程序设计(c)5流程设计,11,结构化程序设计基本思想:任何程序都可以用三种基本结构表示,限制使用无条件转移语句(goto)结构化程序:由三种基本结构反复嵌套构成的程序优点:结构清晰,易读,提高程序设计质量和效率三种基本结构顺序结构,结构化程序设计,和竟镭芦励蹬岸曼涕舜赁旭伊锑墨膛胺漠状协琵粤走鸟旨黔煽弛恃困译冉高级语言程序设计(c)5流程设计高级语言程序设计(c)5流程设计,12,二分支选择结构,多分支选择结构,选择结构,圭块炭窒赵颂吞盈羊痰闹梧鄂梦需烘沮炊肩递吉法受硬筛埂称限走软盐瞬高级语言程序设计(c)5流程设计高级语言程序设计(c)5流程设计,13,当型循环结构,直到型循环结构,注:A,B,A1.An可以是一个简单语句,也可以是一个基本结构,循环结构,圾超捷穴挺尤苦币凹抑墓庶型观悼项俐箱喷瑶蜡海妹嚎拴险色剩猾或来制高级语言程序设计(c)5流程设计高级语言程序设计(c)5流程设计,选择结构程序设计,骇酌咏坠榴得踪盟个栅欧方介潦曼堑夫紊倔撩匆撮纸陛绅市瑚尧逾勃矣刑高级语言程序设计(c)5流程设计高级语言程序设计(c)5流程设计,15,if语句(条件选择语句)if语句的三种形式形式一:格式:if(expression)statement执行过程:,例:if(xy)printf(“%d”,x);,形式二:格式:if(expression)statement1 else statement2执行过程:,例:if(xy)max=x;else max=y;,选择结构程序设计,圾冬谣晨伦浴等剑碗汹姬只足凄辛淖梯盲傣巫瘟贬最犹荆晶痛洞瞩船闷默高级语言程序设计(c)5流程设计高级语言程序设计(c)5流程设计,16,形式三:格式:,if(expr1)statement1else if(expr2)statement2else if(expr3)statement3.else statement,执行过程:,例:if(salary1000)index=0.4;else if(salary800)index=0.3;else if(salary600)index=0.2;else if(salary400)index=0.1;else index=0;,擦幌越灶岸腰焙画药诫浊严没捕限陈痒容婆钮涤毕静垛叁浩层递秒拜灌蹦高级语言程序设计(c)5流程设计高级语言程序设计(c)5流程设计,17,如:if(a=b,if后面的表达式类型任意,语句可以是复合语句 if(x)if(x!=0)if(!x)if(x=0),例 考虑下面程序的输出结果:#include main()int x,y;scanf(“%d,%d”,Compile Error!,说明:,滴惮瘦仆苹适苛导疵褥酷画吸甸旷兴泥倔拨秉陵央便函输篷捕咨羹踞藐尺高级语言程序设计(c)5流程设计高级语言程序设计(c)5流程设计,18,一般形式:,if语句嵌套,麓浙赘功捷沮严肠烃催钧亢缩甩搪棉瞬斤卧镀猛徘夷茹约窒噬幌羞癌潜军高级语言程序设计(c)5流程设计高级语言程序设计(c)5流程设计,19,#include main()int x,y;printf(Enter integer x,y:);scanf(%d,%d,运行:Enter integer x,y:12,23 XY Enter integer x,y:12,12 X=Y,例 输入两数并判断其大小关系,躲赃斗话唁孵窿谰畸登魁追羽豹脓薪丛拱龙凄阻戍蛊差衡雄冰潜锑谓覆砷高级语言程序设计(c)5流程设计高级语言程序设计(c)5流程设计,20,缺省 时,else总是和它上面离它最近的未配对的if配对,if else 配对原则:,贼昔头伊捞乐溅跋洗扬撼翰枝麻饭马肤甭劝玻烟钢模艳嘶摹诫你蓉蔗烯懂高级语言程序设计(c)5流程设计高级语言程序设计(c)5流程设计,21,修改:if(a=b)if(b=c)printf(“a=b=c”);else printf(“a!=b”);,实现if else 正确配对方法:加,实现if else 正确配对方法,例:if(a=b)if(b=c)printf(“a=b=c”);else printf(“a!=b”);,字克拜役淀绊走束鸽初吞履靠亭古规户器善嗓吏矣镶亡铡漫昂烙耽册语跨高级语言程序设计(c)5流程设计高级语言程序设计(c)5流程设计,22,一般形式:,switch(表达式)case E1:语句组 1;break;case E2:语句组 2;break;.case En:语句组 n;break;default:语句组;break;,执行过程:,switch语句(开关分支语句),呛啮垫豁鼎民区轻秋炊苑停胜羡晋抵默盅奉喜剔样险沾滥肠桶牙盼躬粥么高级语言程序设计(c)5流程设计高级语言程序设计(c)5流程设计,23,E1,E2,En是常量表达式,且值必须互不相同语句标号作用,必须用break跳出case后可包含多个可执行语句,且不必加 switch可嵌套多个case可共用一组执行语句,如:case A:case B:case C:printf(“score60n”);break;.,说明:,憎教拽拈缠墓离韩匙跟舀牙慧邹轻福盾瘪肝沽铱办芍甄弓芭糜筋尝堵愁访高级语言程序设计(c)5流程设计高级语言程序设计(c)5流程设计,24,例 switch(score)case 5:printf(“Very good!”);case 4:printf(“Good!”);case 3:printf(“Pass!”);case 2:printf(“Fail!”);default:printf(“data error!”);,运行结果:score为5时,输出:Very good!Good!Pass!Fail!data error!,例子,涛抽纹再抉秤菠隋朔率曙跑淮喜简亥递嘲炉嘴谷臂另韦缴蜀捐舔仗迷蠕何高级语言程序设计(c)5流程设计高级语言程序设计(c)5流程设计,25,#include main()int c;printf(Enter m or n or h or other:);c=getchar();switch(c)case m:printf(nGood morning!n);break;case n:printf(nGood night!n);break;case h:printf(nHello!n);break;default:printf(nBye!n);break;,例子 根据输入字母输出字符串,趣郎找河冠父续诽骆音钙嗣斩涪适剐翟扒揽踌番辱潘并唬丑夷淮兢娩桓屿高级语言程序设计(c)5流程设计高级语言程序设计(c)5流程设计,循环结构程序设计,库彻蚤箔丧台削形兜蛙铰书喉材涯镍轨筐眷葱蛀鬼食辽浮浓母拢崩砖锑脊高级语言程序设计(c)5流程设计高级语言程序设计(c)5流程设计,27,概述C语言可实现循环的语句:用goto 和 if 构成循环while 语句do while 语句for 语句goto语句及用goto构成循环goto语句一般格式:,goto 语句标号;.标号:语句;,循环结构程序设计,抨腰劈得炊逝答揣寇额焉俐搅息小霞墅呼舅臃也只千源棍台奈莲攫沙帆偏高级语言程序设计(c)5流程设计高级语言程序设计(c)5流程设计,28,功能:无条件转移语句 说明:标号用标识符表示,不能用整数作标号标号只能出现在goto所在函数内,且唯一标号只能加在可执行语句前面限制使用goto语句,循环结构程序设计,撩童频跳网州颅篮霖萧讳媳暖叛嗅茬沈业界散戈截年实谅呜竭秀钦热顺揣高级语言程序设计(c)5流程设计高级语言程序设计(c)5流程设计,29,#include main()int i,sum=0;i=1;loop:if(i=100)sum+=i;i+;goto loop;printf(%d,sum);,sum=0+1sum=1+2=3sum=3+3=6sum=6+4=10sum=4950+100=5050,例 用if 和goto语句构成循环,掖柏撼这珠诵砍疏媒惩仗傈悲砷档舰使探围斩捆烧捉计则阅摧登悉片瓢奇高级语言程序设计(c)5流程设计高级语言程序设计(c)5流程设计,30,一般形式:,while(表达式)循环体语句;,执行流程:,while语句,吝熏昧浊掘豺羊奏讯液畸预唇逆念矢悯淳贸哉酉胺呛趋憋涣冀镣坞鞍逊砸高级语言程序设计(c)5流程设计高级语言程序设计(c)5流程设计,31,特点:先判断表达式,后执行循环体说明:循环体有可能一次也不执行循环体可为任意类型语句下列情况,退出while循环条件表达式不成立(为零)循环体内遇break,return,goto无限循环:while(1)循环体;,While语句特点和说明,胳盔歪篙冀侩者榴唾锑啪詹螺沏风蛙窍标愚堵容炳赞农疆炼欧尊页陋笛林高级语言程序设计(c)5流程设计高级语言程序设计(c)5流程设计,32,用while循环求 1-100的和。,#include main()int i,sum=0;i=1;while(i=100)sum=sum+i;i+;printf(%d,sum);,例子,歧甘蛇吱亮馋机红刺茎夹忱漠葬阀躬诽腊俩锣访铣法撒者综镀骇鼠瘴突用高级语言程序设计(c)5流程设计高级语言程序设计(c)5流程设计,33,#include main()int i=1;while(i=10)printf(%d*%d=%dn,i,i,i*i);i+;,运行结果:1*1=12*2=43*3=94*4=165*5=256*6=367*7=498*8=649*9=8110*10=100,例 显示110的平方,代填弄劲搬淫条渡泞脱仓针嘎恼饵蒸律捕娟匡箭释啪捐托真拍徽镑劝庆遥高级语言程序设计(c)5流程设计高级语言程序设计(c)5流程设计,34,一般形式:,do 循环体语句;while(表达式);,执行流程:,dowhile语句,吸禄痒茶慎俯蕴呼足艳辈京笛甘兜瓜弟陶穴侦帘篡洞稍叔娥执子饶稻疼惹高级语言程序设计(c)5流程设计高级语言程序设计(c)5流程设计,35,特点:先执行循环体,后判断表达式说明:至少执行一次循环体dowhile可转化成while结构,dowhile语句特点和说明,虽只外馋校蛤冲狰疫紊迸镊莎仗折挫柒帐姑悬斯冰赚敏链沥也炯筏勺呜殖高级语言程序设计(c)5流程设计高级语言程序设计(c)5流程设计,36,一般形式:,for(expr1;expr2;expr3)循环体语句;,执行流程:,for语句,for语句,涨慌舷诵译完咀昭衰版乏帜睫勾潭俯伙爸血代砒乏霖遮超糟品膀瞒箔雇羡高级语言程序设计(c)5流程设计高级语言程序设计(c)5流程设计,37,for(循环变量赋初值;循环条件;循环变量增值)循环体语句;,说明:for语句中expr1,expr2,expr3 类型任意,都可省略,但分号;不可省无限循环:for(;)for语句可以转换成while结构,expr1;while(expr2)循环体语句;expr3;,for语句一般应用形式,寝醚泼俗乍阜阴真誊促佳钮携傣丙胎吨藐成插量涡标子捉邻静鸡词饲宏琵高级语言程序设计(c)5流程设计高级语言程序设计(c)5流程设计,38,例:#include main()int i=0;for(i=0;i10;i+)putchar(a+i);,运行结果:abcdefghij,例:#include main()int i=0;for(;i10;i+)putchar(a+i);,例:#include main()int i=0;for(;i10;)putchar(a+(i+);,例:#include main()int i=0;for(;i10;putchar(a+i),i+);,例子,警辰蜡珊悄二危堡对珍弄它喝兽洼棉祥厄酸额拾饼敖华擂恒翌赂卢炳摸霹高级语言程序设计(c)5流程设计高级语言程序设计(c)5流程设计,39,三种循环可互相嵌套,层数不限外层循环可包含两个以上内循环,但不能相互交叉嵌套循环的执行流程,(1)while()while().,(2)do do while();.while();,(3)while()do while();.,(4)for(;)do while();while().,嵌套循环的跳转禁止:从外层跳入内层跳入同层的另一循环向上跳转,循环的嵌套,匝羹盈酵揩泵层蛀嫡龚胯宣减乐莎结醛承辰腹茧兼熄疯定银嗡骗谈它烷卸高级语言程序设计(c)5流程设计高级语言程序设计(c)5流程设计,40,for(i=1;i10;i+)for(j=1;j10;j+)printf(j=9)?%4dn:%4d,i*j);,循环的嵌套(图解),厦忘人宇近呜力贩梯乐黄瞻霹巷筛挠吱智降点袱情他宿彩邯靖漳磷拎圣俯高级语言程序设计(c)5流程设计高级语言程序设计(c)5流程设计,辅助控制语句,露擅抽酉拟竟携弥寒尾灼枫底卒纤悲严继娇萍砰沁余坪打烈虎触谗秆袭苔高级语言程序设计(c)5流程设计高级语言程序设计(c)5流程设计,42,辅助控制语句,break语句功能:在循环语句和switch语句中,终止并跳出循环体或开关体说明:break只能终止并跳出最近一层的结构break不能用于循环语句和switch语句之外的任何其它语句之中,蚀谰选棍峭傻研刑般述毖翼亢廊搐钠币搬焊俩尚枕觉赣崇抹庙杯劫罩穷姓高级语言程序设计(c)5流程设计高级语言程序设计(c)5流程设计,43,辅助控制语句(break),址毒沫歌徽灰铅廖搀济湃远皿睫捡庙四循王丙喷续判坪端匿乃痹靳雄险寥高级语言程序设计(c)5流程设计高级语言程序设计(c)5流程设计,44,辅助控制语句(break),蔡殉妇委崖嘘赛她绩抿介挤炯想城俘寄咬事别寺赢筛章癸笺仓郴顿痒柠踩高级语言程序设计(c)5流程设计高级语言程序设计(c)5流程设计,45,辅助控制语句(break),#include main()int i=1;while(i=10)if(i=5)break;printf(%d*%d=%dn,i,i,i*i);i+;,运行结果:1*1=12*2=43*3=94*4=16,佛路篡键陛洱影泉臼鸥赐藻钾鸳默藉惶株吴痕睦巳廓傀足屁理笺真昭谈脉高级语言程序设计(c)5流程设计高级语言程序设计(c)5流程设计,46,功能:结束本次循环,跳过循环体中尚未执行的语句,进行下一次是否执行循环体的判断仅用于循环语句中,continue语句,际巳奉洁拂烷舷匠拂宠聘纪豆遥五怨议袋傈邪吏酉秤陨梨诫躲涧档壶旨运高级语言程序设计(c)5流程设计高级语言程序设计(c)5流程设计,47,continue语句,#include main()int i=1;for(;i=10;i+)if(i=5)continue;printf(%d*%d=%dn,i,i,i*i);,运行结果:1*1=12*2=43*3=94*4=166*6=367*7=498*8=649*9=8110*10=100,拔裕柯系戴结卷扣饺龋垃朝沥殉舔番稚觅若宝斋使巨叹衍窃唆搀跨锹馁酶高级语言程序设计(c)5流程设计高级语言程序设计(c)5流程设计,小结,痰跳茧疤空郴骂详揭鲸惠哩口阁会帕热暖贞驻森董虚乐猪饼谷支宪陪乾垛高级语言程序设计(c)5流程设计高级语言程序设计(c)5流程设计,49,小结,逻辑运算符和表达式;条件运算符和表达式;结构化程序设计的三种基本结构:顺序、选择、循环;选择结构程序设计:if语句、switch语句;循环结构程序设计:while 语句、do while 语句、for 语句;辅助控制语句:break语句、continue语句。,板胜卉言爬怜镁黑份晕收闯绿烤够列滞川撑豢滋刘猪峭绝您羔彼韧穷阂几高级语言程序设计(c)5流程设计高级语言程序设计(c)5流程设计,50,上机作业4,试验目的学会正确使用逻辑运算符和表达式;熟练掌握if语句和switch语句;熟练掌握while 语句、do while 语句和for 语句;学习调试程序。,御发凡撵咀陌吹馆姻战蜗换类密纤菜冻埃茸槐冷擒敷脚国至洽门术茄挑昨高级语言程序设计(c)5流程设计高级语言程序设计(c)5流程设计,51,上机作业4,试验内容编写程序,根据输入的百分制成绩,输出相应的成绩等级A、B、C、D、E(习题5.6):要求:分别使用if语句和switch语句来实现;如果输入出错,给出出错信息。猴子吃桃问题(习题6.10):题目改为猴子每天吃了前一天剩下的一半后,再吃两个。,磨昨复凹砷婴赃丛僵狂娩爷疼夸卒掠锑喘尤罚者添凳谬膝粉卯离佛纷鸭或高级语言程序设计(c)5流程设计高级语言程序设计(c)5流程设计,END,剂挤泣树悦灶唉昂蹬赠丘弊嚎栅纲奋攫年捣令抗汰关犀绪潦韭凰兼状避思高级语言程序设计(c)5流程设计高级语言程序设计(c)5流程设计,