《高级语言程序设计c5流程设计》由会员分享,可在线阅读,更多相关《高级语言程序设计c5流程设计(52页珍藏版)》请在金锄头文库上搜索。
1、C语言流程设计梁春燕梁春燕华电信息管理教研室华电信息管理教研室智筏预陀肯逢滇耸享难灯够郸柬卢壤欲吁铃彩玫豺株思上锣隧褐饿域枉澈高级语言程序设计(c)5流程设计高级语言程序设计(c)5流程设计2主要内容n运算符和表达式(续)n结构化程序设计n选择结构程序设计n循环结构程序设计n辅助控制语句n小结n上机作业4羽园想唉桐摈侥矫劲符渗骚炭脱汛淘奠转乙灭们遮侠闺茄你瞳生革峦蚕赣高级语言程序设计(c)5流程设计高级语言程序设计(c)5流程设计运算符和表达式(续)逻辑运算符与表达式条件运算符与表达式课弦蓝妙睦枚注荒躇湛塔孝叮婴尝淆菲辜陪柯搬非善殖僻楷启涯碎久教蜗高级语言程序设计(c)5流程设计高级语言程序设
2、计(c)5流程设计4ab!a!ba&ba|b真假真假假假真真n逻辑运算符种类: ! & |逻辑运算真值表C语言中,运算量: 0表示“假”, 非0表示“真”, 运算结果: 0表示“假”, 1表示“真”,真假假假假假真真假假真真真假真真逻辑运算符和表达式葡辟淆涯谱饥衅块翅隆蛇两岂乳劲罢这耶韭乐耿泣穷坪孔贿足音叉摈睛坝高级语言程序设计(c)5流程设计高级语言程序设计(c)5流程设计5! (2)& (11)| (12)高低例 a=x & xb&xy a=b|x=y !a|abl优先级:l结合方向:! :从右向左& :从左向右| :从左向右/ (a=x) & (xb)&(xy)/(a=b)|(x=y)/
3、(!a)|(ab)逻辑运算符和表达式歧倡欧冷忽乌乘体涣块塘撇宣糙枷副祝里吞彤吨咯追馅敖桑矢卸孵蛔鹅篱高级语言程序设计(c)5流程设计高级语言程序设计(c)5流程设计6例 a=4;b=5; !a a&b a|b !a|b 4&0|2 53&2|83)&2|(8b)&(n=cd)/结果m=0,n=1逻辑运算符和表达式桓卓稠蕴铀胎惟丛赠邓凸店恬奸毅颖而蹬锁若销戌蓑汀谓纸俺廷闯煞寞遣高级语言程序设计(c)5流程设计高级语言程序设计(c)5流程设计8n一般形式: expr1 ? expr2 : expr3n执行过程n功能:相当于条件语句,但不能取代一般if语句例 if (ab) printf(“%d”,
4、a); else printf(“%d”,b);printf(“%d”,ab?a:b);例 求 a+|b| printf(“a+|b|=%dn”,b0?a+b:a-b);expr1取expr2值取expr3值非0=0例 (a=b)?Y:N (x%2=1)?1:0 (x=0)?x:-x (c=a & c0?1:(xb?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) printf(“%d”,x);exprstatement1s
5、tatement2非0=0l形式二:u格式:if (expression) statement1 else statement2u执行过程:例:if (xy) max=x; else max=y;选择结构程序设计圾冬谣晨伦浴等剑碗汹姬只足凄辛淖梯盲傣巫瘟贬最犹荆晶痛洞瞩船闷默高级语言程序设计(c)5流程设计高级语言程序设计(c)5流程设计16n形式三:格式:if ( expr1 ) statement1else if (expr2 ) statement2else if (expr3 ) statement3. else statement expr1statemnt1非0=0expr2exp
6、r3statementstatemnt3statemnt2非0非0=0=0u执行过程: 例: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&x=y) printf(“a=b,x=y”); if(3) printf(“OK”); i
7、f(a) printf(“%d”,a);uif后面的表达式类型任意u语句可以是复合语句u if(x) if(x!=0) if(!x) if(x=0)例 考虑下面程序的输出结果: #include main() int x,y; scanf(“%d,%d”,&x,&y); if(xy) x=y; y=0; else x+; y+; printf(“%d,%dn”,x,y);Compile Error!说明:滴惮瘦仆苹适苛导疵褥酷画吸甸旷兴泥倔拨秉陵央便函输篷捕咨羹踞藐尺高级语言程序设计(c)5流程设计高级语言程序设计(c)5流程设计18v一般形式:if (expr1) if (expr2) st
8、atement1 else statement2else if(expr3) statement3 else statement4内嵌if内嵌ifif (expr1) if (expr2) statement1 else statement2内嵌ifif (expr1) if (expr2) statement1else statement3 内嵌ifif (expr1) statement1else if(expr3) statement3 else statement4内嵌ifif语句嵌套麓浙赘功捷沮严肠烃催钧亢缩甩搪棉瞬斤卧镀猛徘夷茹约窒噬幌羞癌潜军高级语言程序设计(c)5流程设计高级语
9、言程序设计(c)5流程设计19#include main() int x,y; printf(Enter integer x,y:); scanf(%d,%d,&x,&y); if(x!=y) if(xy) printf(XYn); else printf(XYn); else printf(X=Yn);运行:Enter integer x,y:12,23 XY Enter integer x,y:12,12 X=Y例 输入两数并判断其大小关系躲赃斗话唁孵窿谰畸登魁追羽豹脓薪丛拱龙凄阻戍蛊差衡雄冰潜锑谓覆砷高级语言程序设计(c)5流程设计高级语言程序设计(c)5流程设计20n缺省 时,else
10、总是和它上面离它最近的未配对的if配对if()if()if()else.else.else.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”);字克拜役淀绊走束鸽初吞履靠亭古规户器善嗓吏矣镶亡铡
11、漫昂烙耽册语跨高级语言程序设计(c)5流程设计高级语言程序设计(c)5流程设计22v一般形式:switch( 表达式) case E1: 语句组 1; break; case E2: 语句组 2; break; . case En: 语句组 n; break; default: 语句组 ; break; v执行过程:switch语句(开关分支语句)switch表达式语句组1语句组2语句组n语句组.E 1E 2Endefaultcase 呛啮垫豁鼎民区轻秋炊苑停胜羡晋抵默盅奉喜剔样险沾滥肠桶牙盼躬粥么高级语言程序设计(c)5流程设计高级语言程序设计(c)5流程设计23lE1,E2,En是常量表达
12、式,且值必须互不相同l语句标号作用,必须用break跳出lcase后可包含多个可执行语句,且不必加 lswitch可嵌套l多个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
13、 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
14、; 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 wh
15、ile 语句for 语句goto语句及用goto构成循环ngoto语句一般格式: goto 语句标号; .标号:语句; 循环结构程序设计抨腰劈得炊逝答揣寇额焉俐搅息小霞墅呼舅臃也只千源棍台奈莲攫沙帆偏高级语言程序设计(c)5流程设计高级语言程序设计(c)5流程设计28v 功能:无条件转移语句v 说明:l标号用标识符表示,不能用整数作标号l标号只能出现在goto所在函数内,且唯一l标号只能加在可执行语句前面l限制使用goto语句循环结构程序设计撩童频跳网州颅篮霖萧讳媳暖叛嗅茬沈业界散戈截年实谅呜竭秀钦热顺揣高级语言程序设计(c)5流程设计高级语言程序设计(c)5流程设计29#include ma
16、in() 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流程设计30v一般形式:while(表达式) 循环体语句;v执行流程:expr循环体假(0)真(非0)whilewhile语句吝熏昧浊掘豺羊奏讯液畸
17、预唇逆念矢悯淳贸哉酉胺呛趋憋涣冀镣坞鞍逊砸高级语言程序设计(c)5流程设计高级语言程序设计(c)5流程设计31v特点:先判断表达式,后执行循环体v说明:l循环体有可能一次也不执行l循环体可为任意类型语句l下列情况,退出while循环u条件表达式不成立(为零)u循环体内遇break,return,gotol无限循环: while(1) 循环体;While语句特点和说明胳盔歪篙冀侩者榴唾锑啪詹螺沏风蛙窍标愚堵容炳赞农疆炼欧尊页陋笛林高级语言程序设计(c)5流程设计高级语言程序设计(c)5流程设计32用while循环求 1-100的和。#include main() int i,sum=0; i=1
18、; 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的平方代填弄劲搬淫条渡泞脱仓针嘎恼饵蒸律捕娟匡箭释啪
19、捐托真拍徽镑劝庆遥高级语言程序设计(c)5流程设计高级语言程序设计(c)5流程设计34v一般形式:do 循环体语句; while(表达式);v执行流程:do循环体expr假(0)真(非0)whiledowhile语句吸禄痒茶慎俯蕴呼足艳辈京笛甘兜瓜弟陶穴侦帘篡洞稍叔娥执子饶稻疼惹高级语言程序设计(c)5流程设计高级语言程序设计(c)5流程设计35v特点:先执行循环体,后判断表达式v说明:l至少执行一次循环体ldowhile可转化成while结构expr循环体假(0)真(非0)循环体While循环dowhile语句特点和说明虽只外馋校蛤冲狰疫紊迸镊莎仗折挫柒帐姑悬斯冰赚敏链沥也炯筏勺呜殖高级语言
20、程序设计(c)5流程设计高级语言程序设计(c)5流程设计36v一般形式:for(expr1 ; expr2 ; expr3) 循环体语句;v执行流程:expr2循环体假(0)真(非0)forexpr1expr3for语句for语句涨慌舷诵译完咀昭衰版乏帜睫勾潭俯伙爸血代砒乏霖遮超糟品膀瞒箔雇羡高级语言程序设计(c)5流程设计高级语言程序设计(c)5流程设计37for(循环变量赋初值;循环条件;循环变量增值)循环体语句;v说明:lfor语句中expr1, expr2 ,expr3 类型任意,都可省略,但分号;不可省l无限循环: for(;)lfor语句可以转换成while结构expr1;whil
21、e(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( ) i
22、nt i=0; for(;i10;putchar(a+i),i+) ; 例子警辰蜡珊悄二危堡对珍弄它喝兽洼棉祥厄酸额拾饼敖华擂恒翌赂卢炳摸霹高级语言程序设计(c)5流程设计高级语言程序设计(c)5流程设计39v三种循环可互相嵌套,层数不限v外层循环可包含两个以上内循环,但不能相互交叉v嵌套循环的执行流程(1) while() while() . (2) do do while( ); . while( );(3) while() do while( ); . (4) for( ; ;) do while(); while() .内循环外循环内循环v嵌套循环的跳转禁止:l从外层跳入内层l跳入同层
23、的另一循环l向上跳转循环的嵌套匝羹盈酵揩泵层蛀嫡龚胯宣减乐莎结醛承辰腹茧兼熄疯定银嗡骗谈它烷卸高级语言程序设计(c)5流程设计高级语言程序设计(c)5流程设计40i10printf假(0)真(非0)i=1j+j=1j10真(非0)假(0)i+for(i=1;i10;i+) for(j=1;j10;j+) printf(j=9)?%4dn:%4d,i*j);内循环循环的嵌套(图解)外循环厦忘人宇近呜力贩梯乐黄瞻霹巷筛挠吱智降点袱情他宿彩邯靖漳磷拎圣俯高级语言程序设计(c)5流程设计高级语言程序设计(c)5流程设计辅助控制语句露擅抽酉拟竟携弥寒尾灼枫底卒纤悲严继娇萍砰沁余坪打烈虎触谗秆袭苔高级语言
24、程序设计(c)5流程设计高级语言程序设计(c)5流程设计42辅助控制语句nbreak语句功能:在循环语句和switch语句中,终止并跳出循环体或开关体说明:nbreak只能终止并跳出最近一层的结构nbreak不能用于循环语句和switch语句之外的任何其它语句之中蚀谰选棍峭傻研刑般述毖翼亢廊搐钠币搬焊俩尚枕觉赣崇抹庙杯劫罩穷姓高级语言程序设计(c)5流程设计高级语言程序设计(c)5流程设计43辅助控制语句(break)exprbreak;假(0)真(非0)whiledobreak;.expr假(0)真(非0)while址毒沫歌徽灰铅廖搀济湃远皿睫捡庙四循王丙喷续判坪端匿乃痹靳雄险寥高级语言程序
25、设计(c)5流程设计高级语言程序设计(c)5流程设计44expr2break;.假(0)真(非0)forexpr1expr3switchexpr语句组1break;语句组2break;语句组nbreak;语句组break;.const 1const 2const ndefaultcase 辅助控制语句(break)蔡殉妇委崖嘘赛她绩抿介挤炯想城俘寄咬事别寺赢筛章癸笺仓郴顿痒柠踩高级语言程序设计(c)5流程设计高级语言程序设计(c)5流程设计45辅助控制语句(break)#include main() int i=1; while(i=10) if(i=5) break;printf(%d*%d
26、=%dn,i,i,i*i); i+; 运行结果:1*1=12*2=43*3=94*4=16佛路篡键陛洱影泉臼鸥赐藻钾鸳默藉惶株吴痕睦巳廓傀足屁理笺真昭谈脉高级语言程序设计(c)5流程设计高级语言程序设计(c)5流程设计46v功能:结束本次循环,跳过循环体中尚未执行的语句,进行下一次是否执行循环体的判断v仅用于循环语句中exprcontinue;假(0)真(非0)while真(非0)docontinue;.expr假(0)whileexpr2continue;.假(0)真(非0)forexpr1expr3continue语句际巳奉洁拂烷舷匠拂宠聘纪豆遥五怨议袋傈邪吏酉秤陨梨诫躲涧档壶旨运高级语言
27、程序设计(c)5流程设计高级语言程序设计(c)5流程设计47continue语句#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流程设计高级语言程
28、序设计(c)5流程设计49小结n逻辑运算符和表达式;n条件运算符和表达式;n结构化程序设计的三种基本结构:顺序、选择、循环;n选择结构程序设计:if语句、switch语句;n循环结构程序设计:while 语句、do while 语句、for 语句;n辅助控制语句:break语句、continue语句。板胜卉言爬怜镁黑份晕收闯绿烤够列滞川撑豢滋刘猪峭绝您羔彼韧穷阂几高级语言程序设计(c)5流程设计高级语言程序设计(c)5流程设计50上机作业4n试验目的学会正确使用逻辑运算符和表达式;熟练掌握if语句和switch语句;熟练掌握while 语句、do while 语句和for 语句;学习调试程序。
29、御发凡撵咀陌吹馆姻战蜗换类密纤菜冻埃茸槐冷擒敷脚国至洽门术茄挑昨高级语言程序设计(c)5流程设计高级语言程序设计(c)5流程设计51上机作业4n试验内容编写程序,根据输入的百分制成绩,输出相应的成绩等级A、B、C、D、E (习题5.6) :n要求:分别使用if语句和switch语句来实现;如果输入出错,给出出错信息。猴子吃桃问题(习题6.10):n题目改为猴子每天吃了前一天剩下的一半后,再吃两个。磨昨复凹砷婴赃丛僵狂娩爷疼夸卒掠锑喘尤罚者添凳谬膝粉卯离佛纷鸭或高级语言程序设计(c)5流程设计高级语言程序设计(c)5流程设计END剂挤泣树悦灶唉昂蹬赠丘弊嚎栅纲奋攫年捣令抗汰关犀绪潦韭凰兼状避思高级语言程序设计(c)5流程设计高级语言程序设计(c)5流程设计