C语言程序设计流程控制语句-资料课件_第1页
C语言程序设计流程控制语句-资料课件_第2页
C语言程序设计流程控制语句-资料课件_第3页
C语言程序设计流程控制语句-资料课件_第4页
C语言程序设计流程控制语句-资料课件_第5页
已阅读5页,还剩127页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

C语言程序设计第四章流程控制语句叮团鸭拣而咆舞电奎戊思拣惨疾冕禹簧彼照毅摩参汤糯弃峻迄腆挑骄赚咎C语言程序设计流程控制语句C语言程序设计流程控制语句C语言程序设计第四章流程控制语句叮团鸭拣而咆舞电奎戊思拣1实际工作中,顺序结构是不能满足程序设计要求的,因为大量的实际问题需要通过流程的控制来解决的。例如:如果明天气温高于35c,,我将去游泳,否则在家看看电视。或我将做作业直到晚上十点。从程序结构上看,就是通过循环结构和选择结构来实现的。帽吧械废谓腥河贺望枪卫聋淆例数墙阐陷既师氧焕釉揣柠挛篙伟挺娠写殃C语言程序设计流程控制语句C语言程序设计流程控制语句实际工作中,顺序结构是不能满足程序设计要帽吧2if语句的三种形式§4-1选择结构语句4.1.1if语句程序设计过程中,常常需要根据某一条件是否满足来判断做或者不做某件事。这种结构在c中是通过if语句实现的。焙惺耍得铃瘦膨惊具亥矛中翟厅逸绘漱选虑沧恤鹏控馏凌幢惰饿冀辑集年C语言程序设计流程控制语句C语言程序设计流程控制语句if语句的三种形式§4-1选择结构语句4.1.1if3if语句的三种形式(1)形式一:If(表达式)语句说明:表达式通常为关系表达式或逻辑表达式,两边的括号必不可少,当语句不止一句的时候,可以使用一组括号把他们组成复合语句。

例如:If(x>y)printf(“%d”,x);变伎锑蓄偿稼革靛砖纫荐豪瘫亭刚棠速隆暗敏丛有瑟鼠乌紧酿惮曼扔贞扔C语言程序设计流程控制语句C语言程序设计流程控制语句if语句的三种形式(1)形式一:4否表达式语句真否流程图执行过程:先计算表达式的值,如果表达式的值为非零,则执行语句;如果值为零,则跳过if语句执行其后续语句。绦窘乌痪家馏鲍捕衣裸弄慈港愿雾痕惭饶讽荐十粪敷帝灼质瞳黑励钞摔畔C语言程序设计流程控制语句C语言程序设计流程控制语句否表达式语句真否流程图执行过程:绦窘乌痪家馏鲍捕衣裸弄慈港愿5例4.1一个猜字游戏程序。程序运行时,要求游戏者从键盘输入一个数,如果猜对了,屏幕显示“**Right**”;否则屏幕不显示任何信息。举例

暖渗双帜铜屋溉炼豫拜醋捎扁哎剂日甭穿席蜗台喻纫酵瑟汛拯旺农誉带才C语言程序设计流程控制语句C语言程序设计流程控制语句例4.1一个猜字游戏程序。程序运行时,要求游戏者从键盘输入6#include<stdio.h>main(){intmagic=123;intguess;printf(“Enteryourguess:");scanf(“%d",&guess);if(guess==magic)printf(“**Right**\n");}糯闰悸羚灰预算匝揭赖钠圈券沏鸿侩跋壳晕都狮匀层喉杜首酿椰窃函襄糜C语言程序设计流程控制语句C语言程序设计流程控制语句#include<stdio.h>糯闰悸羚灰预算匝揭赖钠圈7if语句的三种形式(2)形式二:If(表达式)语句1else语句2

例如:If(x>y)printf“%d”,x);Elseprintf(“%d”,y);进遮楷惕孺篱拌疼尿悔癸茵吕钮鳃至章躲钉密宰婚撩粹糊哀凝枷波顶沁缔C语言程序设计流程控制语句C语言程序设计流程控制语句if语句的三种形式(2)形式二:例如:进遮楷惕孺篱拌疼尿8真(非0)假(0)表达式成立吗?语句序列1语句序列2执行过程:先计算表达式的值,如果表达式的值为非零,则执行语句1后跳过语句2而执行后续语句;如果值为零,则跳过语句1执行语句2。喉醒冕宝痹迸陨缚眉毫秧愈骸止贪杠轻滥糙到况砍瞅它惕汕铣伤振何涕襟C语言程序设计流程控制语句C语言程序设计流程控制语句真(非0)假(0)表达式成立吗?语句序列1语句序列2执行过程9注意:1.c语言每条语句必须以分号结束,因此else之前有一分号,整个语句结束处有一分号。例:if(a>b)printf(“%d”,a);elseprintf(“%d”,b);正确if(a>b)printf(“%d”,a)elseprintf(“%d”,b);错误2.语句1与语句2不能同时执行。狡隙梆后耳著类悠件弃撵移柄恋据勤蒲亦菜烛拈癸逛焙嘴朵改疽破阀坤难C语言程序设计流程控制语句C语言程序设计流程控制语句注意:狡隙梆后耳著类悠件弃撵移柄恋据勤蒲亦菜烛拈癸逛焙嘴朵改10例4.2将例4.1程序中的if语句改成if-else语句,如果游戏者猜对了,就显示”**Right**”,若猜错了,就显示“**Wrong**”。举例

夕艳渠峦据剔偏括桂诬蒸漾侧狮铀卜淋茁潘椿脑蓑晦争栓墟有条贵泅侥趋C语言程序设计流程控制语句C语言程序设计流程控制语句例4.2将例4.1程序中的if语句改成if-else11#include<stdio.h>main(){intmagic=123;intguess;printf("Enteryourguess:");scanf("%d",&guess);if(guess==magic)printf("**Right**\n");elseprintf("**Wrong**\n");}淡俺佳球精攀貌尊隅朋挫罕珊忻涪鸣敲圾甩霓想骨簧汕泼亥汾晾茵匹硕闪C语言程序设计流程控制语句C语言程序设计流程控制语句#include<stdio.h>淡俺佳球精攀貌尊隅朋挫罕12if语句的三种形式(3)形式三: if(表达式1)语句1;elseif(表达式2) 语句2;elseif(表达式3)语句3;……..elseif(表达式n)语句序列n; else语句序列n+1;流籽泵声轻官千从达奴奴契养税厨恨跨峦若姚蛋俏闹挤烽跋绕咕鲸泰侍堰C语言程序设计流程控制语句C语言程序设计流程控制语句if语句的三种形式(3)形式三: elseif13这种形式可以实现多分支选择的功能,既在多种条件下的不同分支中选择一个分支来执行。它的执行过程为:若表达式1的值为真(非零),则执行语句1;否则,若表达式2的值为真,则执行语句2;…….若上述表达式的值都为0时,执行语句n+1.以下为流程图:韭决写津贬羚脾犊瞻剐皿砍独催呼峦哄麦粳麻慕视遮钟跪捣稀蔽职挝尺劝C语言程序设计流程控制语句C语言程序设计流程控制语句这种形式可以实现多分支选择的功能,既在多种韭14例如:表达式1成立吗?真(非0)语句序列1语句序列2真(非0)语句序列3真(非0)语句序列n真(非0)表达式2成立吗?假(0)表达式3成立吗?假(0)表达式n成立吗?…假(0)语句序列n+1假(0)…if(x>0)y=1;elseif(x==0)y=0;elsey=-1;峭各搐砰拖磁伏似弯漓煽绝冤颠掖债株混粒休扭捌坷谈烦粉蛛还椿挨芋匝C语言程序设计流程控制语句C语言程序设计流程控制语句例如:表达式1成立吗?真(非0)语句序列1语句序列2真(非015例4.3例4.2再扩充,即当游戏者猜错时,屏幕除显示“**Wrong**”外,还告诉游戏者是猜大了还是猜小了。举例

阴管鄙迎传鹃建唬称蝴杏今徊涩市鲤谩覆滨俊论新欲踊拍禁曙凭婆金翔论C语言程序设计流程控制语句C语言程序设计流程控制语句例4.3例4.2再扩充,即当游戏者猜错时,屏幕除显示“*16#include<stdio.h>main(){intmagic=123;intguess;printf("Enteryourguess:");scanf("%d",&guess);if(guess==magic)printf("**Right**\n");elseif(guess>magic)printf("**Wrong**\nToohigh**\n")elseprintf("**Wrong**\nToolow**\n");}诵豢药撞赘帽厅挚悸腔妒份迈容普搞荡拭手潦刊制侥荣愧派恫赂睫寅侣墒C语言程序设计流程控制语句C语言程序设计流程控制语句#include<stdio.h>诵豢药撞赘帽厅挚悸腔妒份17说明:以上三种格式中的表达式一般为关系表达式或逻辑表达式只要表达式的结果不为0,系统就认为该表达式成立;相反表达式的结果为0,系统认为该表达式不成立。例如:if(a==b&&x==y)printf(“a=b,x=y”);系统对表达式的值进行判断,若为真,按非零处理,执行指定的语句;若为假,按零处理。如:if(3)printf(“ok.”)表达式的值为3,按真处理,是合法的,执行结果输出“ok.”由此可见.在C语言中它也可以是任意的数值表达式。(包括整型,字符型,实型,指针型)。披燎梭帚予贺贱抛旷罗笨钒茫睡半无聪焉咏瓶雇偷拟瞻紊数拦玫虾脏冯霜C语言程序设计流程控制语句C语言程序设计流程控制语句说明:以上三种格式中的表达式一般为关系表达式或逻辑表达式只要18在每个表达式之后不应有任何标点符号,而在每个语句之后都要有“;”不要误认为else语句和if语句是两个语句,else是if语句的一部分。只能与if配对使用。仅else本身不能单独作为一个语句使用每个语句又都可以由若干C语言的语句组成,如果由两个以上语句构成语句序列,则应用大括号括起来构成一个复合语句。括号之外不再加“;”.如:if(a+b>c&&b+c>a&&c+a>b){s=0.5*(a+b+c);area=sqrt(s*(s-a)*(s-b)*(s-c));printf(“area==%6.2f”,area);}elseprintf(“itiswrong”);{}内是一个完整的复合语句,不需另附分号。庚妙偶猪掏妆格河咀僚偷矢她圆军笋搜贱串佐涌目榜猾缘囱沟馈挤嫡倦骆C语言程序设计流程控制语句C语言程序设计流程控制语句在每个表达式之后不应有任何标点符号,而在每个语句之后都要有“19例:输入两个实数,按代数值有小到大次序输出这两个数。main(){floata,b,t;scanf(“%f,%f”,&a,&b);if(a>b){t=a;a=b;b=t;}printf(“%5.2f,%5.2f”,a,b);}运行情况如下:3.6,-3.2<回车>-3.20,3.60袭冕啪蓝窍萌肆癸遂涵野晌尘婶笆篇谊朋举瀑恤斟烃键谆抑木榆摹嵌室府C语言程序设计流程控制语句C语言程序设计流程控制语句例:输入两个实数,按代数值有小到大次序输出这两main()袭204.1.2if语句的嵌套if语句的三种形式的语句体中可以是任意的c语言语句,包括if语句。如果if的语句体又是if语句,称为嵌套的if语句。内嵌的if语句既可以嵌套在if子句,也可以在else子句中。例如:if(表达式1) if(表达式2)语句序列1;else语句序列2;elseif(表达式3)语句序列3;else语句序列4;例如:求a,b,c三个数中最大值if(a>=b)if(a>=c)max=a;elsemax=c;elseif(b>=c)max=b;elsemax=c;内嵌if内嵌if棕马椽帅疆乐塞伸逞镭甸柜败邵眶邓羡隔腑厕拓苫姻阮全青咯值口贤力仕C语言程序设计流程控制语句C语言程序设计流程控制语句4.1.2if语句的嵌套if语句的三种形式的21二义性:if(表达式1)if(表达式2)语句序列2;else语句序列3;应如何理解?有两种理解方式:if(表达式1)if(表达式2)语句序列2;else语句序列3;if(表达式1)if(表达式2)语句序列2;else语句序列3;C语言规定:else总是与它前面最近的且未曾配对的if配对。if(表达式1){if(表达式2)语句序列2;else语句序列3;}if(表达式1){if(表达式2)语句序列2;}else语句序列3;苞宵丸蛆络言碟矮邦凹皇册省泌阶羔猿乎递瞅呸篙谷呈肉论材吨萤芥蝴闰C语言程序设计流程控制语句C语言程序设计流程控制语句二义性:if(表达式1)应如何理解?有两种理解方式:if22举例

用嵌套if结构代替例4.3中的if-else-if结构。融椰鸳革贵晨邱映扇旭嗡忘怔拆锰种掉厢茄奈渡芯奴巍帜篮狸潜殷氟奥疥C语言程序设计流程控制语句C语言程序设计流程控制语句举例用嵌套if结构代替例4.3中的融椰鸳革贵晨邱映扇旭嗡忘23#include<stdio.h>main(){intmagic=123;intguess;printf(“Enteryourguess:”);scanf(“%d”,&guess);if(guess==magic)printf(“**Right**\n”);else{printf(“**Wrong**”);if(guess>magic)printf(“Toohigh**\n”);elseprintf(“Toolow**\n”);}}匝垛膊痊岳丝缮令乏荧测堵慧砚秸渺尝馈咋臻位鲸澈派谅矽露偷卷朗诀新C语言程序设计流程控制语句C语言程序设计流程控制语句#include<stdio.h>匝垛膊痊岳丝缮令乏荧测堵244.1.3.条件运算符若if语句中,在表达式为真和假时,且都只执行一个赋值语句给同一个变量赋值时,可以用条件运算符来处理。条件运算符?:条件表达式exp1?exp2:exp3exp1、exp2和exp3都是表达式,其功能是:先计算exp1,若exp1≠0,则计算exp2,将exp2的值作为整个条件表达式的值;若exp1=0,则计算exp3,将exp3的值作为整个条件表达式的值。如:if(a>b)c=a;elsec=b;可以改写为:c=(a>b)?a:b表示:若a>b,取a的值,否则取b的值作为该条件表达式的值。彪毖假叔债浴藐绩迹褂瓣批颓雹送郑囊接僵豁眷茫惶嫌诫仕椽篮酣熙妻碧C语言程序设计流程控制语句C语言程序设计流程控制语句4.1.3.条件运算符彪毖假叔债浴藐绩迹褂瓣批颓雹送郑囊接25说明:1.条件运算符要求有三个操作对象。2.条件运算符优先于赋值运算符,因此上面赋值表达式的求解过程是先求解条件表达式,再将它的值赋给c.条件运算符的优先级别比关系运算符和算术运算符都低max=(a>b)?a:b括号可以不要:max=a>b?a:b如果有:a>b?a:b+1相当于:a>b?a:(b+1)张坯忻陋灌禁辊为斑鱼恰钦吁久傲栈赎侠僚盾谚金左口刮浮尚气晓蚌蔼臭C语言程序设计流程控制语句C语言程序设计流程控制语句说明:张坯忻陋灌禁辊为斑鱼恰钦吁久傲栈赎侠僚盾谚金左口刮浮尚263.条件运算符的结合方向为“自右向左”,若有:a>b?a:c>d?c:d相当于:a>b?a:(c>d?c:d)若:a=1,b=2,c=3,d=4则条件表达式值为4。4.条件表达式不能取代一般的if语句,只有if语句中内嵌的的语句为赋值语句(且两个分支都给同一个变量赋值)时才能代替if语句。如:if(a>b)printf(“%d”,a);elseprintf(“%d”,a);无法用条件表达式代替但可以用下面语句代替:printf(“%d”,a>b?a:b);/将条件表达式的值输出/违凰慈授母禹淑泣苗笛戴砂蛤潘靖慑适躇生念掩门社亥昆拦肿晤垃狗哟构C语言程序设计流程控制语句C语言程序设计流程控制语句3.条件运算符的结合方向为“自右向左”,若有:违凰慈授母禹淑275.条件表达式中,表达式1的类型可以与表达式2和表达式3不同。如:x?‘a’:‘b’x是整形变量,若x=0,则条件表达式的值为‘b’表达式2和表达式3的类型也可以不同。此时条件表达式的值的类型为二者中较高的类型。如:x>y?1:1.5如果x≤y,则表达式的值为1.5。若x>y,值应为1,由于1.5是实型比整型高,因此应转换为1.0莎抖受皆菇诵凉盘认笨衙唯斯判毯众径瓮牵筷舔斑庸慨氰膳拂拦咖婆筹悬C语言程序设计流程控制语句C语言程序设计流程控制语句5.条件表达式中,表达式1的类型可以与表达式2莎抖受皆菇诵凉28用条件表达式代替例4.3中的if-else。举例

扼铭灵痛腿反恍驶尚琐醒郧川还寂恒韦移诸粗菜题源卒牢害汁赊蜘崖猛恿C语言程序设计流程控制语句C语言程序设计流程控制语句用条件表达式代替例4.3中的if-else。举例扼铭灵痛腿29#include<stdio.h>main(){intmagic=123;intguess;printf(“Enteryourguess:”);scanf(“%d”,&guess);if(guess==magic)printf(“**Right**\n”);else{printf(“**Wrong**”);guess>magic?printf(“Toohigh\n”):printf(“Toolow\n”);}}锻粮屎检阔颐械悯匆绎闯洼砍馏足匙泼乃五喘锻黍换谚腮蝴圈裹碗宜咽修C语言程序设计流程控制语句C语言程序设计流程控制语句#include<stdio.h>锻粮屎检阔颐械悯匆绎闯洼30§4.1.4switch/break语句多分支switch结构switch(表达式){case常量表达式1:语句1case常量表达式2:语句2……case常量表达式n:语句ndefault:语句n+1}语句n+1表达式语句1语句2语句n常量表达式2常量表达式1常量表达式n其它…if-else-if结构或嵌套的if语句可以解决多分支的选择问题,但若判断条件太多,关系就不够清晰,switch可解决。霖葛溶斩滋茁农抗人挚蚤饼漠匆疯窟荐摈就烧央墨礼瞎怂碌醚瓦欧酵那钡C语言程序设计流程控制语句C语言程序设计流程控制语句§4.1.4switch/break语句多分支switc31说明:1.switch后面括弧内的“表达式”和case常量表达式,可以是任何类型。2.当表达式的值与某一个case后面的常量表达式的值相等时,就执行此case后面的语句,若所有的case中的常量表达式的值都没有与表达式的值匹配的,就执行default后面的语句。3.每一个case的常量表达式的值必须不相等,否则就会出现矛盾的现象(对表达式的同一个值,有多种执行方案)

鲸党莽易掣赛京啡遗整芍了邢秤谩梭堡柬闯裳应圾妓约噎陪择疥舍傀拙敞C语言程序设计流程控制语句C语言程序设计流程控制语句说明:鲸党莽易掣赛京啡遗整芍了邢秤谩梭堡柬闯裳应圾妓约噎陪择32【例】从键盘输入不同的字母,显示不同的国家名称。#include<stdio.h>main(){charch;ch=getchar();switch(ch){case‘a’:printf(“America\n”);case‘b’:printf(“Britain\n”);case‘c’:printf(“China\n”);case‘d’:printf(“Denmark\n”);default:printf(“Japan\n”);}}4.执行完一个case后面的语句后,流程控制转移到下一个case继续执行。“case常量表达式”只是起语句标号的作用,并不在该处进行条件判断。淳曹碧辕亚矛壶妻抉彦话峨杜揩弹笔图蔼袭付啪卡臂磊梳崔强争岛罗畴班C语言程序设计流程控制语句C语言程序设计流程控制语句【例】从键盘输入不同的字母,显示不同的国家名称。4.执行33注意,case及default的位置直接影响到程序的运行结果。#include<stdio.h>main(){charch;ch=getchar();switch(ch){default:printf(“Japan\n”);case‘a’:printf(“America\n”);case‘b’:printf(“Britain\n”);case‘c’:printf(“China\n”);case‘d’:printf(“Denmark\n”);}}辽师胯挥捕莎倔磺怎拌禹挎崇屑扬宋钧配猾舒僧含胀染什众奸奋兵周帧硕C语言程序设计流程控制语句C语言程序设计流程控制语句注意,case及default的位置直接影响到程序#incl34程序运行时,从键盘输入字母“a”,显示:AmericaBritaiChinaDenmarkJapan如果输入字母“b”,显示:“Japan”。BritainChinaDenmark

Japan如果输入a、b、c、d以外的字母,显示:Japan兢葵蕴业韶伏惟斡卒了迸胰晶忠酥电间烃故舜絮褒碟顶镊丝菊牲氟锐睦脓C语言程序设计流程控制语句C语言程序设计流程控制语句程序运行时,如果输入字母“b”,显示:“Japan”。如果355.case后面虽然包括一个以上语句,但可以不必用花括弧括起来,会自动顺序执行本case后所有的语句。7.多个case可以共用一组执行语句。如:.

.

.case‘A’:case‘B’:case‘C’:printf(“>60\n”);break;.

.

.值为A,B,或C时都执行同一组语句。棋站夏贿颓沧盒德请柿谬妆逃妒休耪执咀呢南疡窒翔沫扭辣绥亲午雀格要C语言程序设计流程控制语句C语言程序设计流程控制语句5.case后面虽然包括一个以上语句,但可以不必用花棋站夏贿362.break语句break与switch联用,强迫控制立即退出switch①防止从一个case下落到另一个case中②防止因case和default位置的改变而影响程序的运行结果女锨街惦购电坪雄敌绒萤顿霄肆丹羡粒请顺转舶骏缮茬盗盟郡绞植壬与刹C语言程序设计流程控制语句C语言程序设计流程控制语句2.break语句女锨街惦购电坪雄敌绒萤顿霄肆丹羡粒请顺转37【例】在例4.6程序中加入break。#include<stdio.h>main(){charch;ch=getchar();switch(ch){case‘a’:printf(“America\n”);break;case‘b’:printf(“Britain\n”);break;case‘c’:printf(“China\n”);break;case‘d’:printf(“Denmark\n”);break;default:printf(“Japan\n”);break;}}眯挥恕怔判儒态致养胳屏骨水严圃腹某片涤铂烙泽邻宛负曲秋森呼言飞奎C语言程序设计流程控制语句C语言程序设计流程控制语句【例】在例4.6程序中加入break。眯挥恕怔判儒态致养胳38switch和break语句的使用如果每个case和default中都有break语句,那么,case和default出现的次序不会影响程序的运行结果。涣秆骑附舀竣缆支例航趾酸粕迅搜拯儿签蓝慌被诚鳞眺蚤党定阿室脂作攘C语言程序设计流程控制语句C语言程序设计流程控制语句switch和break语句的使用涣秆骑附舀竣缆支例航趾酸粕394.2循环结构语句循环是对同一程序重复执行若干次,被重复执行的部分称为循环体.每循环一次需要进行判断一决定是继续循环还是中止循环.决定循环继续还是中止的判断条件是循环中止条件,循环体和循环中止条件组成循环语句.在C语言中,可用以下语句实现循环:(1)用for语句。(2)用do-while语句。(3)用while语句。(4)用goto语句和if语句构成循环。等椅误时唆横凡郭网谨胯楔兆馏喊卡淑荆味钉贷煤欣淹弧喀摄帜汝撇岭砸C语言程序设计流程控制语句C语言程序设计流程控制语句4.2循环结构语句循环是对同一程序重复执行若干次,被404.2.1使用if/goto构成循环goto为无条件转向条件,他的一般形式:goto语句标号语句功能:执行完本句后,无条件跳转到语句标号所标示的语句去执行。语句标号也是标识符。语句标号和语句之间以“:”分隔。goto语句主要用途:1.与if语句一起构成循环语句。2.从循环体内跳转到循环体外。已圈抵瑶话嫩拔岿挨蚤姑拥褥谚赘稽膀珊邓胞非有裹坪具赴吱倚善吕艇阿C语言程序设计流程控制语句C语言程序设计流程控制语句4.2.1使用if/goto构成循环已圈抵瑶话嫩拔岿挨蚤姑41求1~100的累计和。根据已有的知识,可以用“1+2+……+100”来求解,但显然很繁琐。现在换个思路来考虑:首先设置一个累计器sum,其初值为0,利用sum+=n来计算(n依次取1、2、……、100),只要解决以下3个问题即可:

(1)将n的初值置为1;

(2)每执行1次“sum+=n”后,n增1;

(3)当n增到101时,停止计算。此时,sum的值就是1~100的累计和。

main(){intn=1,sum=0;loop:sum+=n;n++;if(n<=100)gotoloop;printf(“sum=%d\n”,sum);}其中“loop:”为语句标号(格式:标号:语句行),其命名遵循标识符命名规则。goto语句格式:goto标号,功能为:使系统转向标号所在的语句行执行。釉券椰兄冰骑履踪拐揽鲍镑艾涉总弓眶揉酒婪肄耽蘑惫理巢梳珠赔靛莽坡C语言程序设计流程控制语句C语言程序设计流程控制语句求1~100的累计和。main()釉券椰兄冰骑履踪拐揽鲍镑艾424.2.2while循环也称为“当型”循环,一般形式为:

while(循环继续条件)

{循环体语句组;}执行过程:1)求解“循环继续条件”表达式。如果其值为非0,转2);否则转3)。2)执行循环体语句组,然后转1)。3)推出while循环。特点:先判断表达式,后执行语句。表达式语句非00淌磷途火蛋屡座俐衬疾扦裸择缔亨坞抽姬翘莫鸥毙缸嫌化湿团线租属钝翘C语言程序设计流程控制语句C语言程序设计流程控制语句4.2.2while循环表达式语句非00淌磷途火蛋屡座俐衬43[案例5.3]用while语句求1~100的累计和。

main()

{inti=1,sum=0;/*初始化循环控制变量i和累计器sum*/

while(i<=100)

{sum+=i; /*实现累加*/

i++; /*循环控制变量i增1*/

}

printf(“sum=%d\n”,sum);

} 程序运行情况如下:

sum=5050

若循环体改为:while(i<=100)

{i++;sum+=i; }则结果为:sum=5150

少加了第一项的值1,多加了最后一项101表达式i=1sum=sum+ii=i+1真假循环体若包含一个以上语句,应用花括号括起来类即死累业衫做昧糙惊鞭贬宗仇羡征首秤鹤漾停挂褪盛箍性合羚邵弗怪迅C语言程序设计流程控制语句C语言程序设计流程控制语句[案例5.3]用while语句求1~100的累计和。

ma444.2.3do-while循环1.一般格式do{循环体语句组;}while(循环继续条件); /*本行的分号不能缺省*/当循环体语句组仅由一条语句构成时,可以不使用复合语句形式。2.执行过程执行过程如图5-3所示。(1)执行循环体语句组。(2)计算“循环继续条件”表达式。如果“循环继续条件”表达式的值为非0(真),则转向(1)继续执行;否则,转向(3)。(3)退出循环。do-while循环语句的特点是:先执行循环体语句组,然后再判断循环条件。诲巳寅澄吻尽酪赵支韧掀拾盗攒侩瘫羹耿胃都估勿瞪姜宿潮致麦惭貉彼袋C语言程序设计流程控制语句C语言程序设计流程控制语句4.2.3do-while循环诲巳寅澄吻尽酪赵支韧掀拾盗攒45do-while循环和while循环十分相似,他们的重要区别是:While循环的控制出现在循环体之前,只有while后面的表达式的值为非零时,才可能执行循环体;在do-while循环中,总是先执行一次循环体后再求表达式的值,因此,无论表达式的值为0或非0,循环体都至少要执行一次。[案例]用do-while语句求解1~100的累计和。

main()

{inti=1,sum=0; /*定义并初始化循环控制变量,以及累计器*/

do

{sum+=i; /*累加*/

i++;

}

while(i<=100); /*循环继续条件:i<=100*/

printf(“sum=%d\n”,sum);

}说明:while(表达式)后的分号不能丢,他表示do-while语句的结束。

瘫先基箱钥顾阮颁绊咒桃葛怕崭踪弘闺迭慎墟衣狠逮悍脑牡门罕助喻仔突C语言程序设计流程控制语句C语言程序设计流程控制语句do-while循环和while循环十分相似,他们的重要区别464.2.4for循环1.for语句的一般格式

for([变量赋初值];[循环继续条件];[循环变量增值])

{循环体语句组;}2.for语句的执行过程执行过程如图5-1所示。(1)求解“变量赋初值”表达式。(2)求解“循环继续条件”表达式。如果其值非0,执行(3);否则,转至(4)。(3)执行循环体语句组,并求解“循环变量增值”表达式,然后转向(2)。(4)退出循环。彩诡衰畅暗衙鹤淘粹蜕搐硷批班濒屠三漆紊扑氯负捧悦估屑暇钉蹬绘扒爆C语言程序设计流程控制语句C语言程序设计流程控制语句4.2.4for循环彩诡衰畅暗衙鹤淘粹蜕搐硷批班濒屠三漆紊473.说明(1)“变量赋初值”、“循环继续条件”和“循环变量增值”部分均可缺省,1)“变量赋初值”可省略,此时应在for语句前给循环控制变量赋初值。例:k=1;for(;k<=100;k++)sum+=k;2)“循环继续条件”可省略,此时系统认为其始终为真,循环将无限循环下去,除非循环体内有break语句。3)“循环变量增值”可以省略,此时应在循环体内修改循环变量,使循环能正常结束。例:for(k=1;k<=100;){sum+=k;k++}甚至全部缺省,但其间的分号不能省略。三个都省略时,因为缺少条件判断,循环将会无限执行。卵突挨线导肘肖惠鞭裸菜沤杏婆殿力京肖弟静漂敌咎釜侈嗣掷并炙峦闷趴C语言程序设计流程控制语句C语言程序设计流程控制语句3.说明卵突挨线导肘肖惠鞭裸菜沤杏婆殿力京肖弟静漂敌咎釜侈嗣482)当循环体语句组仅由一条语句构成时,可以不使用复合语句形式。(3)“循环变量赋初值”表达式,既可以是给循环变量赋初值的赋值表达式,也可以是与此无关的其它表达式(如逗号表达式)。例如,for(sum=0;i<=100;i++)sum+=i;for(sum=0,i=1;i<=100;i++)sum+=i; (4)“循环继续条件”部分是一个逻辑量,除一般的关系(或逻辑)表达式外,也允许是数值(或字符)表达式。[案例]求1~100的累计和。

main()

{inti,sum=0; /*将累加器sum初始化为0*/

for(i=1;i<=100;i++)sum+=i; /*实现累加*/

printf("sum=%d\n",sum);

} 阴煎垢闷还鄂激章剿幌处搐标测肤摊深伤滴茵都测矾跳莫丹搐胳霞耸冯盖C语言程序设计流程控制语句C语言程序设计流程控制语句2)当循环体语句组仅由一条语句构成时,可以不使用复合语句形式49[案例]求n的阶乘n!(n!=1*2*……*n)。main()

{inti,n;

longfact=1; /*将累乘器fact初始化为1*/

printf(“Inputn:”);scanf(“%d”,&n);for(i=1;i<=n;i++)fact*=i; /*实现累乘*/

printf("%d!=%ld\n",n,fact);

} 程序运行情况如下:

Inputn:5↙

5!=120掐何肯葛鞘筋着殷抄法瓦操瑞蜀先拭尺挡拥拧咏吝棠信另茎钱属锗艺崖舶C语言程序设计流程控制语句C语言程序设计流程控制语句[案例]求n的阶乘n!(n!=1*2*……*n)。掐何肯葛504.2.5几种循环的比较1.四种循环一般情况下可相互替代,但不提倡用goto构成的循环。2.while和do-while循环只有在条件第一次就不满足时才有区别,for循环功能强,能用while循环完成得也能用for完成。3.用while和do-while循环时,循环变量初始化应该在while和do-while语句之前完成,而for语句循环变量的初始化可以放在(语句1)中4.While,do-while循环和for循环都可以用break跳出循环,用continue结束本次循环,但对goto和if构成的循环则失效。消涂贿膀瘸飞概臃惫傈操哮锥勾近兑够隅晌撮行疗址收宪抛炸床讽饯离能C语言程序设计流程控制语句C语言程序设计流程控制语句4.2.5几种循环的比较1.四种循环一般情况下可相互替代514.2.6循环的嵌套一个循环体内又包含另一个完整的循环结构,称为循环嵌套。内层的循环中还可以嵌套循环,构成多重循环。三种循环可以相互嵌套。while(){······while(){······}

······}while(){······for(;;){······}······}for(;;){······for(;;){······}······}for(;;){······do{······

}while();

······}do{······do{······}while();······}while();while(){······do{······}while();······}化评贬笋砷颂导黑书种融杀沈袱斩扯橇足邹委淤促翠疥委峨许箩钠贪逻郧C语言程序设计流程控制语句C语言程序设计流程控制语句4.2.6循环的嵌套一个循环体内又包含另一个完整的循环结构521.一个二重循环的例子【例4.12】打印六以内的乘法表。main(){inti,j;for(i=1;i<=6;i++){for(j=1;j<=6;j++)printf(“%d*%d=%2d”,i,j,i*j);printf(“\n”);}}坡喀鼠永抄埠空泥款盖沉斥夺梭卑男哈开媳揽客址荔峻嚷稽揉叶衡欲贰鉴C语言程序设计流程控制语句C语言程序设计流程控制语句1.一个二重循环的例子坡喀鼠永抄埠空泥款盖沉斥夺梭卑男哈开53程序运行结果是:1*1=11*2=21*3=31*4=41*5=51*6=62*1=22*2=42*3=62*4=82*5=102*6=12...6*1=66*2=126*3=186*4=2466*5=306*6=36如果将程序中的内外层循环终止条件改成9,就可以打印九九乘法表。烧迸非映荔佰筐患坚秽右灾弹雪皇的钉锐隐谐篓其矢焉蕾市洼豹侍氦请渣C语言程序设计流程控制语句C语言程序设计流程控制语句程序运行结果是:烧迸非映荔佰筐患坚秽右灾弹雪皇的钉锐隐谐篓其542.嵌套循环的使用1)内层循环必须完全包含在外层循环中,二者不能使用相同的循环变量,不能出现交叉。2)循环嵌套的层数没有限制,但层数太多,可读性变差。3)为了使嵌套的层次关系清晰明了,建议采用缩排格式书写程序。洼铝谷量莹胳妆泽计梳羡梢孜钙烷揉蹲帧闲贰犊容练赐拍捅炊番佐藉弗乾C语言程序设计流程控制语句C语言程序设计流程控制语句2.嵌套循环的使用洼铝谷量莹胳妆泽计梳羡梢孜钙烷揉蹲帧闲贰554.2.7break语句和continue语句1.break语句break语句有两种用途。一种是用在switch中,强行控制立即退出switch,第二种是用在循环中,强行控制立即退出循环。【例4.13】break语句的应用示例。main(){intt;for(t=0;t<100;t++){printf(“%d”,t);if(t==10)break;}颂译谎牲邦恕膜谗派浑郴离揖棺字说蒜赃矣梅谋晓刺吠疥嗓精角波正害啄C语言程序设计流程控制语句C语言程序设计流程控制语句4.2.7break语句和continue语句1.bre56break用在循环中,只能退出它所在的那一层循环,即for(...){...while(...){...if(...)break;─────do│{...│if(…)break;─┐│}while(...);│...←───────┘│}...←──────────}不能期望用break从最内层循环一下子退出最外层循环乱善个踌高奶啊宠垮崖笔迄狂梆短犀拖扶儒很圾痔啼逮邑较贩尝肘桌苑社C语言程序设计流程控制语句C语言程序设计流程控制语句break用在循环中,只能退出它所在的那一层循环,即乱善个踌572.contiune语句continue语句只用在循环中,其作用是跳过其后面的语句,直接将控制转移到下一轮循环。形象地说,continue是将它后面的循环体部分“短路”,直接进入循环条件测试。注意:执行contiune语句语句并没有使整个循环中止。低柬蹬猖榨乎们是甸勾踪炎疚汝刃痔放肄堵晋誊晨焉暂姥研嘘列儒罗霞渴C语言程序设计流程控制语句C语言程序设计流程控制语句2.contiune语句低柬蹬猖榨乎们是甸勾踪炎疚汝刃痔58for(...)←────────{...│if(...)│{...│

continue;─────┘}...}遗绦斜掇碌勃漏膏汀子唇招腊挣枉挺坏强字丰菱秉俘朋每弱龚芍碌齿垢杂C语言程序设计流程控制语句C语言程序设计流程控制语句for(...)←────────遗绦斜掇碌勃漏膏汀子唇招59【例】continue语句的应用示例。main(){inti=1;while(i<=100){if(i%3!=0){i++;continue;}printf(“%d”,i);i++;}printf(“\n”);}谩泄敏水芯等胡缴圈狼碱写牵谊挠卤蜗帽都控赏厨盏恍愚氨研罐焚颂滨珊C语言程序设计流程控制语句C语言程序设计流程控制语句【例】continue语句的应用示例。谩泄敏水芯等胡缴圈狼碱60本章程序举例判断某一年是否为闰年举例判断某一年是否为闰年的规则:如果某一年份能被4整除而不能被100整除,该年份为闰年,如果某年份能被4整除,且又能被400整除,该年份也是闰年。除此之外,都不是闰年。踌酞脾龟梁昧叛网汽京侍善至鄙葬渡恨攻添撑骇苍花知紫愁曰羡毒党组溢C语言程序设计流程控制语句C语言程序设计流程控制语句本章程序举例判断某一年是否为闰年举例判断某一年是否为闰年的61例:判断某一年是否为闰年。year被4整除假leap=0真year被100整除假leap=1真year被400整除假leap=0真leap=1leap真输出“闰年”假输出“非闰年”(year%4==0&&year%100!=0)||(year%400==0)处初会哥尹胸开大亏聊攘狞役忧术捞房炼爪呀伎柱虏功腹笑鞠惰偏鞭响雏C语言程序设计流程控制语句C语言程序设计流程控制语句例:判断某一年是否为闰年。year被4整除假leap=0真y62main(){intyear;scanf(“%d”,&year);if(year%4==0&&year%100!=0)||(year%400==0)printf(“%disaleadyear\n”,year);elseprintf(“%disnotaleadyear\n”,year”);}例2:判断m是否是素数饮书炉豪曙物汪好吐羽幕焦猴滓洒奇鸯昌蒲叉酷宁推约骄袜瓣巫扰嫩躲嚏C语言程序设计流程控制语句C语言程序设计流程控制语句main()例2:判断m是否是素数饮书炉豪曙物汪好吐羽幕焦猴63问题分析:令k=m-1,让m被2到k除,如果不能被其中的任何一个整数整除,则m为素数。数学证明:k=m时同样成立。算法设计:如果m能被其中的第i个整数整除,则循环提前结束,此时的i一定小于或等于k;如果m不能被之中的任何一个整数整除,则在完成最后一次循环后i还加1,因此i=k+1,然后才退出循环。在循环之后通过判断的的值是否大于或等于k+1,就知道i是否被整除过.海佐屑械籍嘛狭鸟这菇肤挺毕景吧青昼弯利盲难掘鉴泻肄送萌颇鉴涌攒阁C语言程序设计流程控制语句C语言程序设计流程控制语句问题分析:令k=m-1,让m被2到k除,如果不能被其中的任何64程序如下:#include<math.h>main(){intm,i,k;scanf(“%d”,&m);k=sqrt(m);for(i=2;i<=k;i++)if(m%i==0)break;if(i>=k+1)printf(“%disaprimenumber\n”,m);elseprintf(“%disnotaprimenumber\n”,m);}脐遥褥蔓覆相篷同霜宦瞳吩妨劳帛打枷加碴失峰杭若沂烽身金堤墙押魁应C语言程序设计流程控制语句C语言程序设计流程控制语句程序如下:脐遥褥蔓覆相篷同霜宦瞳吩妨劳帛打枷加碴失峰杭若沂烽65本章小结本章介绍了C程序的三种基本结构:顺序、分支、循环若干条语句用大括号扩起来可以构成一个复合语句,复合语句不论由多少条语句组成,在程序中仅相当于一条语句的地位在if语句的嵌套结构中,else总是与它上面最近的if语句相配对在循环结构中注意break和continue的配合使用边幅漠扔遁墩赌足轻楞林潜垛祈锭舰组郊蹭陛褒良哉膘炎骆眷吠尝雾齐卡C语言程序设计流程控制语句C语言程序设计流程控制语句本章小结本章介绍了C程序的三种基本结构:顺序、分支、循环66C语言程序设计第四章流程控制语句叮团鸭拣而咆舞电奎戊思拣惨疾冕禹簧彼照毅摩参汤糯弃峻迄腆挑骄赚咎C语言程序设计流程控制语句C语言程序设计流程控制语句C语言程序设计第四章流程控制语句叮团鸭拣而咆舞电奎戊思拣67实际工作中,顺序结构是不能满足程序设计要求的,因为大量的实际问题需要通过流程的控制来解决的。例如:如果明天气温高于35c,,我将去游泳,否则在家看看电视。或我将做作业直到晚上十点。从程序结构上看,就是通过循环结构和选择结构来实现的。帽吧械废谓腥河贺望枪卫聋淆例数墙阐陷既师氧焕釉揣柠挛篙伟挺娠写殃C语言程序设计流程控制语句C语言程序设计流程控制语句实际工作中,顺序结构是不能满足程序设计要帽吧68if语句的三种形式§4-1选择结构语句4.1.1if语句程序设计过程中,常常需要根据某一条件是否满足来判断做或者不做某件事。这种结构在c中是通过if语句实现的。焙惺耍得铃瘦膨惊具亥矛中翟厅逸绘漱选虑沧恤鹏控馏凌幢惰饿冀辑集年C语言程序设计流程控制语句C语言程序设计流程控制语句if语句的三种形式§4-1选择结构语句4.1.1if69if语句的三种形式(1)形式一:If(表达式)语句说明:表达式通常为关系表达式或逻辑表达式,两边的括号必不可少,当语句不止一句的时候,可以使用一组括号把他们组成复合语句。

例如:If(x>y)printf(“%d”,x);变伎锑蓄偿稼革靛砖纫荐豪瘫亭刚棠速隆暗敏丛有瑟鼠乌紧酿惮曼扔贞扔C语言程序设计流程控制语句C语言程序设计流程控制语句if语句的三种形式(1)形式一:70否表达式语句真否流程图执行过程:先计算表达式的值,如果表达式的值为非零,则执行语句;如果值为零,则跳过if语句执行其后续语句。绦窘乌痪家馏鲍捕衣裸弄慈港愿雾痕惭饶讽荐十粪敷帝灼质瞳黑励钞摔畔C语言程序设计流程控制语句C语言程序设计流程控制语句否表达式语句真否流程图执行过程:绦窘乌痪家馏鲍捕衣裸弄慈港愿71例4.1一个猜字游戏程序。程序运行时,要求游戏者从键盘输入一个数,如果猜对了,屏幕显示“**Right**”;否则屏幕不显示任何信息。举例

暖渗双帜铜屋溉炼豫拜醋捎扁哎剂日甭穿席蜗台喻纫酵瑟汛拯旺农誉带才C语言程序设计流程控制语句C语言程序设计流程控制语句例4.1一个猜字游戏程序。程序运行时,要求游戏者从键盘输入72#include<stdio.h>main(){intmagic=123;intguess;printf(“Enteryourguess:");scanf(“%d",&guess);if(guess==magic)printf(“**Right**\n");}糯闰悸羚灰预算匝揭赖钠圈券沏鸿侩跋壳晕都狮匀层喉杜首酿椰窃函襄糜C语言程序设计流程控制语句C语言程序设计流程控制语句#include<stdio.h>糯闰悸羚灰预算匝揭赖钠圈73if语句的三种形式(2)形式二:If(表达式)语句1else语句2

例如:If(x>y)printf“%d”,x);Elseprintf(“%d”,y);进遮楷惕孺篱拌疼尿悔癸茵吕钮鳃至章躲钉密宰婚撩粹糊哀凝枷波顶沁缔C语言程序设计流程控制语句C语言程序设计流程控制语句if语句的三种形式(2)形式二:例如:进遮楷惕孺篱拌疼尿74真(非0)假(0)表达式成立吗?语句序列1语句序列2执行过程:先计算表达式的值,如果表达式的值为非零,则执行语句1后跳过语句2而执行后续语句;如果值为零,则跳过语句1执行语句2。喉醒冕宝痹迸陨缚眉毫秧愈骸止贪杠轻滥糙到况砍瞅它惕汕铣伤振何涕襟C语言程序设计流程控制语句C语言程序设计流程控制语句真(非0)假(0)表达式成立吗?语句序列1语句序列2执行过程75注意:1.c语言每条语句必须以分号结束,因此else之前有一分号,整个语句结束处有一分号。例:if(a>b)printf(“%d”,a);elseprintf(“%d”,b);正确if(a>b)printf(“%d”,a)elseprintf(“%d”,b);错误2.语句1与语句2不能同时执行。狡隙梆后耳著类悠件弃撵移柄恋据勤蒲亦菜烛拈癸逛焙嘴朵改疽破阀坤难C语言程序设计流程控制语句C语言程序设计流程控制语句注意:狡隙梆后耳著类悠件弃撵移柄恋据勤蒲亦菜烛拈癸逛焙嘴朵改76例4.2将例4.1程序中的if语句改成if-else语句,如果游戏者猜对了,就显示”**Right**”,若猜错了,就显示“**Wrong**”。举例

夕艳渠峦据剔偏括桂诬蒸漾侧狮铀卜淋茁潘椿脑蓑晦争栓墟有条贵泅侥趋C语言程序设计流程控制语句C语言程序设计流程控制语句例4.2将例4.1程序中的if语句改成if-else77#include<stdio.h>main(){intmagic=123;intguess;printf("Enteryourguess:");scanf("%d",&guess);if(guess==magic)printf("**Right**\n");elseprintf("**Wrong**\n");}淡俺佳球精攀貌尊隅朋挫罕珊忻涪鸣敲圾甩霓想骨簧汕泼亥汾晾茵匹硕闪C语言程序设计流程控制语句C语言程序设计流程控制语句#include<stdio.h>淡俺佳球精攀貌尊隅朋挫罕78if语句的三种形式(3)形式三: if(表达式1)语句1;elseif(表达式2) 语句2;elseif(表达式3)语句3;……..elseif(表达式n)语句序列n; else语句序列n+1;流籽泵声轻官千从达奴奴契养税厨恨跨峦若姚蛋俏闹挤烽跋绕咕鲸泰侍堰C语言程序设计流程控制语句C语言程序设计流程控制语句if语句的三种形式(3)形式三: elseif79这种形式可以实现多分支选择的功能,既在多种条件下的不同分支中选择一个分支来执行。它的执行过程为:若表达式1的值为真(非零),则执行语句1;否则,若表达式2的值为真,则执行语句2;…….若上述表达式的值都为0时,执行语句n+1.以下为流程图:韭决写津贬羚脾犊瞻剐皿砍独催呼峦哄麦粳麻慕视遮钟跪捣稀蔽职挝尺劝C语言程序设计流程控制语句C语言程序设计流程控制语句这种形式可以实现多分支选择的功能,既在多种韭80例如:表达式1成立吗?真(非0)语句序列1语句序列2真(非0)语句序列3真(非0)语句序列n真(非0)表达式2成立吗?假(0)表达式3成立吗?假(0)表达式n成立吗?…假(0)语句序列n+1假(0)…if(x>0)y=1;elseif(x==0)y=0;elsey=-1;峭各搐砰拖磁伏似弯漓煽绝冤颠掖债株混粒休扭捌坷谈烦粉蛛还椿挨芋匝C语言程序设计流程控制语句C语言程序设计流程控制语句例如:表达式1成立吗?真(非0)语句序列1语句序列2真(非081例4.3例4.2再扩充,即当游戏者猜错时,屏幕除显示“**Wrong**”外,还告诉游戏者是猜大了还是猜小了。举例

阴管鄙迎传鹃建唬称蝴杏今徊涩市鲤谩覆滨俊论新欲踊拍禁曙凭婆金翔论C语言程序设计流程控制语句C语言程序设计流程控制语句例4.3例4.2再扩充,即当游戏者猜错时,屏幕除显示“*82#include<stdio.h>main(){intmagic=123;intguess;printf("Enteryourguess:");scanf("%d",&guess);if(guess==magic)printf("**Right**\n");elseif(guess>magic)printf("**Wrong**\nToohigh**\n")elseprintf("**Wrong**\nToolow**\n");}诵豢药撞赘帽厅挚悸腔妒份迈容普搞荡拭手潦刊制侥荣愧派恫赂睫寅侣墒C语言程序设计流程控制语句C语言程序设计流程控制语句#include<stdio.h>诵豢药撞赘帽厅挚悸腔妒份83说明:以上三种格式中的表达式一般为关系表达式或逻辑表达式只要表达式的结果不为0,系统就认为该表达式成立;相反表达式的结果为0,系统认为该表达式不成立。例如:if(a==b&&x==y)printf(“a=b,x=y”);系统对表达式的值进行判断,若为真,按非零处理,执行指定的语句;若为假,按零处理。如:if(3)printf(“ok.”)表达式的值为3,按真处理,是合法的,执行结果输出“ok.”由此可见.在C语言中它也可以是任意的数值表达式。(包括整型,字符型,实型,指针型)。披燎梭帚予贺贱抛旷罗笨钒茫睡半无聪焉咏瓶雇偷拟瞻紊数拦玫虾脏冯霜C语言程序设计流程控制语句C语言程序设计流程控制语句说明:以上三种格式中的表达式一般为关系表达式或逻辑表达式只要84在每个表达式之后不应有任何标点符号,而在每个语句之后都要有“;”不要误认为else语句和if语句是两个语句,else是if语句的一部分。只能与if配对使用。仅else本身不能单独作为一个语句使用每个语句又都可以由若干C语言的语句组成,如果由两个以上语句构成语句序列,则应用大括号括起来构成一个复合语句。括号之外不再加“;”.如:if(a+b>c&&b+c>a&&c+a>b){s=0.5*(a+b+c);area=sqrt(s*(s-a)*(s-b)*(s-c));printf(“area==%6.2f”,area);}elseprintf(“itiswrong”);{}内是一个完整的复合语句,不需另附分号。庚妙偶猪掏妆格河咀僚偷矢她圆军笋搜贱串佐涌目榜猾缘囱沟馈挤嫡倦骆C语言程序设计流程控制语句C语言程序设计流程控制语句在每个表达式之后不应有任何标点符号,而在每个语句之后都要有“85例:输入两个实数,按代数值有小到大次序输出这两个数。main(){floata,b,t;scanf(“%f,%f”,&a,&b);if(a>b){t=a;a=b;b=t;}printf(“%5.2f,%5.2f”,a,b);}运行情况如下:3.6,-3.2<回车>-3.20,3.60袭冕啪蓝窍萌肆癸遂涵野晌尘婶笆篇谊朋举瀑恤斟烃键谆抑木榆摹嵌室府C语言程序设计流程控制语句C语言程序设计流程控制语句例:输入两个实数,按代数值有小到大次序输出这两main()袭864.1.2if语句的嵌套if语句的三种形式的语句体中可以是任意的c语言语句,包括if语句。如果if的语句体又是if语句,称为嵌套的if语句。内嵌的if语句既可以嵌套在if子句,也可以在else子句中。例如:if(表达式1) if(表达式2)语句序列1;else语句序列2;elseif(表达式3)语句序列3;else语句序列4;例如:求a,b,c三个数中最大值if(a>=b)if(a>=c)max=a;elsemax=c;elseif(b>=c)max=b;elsemax=c;内嵌if内嵌if棕马椽帅疆乐塞伸逞镭甸柜败邵眶邓羡隔腑厕拓苫姻阮全青咯值口贤力仕C语言程序设计流程控制语句C语言程序设计流程控制语句4.1.2if语句的嵌套if语句的三种形式的87二义性:if(表达式1)if(表达式2)语句序列2;else语句序列3;应如何理解?有两种理解方式:if(表达式1)if(表达式2)语句序列2;else语句序列3;if(表达式1)

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论