第二章 程序控制结构

整理文档很辛苦,赏杯茶钱您下走!

免费阅读已结束,点击下载阅读编辑剩下 ...

阅读已结束,您可以下载文档离线阅读编辑

资源描述

1第二章程序控制结构2条件控制结构:(选择结构)无条件控制结构:循环控制结构:(重复结构)while语句、do-while语句、for语句if语句、switch语句break语句、continue语句、goto语句控制结构32.1if语句2.1.1简单if语句形式一if(表达式)/*括号不能少*/语句表达式0语句非04表达式语句1非0语句20形式二if(表达式)语句1else语句25例3从键盘输入一个整数,计算它的绝对值并输出。#includeiostream.hvoidmain(){inti,absi;cout”Enteraninteger:”;cini;if(i0absi=i;elseabsi=-i;cout”Theabsolutevalueof”i”\is”absi”.\n”;}Enteraninteger-684Theabsolutevalueof–684is684.6例5若字符变量ch的当前值是一个英文字母字符,则输出一行文字信息;否则,输出另一行文字信息。这里测试条件就是”ch是一个英文字母If(ch=’A’&&ch=’Z’||ch=’a’&&ch=’z’)coutch”isanEnglishletter.\n”;elsecoutch”isnotanEnglishletter.\n”;测试条件不能写成’A’=ch=’Z’||’a’=ch=’z’72.1.2条件表达式与条件表达式语句一般形式:表达式1?表达式2:表达式3例6#includeiostream.hvoidmain(){inti,absi;cout”Enteraninteger:”;cini;absi=i0?i:-i;cout”Theabsolutevalueof”i”is”absi”.\n”;}82.1.3复合语句复合语句:一对花括号及其中包含的语句集。{说明语句(可选)执行语句集}使用说明语句的复合语句称为程序块程序中凡可使用单一语句的地方,都可使用复合语句作为特例,函数体也就是一个复合语句92.1.4扩展if语句与嵌套if语句一般形式:if(表达式1)语句1elseif(表达式2)语句2……elseif(表达式n)语句nelse语句n+110例9从键盘输入一个表示百分制成绩的非负整数,按相应的五级记分制(A、B、C、D、F)转换,并输出结果。对于所输入的数据,需判断其合理性,即应为0~100#includeiostream.hvoidmain(){intscore;chargrade;cout”Enterscore(0--100):”;cinscore;cout”score:”scoreendl;if(score0||score100cout”Error--outofrange.\n”;else11{if(score=90grade=’A’;elseif(score=80grade=’B’;elseif(score=70grade=’C’;elseif(score=60grade=’D’;else//0=score60grade=’F’;cout”grade:”gradeendl;}}Enterscore(0--10095score:95grade:A12if语句允许嵌套既定解释规则是:else应与离它最近的那个尚未与其他else匹配的if-相匹配。例#includeiostream.hmain(){inta=2,b=-1,c=2;if(ab)if(b0)c=0;elsec+=1;cout”C:”cendl;}输出结果2132.2switch语句一般形式:switch(表达式){case常量表达式1:语句1break;case常量表达式2:语句2break;……case常量表达式n:语句nbreak;default:语句n+1}可以省略default子句14switch(表达式){case常量表达式1:语句1或空;case常量表达式2:语句2或空;...case常量表达式n:语句n或空;default:语句n+1或空;}将表达式值逐个与case后的常量进行比较:若与其一个相等,则从该常量下的语句开始向后执行,不再进行判断,直至整个语句结束;若不与任何一个常量相等,则执行default后面的语句。15例10#includeiostream.hvoidmain(){intscore;chargrade;cout”Enterscore(0--100):”;cinscore;cout”score:”scoreendl;if(score0||score100cout”Error--outofrange.\n”;else{16switch(score/10){case10case9:grade=’A’;break;case8:grade=’B’;break;case7:grade=’C’;break;case6:grade=’D’;break;case5:case4:case3:case2:case1:case0:grade=’F’;break;}cout”grade:”gradeendl;}}Enterscore(0--10095←score:95grade:A172.3while语句while语句的一般形式是:while(表达式)语句表达式0语句非0为确定究竟执行循环体多少次,必须仔细选择所需的初值、终值以及增量,否则,会犯”多一错误”或”丢一错误”。18例12设ch是个字符变量。ch=’A’;while(ch=’K’{coutch;ch=ch+1;}coutendl;输出一行文字信息:ABCDEFGHIJK19例14while(12cout”NULLOPERATION\n”;while(truecout”INFINITELOOP!\n”;while(getche()!='\X0D');//这个循环直到键入回车为止20复合语句do{语句}while(表达式);单一语句do语句while(表达式);0非0表达式语句2.4do-while语句21例16承例12,可使用do-while语句实现同ch=’A’;do{coutch;ch=ch+1;}while(ch=’K’);coutendl;22while语句是”先判断,后执行”,而do-while语句是”先执行、后判断”,当涉及用while语句相当于空操作语句时,两者形式上的替换就有可能发生问题。例17比较下述while语句和do-while语句while(12cout”NULLOPERATION\n”;//空操作语句docout”NULLOPERATION\n”while(12);//输出一行文字信息232.5for语句一般形式:for(表达式1;表达式2;表达式3)语句注意:三个表达式可以部分地或全部省略,但分号必须保留。例23承例12、例16,可使用for语句实现同for(ch=’A’;ch=’K’;ch=ch+1coutch;coutendl;24例27使用for语句实现循环控制的两种特殊情形for(ch=’Z’;ch=’Y’;ch=ch-1cout”DONOTHING\n”;//for(;true;cout”INFINITELOOP!\n”;//无限循环!应避免此类语句编码252.6用于循环控制的几个特殊运算符2.6.1增量运算符与减量运算符26增量运算符”++”:自增运算符。减量运算符”--”:自减运算符。都是单目运算符,可出现在操作数前(作为前缀)或后(作为后缀)。结合规则是从右到左。27例28自增、自减运算符”++”、”--”的使用。#includeiostream.hvoidmain(){inti=3,j=5;cout”i=”i”,j=”jendl;cout”i++=”i++”,j--=”j--endl;cout”Nowi=”i”,j=”jendl;i=3;j=5;cout”i=”i”,j=”jendl;cout”i=”++i”,--j=”--jendl;cout”Nowi=”i”,j=”jendl;}i=3,j=5i++=3,j--=5Nowi=4,j=4i=3,j=5i=4,--j=4Nowi=4,j=4282.6.2逗号运算符用于将多个表达式串联在一起,是优先级最低的运算符是双目运算符,其结合规则从左到右由逗号运算符与左右两个操作数组成逗号表达式逗号表达式一般形式:表达式1,表达式2功能:先求表达式1的值,再求表达式2的值,并以表达式2的值作为该逗号表达式的结果值。29例计算前N个自然数中所有奇数之和。sum=0;for(counter=1;counter=N;counter=counter+2)sum=sum+counter;改写为for(sum=0,counter=1;counter=N;counter=counter+2)sum=sum+counter;还可改写为for(sum=0,counter=1;counter=N;sum=sum+counter,counter=counter+2);//for循环体为空语句302.6.3自反赋值运算符自反赋值运算符是一个复合运算符。它用于简写赋值表达式。31例可进一步改写for语句for(sum=0,counter=1;counter=N;counter=counter+2)sum+=counter;或者for(sum=0,counter=1;counter=N;counter++,counter++)sum+=counter;32运算符的优先级及结合性优先级运算符()++--+-!*/%+-====!=&&||?:=+=-=*=/+%=,类型圆括号单目运算符乘法运算符加法运算符关系运算符相等测试运算符逻辑与逻辑或条件运算符赋值运算符逗号运算符结合性从左到右从右到左从左到右从左到右从左到右从左到右从左到右从左到右从右到左从右到左从左到右高332.8.1break语句break一般形式是:break;功能:用于switch、while、do-while或for结构中转换控制流:立即退出该结构,使流程控制转向执行该结构后的第一条语句。注意:不能用于从if语句的选择结构中跳出。仅能从它自身所在循环体中跳出,即仅实现向”外”跳一层。2.8break语句、continue语句和goto语句34#includeiostream.hvoidmain(){inti,j,min,k;do{cout”Entertwopositiveintegers:”;cinij;}while(!(i0&&j0));min=ij?i:j;for(k=min;k=1;k--if(i%k==0&&j%k==0break;cout”Thegreatestcommondivisorof”i”and”j”is”k’.’endl;}例34求两个正整数i,j的最大公因子,采用穷举法。352.8.2continue语句continue语句的一般形式是continue;功能:从当前位置将流程控制转移至本次循环的结束位置,并继续执行下一次循环。在while和do-while结构中,执行完continue语句后就立即测试继续循环的条件。在for结构中,执行完continue语句后即执行增量表达式,然后测试继续循环的条件。注意:只用于while、do-while及for这三类循环中。36#includeiostream.h#includeiomanip.hvoidmain

1 / 38
下载文档,编辑使用

©2015-2020 m.777doc.com 三七文档.

备案号:鲁ICP备2024069028号-1 客服联系 QQ:2149211541

×
保存成功