好文档就是一把金锄头!
欢迎来到金锄头文库![会员中心]
电子文档交易市场
安卓APP | ios版本
电子文档交易市场
安卓APP | ios版本

选择结构及循环控制程序设计.ppt

46页
  • 卖家[上传人]:pu****.1
  • 文档编号:585942290
  • 上传时间:2024-09-03
  • 文档格式:PPT
  • 文档大小:612.50KB
  • / 46 举报 版权申诉 马上下载
  • 文本预览
  • 下载提示
  • 常见问题
    • 第五章 选择结构程序设计§5.1 C语句概述«C语句:以“;”作分隔符,编译后产生机器指令.«C语句分类v表达式语句:表达式加分号构成v空语句: ;v程序控制语句(9种):if( )~else~ switchfor( )~while( )~do~while( )continuebreakgotoreturn分支循环辅助控制如 total=total+limit; a=3; func( ); printf(“Hello,world!\n”);踌咕潞蒲陕获益奴慨肖逸市享鞋炯全位贾酥嚷挝弛骆醋条赛胡笔靛妮滤道选择结构及循环控制程序设计选择结构及循环控制程序设计 v复合语句:用 {…}括起来的一组语句l一般形式: { [数据说明部分;] 执行语句部分; } l说明:u“}”后不加分号u语法上和单一语句相同u复合语句可嵌套伟池聋理盘号痞播谭捞售翌后咙颤越芥一恃剁庙码瘦咬侍沾贬虱脊皆氖卧选择结构及循环控制程序设计选择结构及循环控制程序设计 §5.2 程序的三种基本结构«结构化程序设计v基本思想:任何程序都可以用三种基本结构表示,限制使用无条件转移语句(goto)v结构化程序:由三种基本结构反复嵌套构成的程序叫~v优点:结构清晰,易读,提高程序设计质量和效率«三种基本结构v顺序结构ABAB流程图N-S图际磁垃泛依硅瘪希它彬赣载蚤碍病膊版忽牧缩逗萍汰吟没堕期岁乓密揣格选择结构及循环控制程序设计选择结构及循环控制程序设计 PAB真假PBA真假v选择结构kA1A2AiAnk=k2k=k1k=knk=ki......l二分支选择结构l多分支选择结构泣鳖烽砍尺嘴鼎囤懊回扁恨插制焚工蝉广扦吁插茨添指翠暖蛋鸟唐翁晓拔选择结构及循环控制程序设计选择结构及循环控制程序设计 v循环结构l当型循环结构l直到型循环结构PA假真当P为真AAP真假A直到P为真注:A,B,A1….An可以是一个简单语句,也可以是一个基本结构柳虾惺胞闷慕囚展武惶钵吁颗俺磺川梯臻搬吝素淑纱豁料栓嗽撩滨由令狮选择结构及循环控制程序设计选择结构及循环控制程序设计 §5.3 选择型程序设计«if语句(条件选择语句)vif语句的三种形式l形式一:u格式:if (expression) statementu执行过程:exprstatement非0=0例:if (x>y) printf(“%d”,x);exprstatement1statement2非0=0l形式二:u格式:if (expression) statement1 else statement2u执行过程:例:if (x>y) max=x; else max=y;皇区职供卉翁喇翰床坞挞堪钢同晓阁宰鲁攘一嘿膝消拄摄礁搀净踩棠连换选择结构及循环控制程序设计选择结构及循环控制程序设计 l形式三:u格式:if ( expr1 ) statement1else if (expr2 ) statement2else if (expr3 ) statement3…...[ else statementn ]expr1statemnt1非0=0expr2expr3statemntnstatemnt3statemnt2非0非0=0=0u执行过程: 例:if (salary>1000) index=0.4; else if (salary>800) index=0.3; else if (salary>600) index=0.2; else if (salary>400) index=0.1; else index=0; 吏棚帅畦酵奴咐扛瑞茅墅啸副党韧噎佳婶垃分嫡再礁蹭蓖巫沙人承妊彰雕选择结构及循环控制程序设计选择结构及循环控制程序设计 如:if(a==b&&x==y) printf(“a=b,x=y”); if(3) printf(“OK”); if(‘a’) printf(“%d”,’a’);l说明:uif后面的表达式类型任意u语句可以是复合语句u if(x)  if(x!=0) if(!x)  if(x==0)例 考虑下面程序的输出结果: #include main() { int x,y; scanf(“%d,%d”,&x,&y); if(x>y) x=y; y=x; else x++; y++; printf(“%d,%d\n”,x,y);}Compile Error!惹秀绦严述肢贝厅慈动毯墨颖霄泥砷困昨谅耙珊珍剐吏陷姥庚盗葬幸跳坐选择结构及循环控制程序设计选择结构及循环控制程序设计 /*ch4_1.c*/#include main(){ int x,y; printf("Enter an integer:"); scanf("%d",&x); y=x; if(y<0) y= -y; printf("\ninteger:%d--->absolute value:%d\n",x,y);}例 求一个数的绝对值运行:Enter an integer:-12 integer:-12--->absolute value :12罕它鸽蔫寇乃疥移析打涵巧哲拌畔砚机哩惺漱摧粗箩艾亚坞鞋汰枪弊翔铬选择结构及循环控制程序设计选择结构及循环控制程序设计 /*ch4_2.c*/#include main(){ int a,b; printf("Enter integer a:"); scanf("%d",&a); printf("Enter integer b:"); scanf("%d",&b); if(a==b) printf("a==b\n"); else printf("a!=b\n");}例 输入两个数并判断两数相等否运行:Enter integer a:12 Enter integer b:12 a==b 运行:Enter integer a:12 Enter integer b:9 a!=b 笔幽鄂蒲期孽宰般榆纠斧基傈祥纳被铭酱安支皆辗绊僵任妨衣槛碟植搓赚选择结构及循环控制程序设计选择结构及循环控制程序设计 vif语句嵌套:l一般形式:if (expr1) if (expr2) statement1 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内嵌if蓄镀疥抢含蛙阿址婶债亭盈咕谜括嘎恋屋馁悉腥裴卡簇浑睁穴堕闸叮激瞻选择结构及循环控制程序设计选择结构及循环控制程序设计 例 输入两数并判断其大小关系/*ch4_4.c*/#include main(){ int x,y; printf("Enter integer x,y:"); scanf("%d,%d",&x,&y); if(x!=y) if(x>y) printf("X>Y\n"); else printf("XY Enter integer x,y:12,12 X==Y野顷厘木崔硬幂股陕垣缝涤钧倚俐胀结链遇铡糊膜腰堵惹东不围哎辽隐袁选择结构及循环控制程序设计选择结构及循环控制程序设计 lif ~ else 配对原则:缺省{ }时,else总是和它上面离它最近的未配对的if配对if(……)if(……)if(……)else…...else…...else…...堑利喉蒜嘶总乏再赦丹贯镰嗜钵搁终齐熟烂秧形手拒桐甭湃生郁虾硷挖明选择结构及循环控制程序设计选择结构及循环控制程序设计 例: if (a==b) if(b==c) printf(“a==b==c”); else printf(“a!=b”);修改: if (a==b) { if(b==c) printf(“a==b==c”); } else printf(“a!=b”);实现if ~ else 正确配对方法:加{ }耘胳豪蹋呆伎贸伟肤嘿到帕昌绦羚碗妹牺揖晋谗轩晤烘哈讶慰臂荫秃纱锹选择结构及循环控制程序设计选择结构及循环控制程序设计 例 考虑下面程序输出结果: main() { int x=100,a=10,b=20; int v1=5,v2=0; if(a60\n”); break; ……..总鹰新赫身矽伦狙瘪为幂源傍徒兢猩寺卢乍脉埂杯拘盔蓟龟牟傲吾彬生纲选择结构及循环控制程序设计选择结构及循环控制程序设计 例 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!嚷饶绕坞瘩甩后啦孪壕疑或居蚜腥迷地螺亿孕廖蛋尽疑考恿鹅缺崇癌迫肘选择结构及循环控制程序设计选择结构及循环控制程序设计 例 void main() { int x=1,y=0,a=0,b=0; switch(x) { case 1: switch(y) { case 0: a++; break; case 1: b++; break; } case 2: a++;b++; break; case 3: a++;b++; } printf(“\na=%d,b=%d”,a,b); }运行结果:a=2,b=1旭殷蓟煌烤葡傀挎磊喻离譬贺盟捏妈韦迁傀生岿委裔焰郭讨铰迹婚儒项中选择结构及循环控制程序设计选择结构及循环控制程序设计 书面作业: 5.3、5.5、5.6、5.8上机: 找三个不等数a,b,c中数值为中的一个, 编程并上机运行。

      注意:书面作业和上机编程作业一定要在上机前完成,才能书面作业和上机编程作业一定要在上机前完成,才能充分地利用有限的上机时间!!!充分地利用有限的上机时间!!! 糖异筏佩丽掖猾膛舷誉扬捆漳佛眯倒撑忌疵吨由睡涝削饯赡傣霍半宇裔棍选择结构及循环控制程序设计选择结构及循环控制程序设计 §6.1 循环型程序设计«概述C语言可实现循环的语句:l用goto 和 if 构成循环lwhile 语句ldo ~ while 语句lfor 语句«goto语句及用goto构成循环vgoto语句一般格式: goto 语句标号; ….…..标号:语句; 第六章 循环控制拙憨锤曲筐蚁汝研澎皑希韵精靖壁缓鲜单菇笑思肋夹望矣碱窄宣黎汀恿臻选择结构及循环控制程序设计选择结构及循环控制程序设计 v功能:无条件转移语句v说明:l不能用整数作标号l只能出现在goto所在函数内,且唯一l只能加在可执行语句前面l限制使用goto语句瀑瘫申悍柞肯筛否科课凰嫁杀晌旗妨聚充现姬花选徒桨求赏帐毛互磐蛾食选择结构及循环控制程序设计选择结构及循环控制程序设计 例 用if 和goto语句构成循环,求/*ch5_1.c*/#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……sum=4950+100=5050循环初值循环终值循环变量增值循环条件循环体聚踊瘸苛牺埃谐媒饰蒋介邵耍氦急陡靖不蜒妓矫故窿范寅漫肪迂只戎樟必选择结构及循环控制程序设计选择结构及循环控制程序设计 «while语句v一般形式:while(表达式) 循环体语句;v执行流程:expr循环体假(0)真(非0)while韦叠低岔晨赋煽钥烟遭躲盔谍羚别韵儡广妨矮许扣辜铭荡舍狱唉纱野本隙选择结构及循环控制程序设计选择结构及循环控制程序设计 v特点:先判断表达式,后执行循环体v说明:l循环体有可能一次也不执行l循环体可为任意类型语句l下列情况,退出while循环u条件表达式不成立(为零)u循环体内遇break,return,gotol无限循环: while(1) 循环体;冷晓吵迪岭勇缄损梦阮付仁缺颤灭承卑秆奈淫伯供侈务蘑试帖安戳况当柏选择结构及循环控制程序设计选择结构及循环控制程序设计 例 用while循环求 /*ch5_2.c*/#include main(){ int i,sum=0; i=1; while(i<=100) { sum=sum+i; i++; } printf("%d",sum);}循环初值循环终值循环变量增值循环条件循环体宴试档炉敷宣拇丰眩访摊堡疚贾藻凝睫轻驾耻镁锌螟茶橱枉多俞誊份贼顾选择结构及循环控制程序设计选择结构及循环控制程序设计 例 显示1~10的平方/*ch5_21.c*/#include main(){ int i=1; while(i<=10) { printf("%d*%d=%d\n",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撅审认境照移戒湃涝慢渍堰析邹滤挖裁洲疾蒂朴字邢烬宠孤拦麻胞淬泥屯选择结构及循环控制程序设计选择结构及循环控制程序设计 «do~while语句v一般形式:do 循环体语句; while(表达式);v执行流程:do循环体expr假(0)真(非0)while棠疆票健冗围紫晋来绿酚效担蜡贷恤缔句节焕蔬栅跟缸浊明淘辣乒仔尾暂选择结构及循环控制程序设计选择结构及循环控制程序设计 v特点:先执行循环体,后判断表达式v说明:l至少执行一次循环体ldo~while可转化成while结构expr循环体假(0)真(非0)循环体While循环殷湛盾软原涎辱页蓄多敏纷钩掸辱莆渭房绑撩羞爸亡琼快贴岸饵肆锄迷樊选择结构及循环控制程序设计选择结构及循环控制程序设计 例 用do~while循环求 /*ch5_3.c*/#include main(){ int i,sum=0; i=1; do { sum+=i;i++; }while(i<=100); printf("%d",sum);}迅近昔炊莉撂榷液掐轻姑疙猿柿成丑涎险赌勾绳衷瑶堕达兑肠禾毖仓归饵选择结构及循环控制程序设计选择结构及循环控制程序设计 例 while和do~while比较/*ch5_4.c*/#include main(){ int i,sum=0; scanf("%d",&i); do { sum+=i;i++; }while(i<=10); printf("%d",sum);}main(){ int i,sum=0; scanf("%d",&i); while(i<=10) { sum+=i;i++; } printf("%d",sum);}显施陆床闻倍擂左绑狗徽墟壕霓嫁煮妖位绩检望吾阿财努怕碰硕网旬纤耀选择结构及循环控制程序设计选择结构及循环控制程序设计 «for语句v一般形式:for([expr1] ;[ expr2] ;[ expr3]) 循环体语句;v执行流程:expr2循环体假(0)真(非0)forexpr1expr3凭尉怯幅快翼屹牙壤隧臂乱创舌贤庸买吧豆柜乳哦韭畅溺疆夷锄业纺孕调选择结构及循环控制程序设计选择结构及循环控制程序设计 vfor语句一般应用形式:for(循环变量赋初值;循环条件;循环变量增值){循环体语句;}v说明:lfor语句中expr1, expr2 ,expr3 类型任意,都可省略,但分号;不可省l无限循环: for(;;)lfor语句可以转换成while结构expr1;while(expr2){循环体语句;expr3;}例 用for循环求 #include main(){ int i,sum=0; for(i=1;i<=100;i++) sum+=i; printf("%d",sum);}在健绕仿搭泛扯堕从顶靛咯违气拆脂哨兼癌毛讫饱奉臆踩好姜喜垢乖迅还选择结构及循环控制程序设计选择结构及循环控制程序设计 例:#include main( ) { int i=0; for(i=0;i<10;i++) putchar(‘a’+i); }运行结果:abcdefghij例:#include main( ) { int i=0; for(;i<10;i++) putchar(‘a’+i); }例:#include main( ) { int i=0; for(;i<10;) putchar(‘a’+(i++)); }例:#include main( ) { int i=0; for(;i<10;putchar(‘a’+i),i++) ; }舀赏丈微播炉死赠幅愚秦我熏蔫样豢涕帆菲疼矢技奢敏浇爵拒嘶极伸轧东选择结构及循环控制程序设计选择结构及循环控制程序设计 main(){ int i,j,k; for(i=0,j=100;i<=j;i++,j--) { k=i+j; printf("%d+%d=%d\n",i,j,k); }}#includemain(){ char c; for(;(c=getchar())!='\n';) printf("%c ",c);}#include main(){ int i,c; for(i=0;(c=getchar())!='\n';i+=3)printf("%c ",i+c);}异土澜救左磐捌钢顽缸扼燎陶馅旷吨赘户窒进墙瞧叙棒匹驻让近揪神溺报选择结构及循环控制程序设计选择结构及循环控制程序设计 «循环的嵌套v三种循环可互相嵌套,层数不限v外层循环可包含两个以上内循环,但不能相互交叉v嵌套循环的执行流程(1) while() { …… while() { …… } …... }(2) do { …… do { …… }while( ); …... }while( );(3) while() { …… do { …… }while( ); ……. }(4) for( ; ;) { …… do { …… }while(); …… while() { …… } …...}内循环外循环内循环v嵌套循环的跳转禁止:l从外层跳入内层l跳入同层的另一循环l向上跳转萎流峨坞构拙和硬邵涝桥吱初笑熙锑炒盼分驼胖色闪邦杆芳芹拍访泄走绷选择结构及循环控制程序设计选择结构及循环控制程序设计 例 循环嵌套,输出九九表1234567891234567892468101214161836912151821242791827364554637281……………..ij/*ch5_5.c*/#include main(){ int i,j; for(i=1;i<10;i++) printf("%4d",i); printf("\n---------------------------------------\n"); for(i=1;i<10;i++) for(j=1;j<10;j++) printf((j==9)?"%4d\n":"%4d",i*j);}练腑洋溶然恃泻坯出愤伎杖释北沫司陨僧督侠锥拨巴籽猿焊挨搏检妹焉赐选择结构及循环控制程序设计选择结构及循环控制程序设计 i<10printf假(0)真(非0)i=1j++j=1j<10真(非0)假(0)i++for(i=1;i<10;i++) for(j=1;j<10;j++) printf((j==9)?"%4d\n":"%4d",i*j);外循环内循环嘻描疮裙兰醉唬球契部垣舟跃溯彝里貉神靖掀铃染鞠死丸慧虽哆榜央曼岿选择结构及循环控制程序设计选择结构及循环控制程序设计 §5.2 辅助控制语句«break语句v功能:在循环语句和switch语句中,终止并跳出循环体或开关体v说明:lbreak只能终止并跳出最近一层的结构lbreak不能用于循环语句和switch语句之外的任何其它语句之中凭恭智爪玉啊惋羚育呀糖程十伙吞骑沤评躇屿芦厘纫陕乍俊益僧戈快疮忌选择结构及循环控制程序设计选择结构及循环控制程序设计 expr……break;……假(0)真(非0)whiledo……break;…...expr假(0)真(非0)while话檬邯戍触奄懊耶涅脏持诅嗜淳脓司悬潦辈愁郎禹裕雕崭槐管姐丰务卓坤选择结构及循环控制程序设计选择结构及循环控制程序设计 expr2……break;…...假(0)真(非0)forexpr1expr3switchexpr语句组1break;语句组2break;语句组nbreak;语句组break;…...const 1const 2const ndefaultcase 疽悉匀纯药恨吮虞桓考涎脖孺好蓝学瘪履公招蝶集锯薄檄奇斋癸论辣舵攒选择结构及循环控制程序设计选择结构及循环控制程序设计 例 break举例:输出圆面积,面积大于100时停止#define PI 3.14159main(){ int r; float area; for(r=1;r<=10;r++) { area=PI*r*r; if(area>100) break; printf("r=%d,area=%.2f\n",r,area); }}腊咳逾腮剖木汐谭韩床蹿均灰排共昂侈吼绍娘馁楔磕淋肛裔洁阻兴疵洞四选择结构及循环控制程序设计选择结构及循环控制程序设计 例 break举例:小写字母转换成大写字母,直至输入非字母字符#include main(){ int i,j; char c; while(1) { c=getchar(); if(c>='a' && c<='z') putchar(c-'a'+'A'); else break; }}互图闰睦划铁棕议冤砷鸭绕蓖魁姚烯测班恐架晤萌枣婿抒挞潦剥懒涵靡露选择结构及循环控制程序设计选择结构及循环控制程序设计 «continue语句v功能:结束本次循环,跳过循环体中尚未执行的语句,进行下一次是否执行循环体的判断v仅用于循环语句中expr……continue;……假(0)真(非0)while真(非0)do……continue;…...expr假(0)whileexpr2……continue;…...假(0)真(非0)forexpr1expr3撼软萄辣俭殿个续谈苹施戴熔在惕厩侧影泊缓推困秩日形迈钝装斥釜入抡选择结构及循环控制程序设计选择结构及循环控制程序设计 例 求输入的十个整数中正数的个数及其平均值/*ch5_12.c*/#include main(){ int i,num=0,a; float sum=0; for(i=0;i<10;i++) { scanf("%d",&a);if(a<=0) continue;num++;sum+=a; } printf("%d plus integer's sum :%6.0f\n",num,sum); printf("Mean value:%6.2f\n",sum/num);}佩斡拜倚纸聘师植傲系妓股隋衬氨戍镇哦狮瓢生镇插蘑廷垂追酣美一莆碾选择结构及循环控制程序设计选择结构及循环控制程序设计 书面作业: 6.4、6.6、6.9、6.13、6.14上机: 6.14 ; 注意:书面作业和上机编程作业一定要在上机前完成,才能书面作业和上机编程作业一定要在上机前完成,才能充分地利用有限的上机时间!!!充分地利用有限的上机时间!!!腺吊匣荷娇雌蹈赡呛檬溢栋瓷览昧坛烽款荔揣系标象顽敌关缝玻聋厦银政选择结构及循环控制程序设计选择结构及循环控制程序设计 。

      点击阅读更多内容
      关于金锄头网 - 版权申诉 - 免责声明 - 诚邀英才 - 联系我们
      手机版 | 川公网安备 51140202000112号 | 经营许可证(蜀ICP备13022795号)
      ©2008-2016 by Sichuan Goldhoe Inc. All Rights Reserved.