第四章 C++的流程控制语句

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

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

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

资源描述

第四章C++的流程控制语句程序的三种基本结构1、顺序AB2、选择条件?真假ABxy?真假z=xz=y3、循环A当P为真当型i++i10PAYN直到P为真A直到型i=10i++PAYNif语句判断选择语句,有三种形式:1)if(表达式)语句语句条件真假语句2语句1条件真假2)if(表达式)语句1else语句2if(ab)couta;if(ab)couta;elsecoutb;3)if(表达式1)语句1elseif(表达式2)语句2......elseif(表达式n)语句nelse语句n+1表达式1语句1真表达式2真语句2表达式3真语句3表达式4真语句4假假假假语句5表达式1语句1真表达式2真语句2表达式3真语句3表达式4真语句4假假假假语句5注意:1)if后可跟复合语句。2)注意;的位置。3)注意多重ifelse的搭配。if(ab){a=1;b=0;}else{a=0;b=1;}a=0b=1a=1b=0ab真假if(ij)i++;if(ij);i++;i++ij真假if总是与它上面最近的else配对,如要改变,用复合语句{}。注意书写格式,相互配对的语句要对齐。ij真假i++例:输入两个实数,按代数值由小到大次序输出这两个数。voidmain(void){floata,b,t;//定义变量cout“Input2RealNumber:\n;//在屏幕上的提示信息cinab;//给变量赋值a:7,b:3if(ab){t=a;a=b;b=t;}//交换数据,用中间变量couta‘\t’bendl;//输出变量}bat73773输出结果:37嵌套的条件语句(举例说明)x=100;a=10;b=20;ok1=5;ok2=0;if(ab)if(b!=15)if(!ok1)x=1;elseif(ok2)x=10;x=-1;x=-1条件运算符是C++中的唯一的三目运算符。表达式1?表达式2:表达式3表达式3表达式2表达式1真假max=ab?a:b;//求a,b中的大者当a=2b=1ab为真,表达式的值等于a,max值为2当a=1b=2ab为假,表达式的值等于b,max值为2注意:1.条件运算符的优先级比赋值运算符高x=(x=3)?x+2:x-32.结合方向自左至右ab?a:cd?c:d3.三个表达式的类型可不同z=ab?'A':a+bx=5x=9,y=6,z=5;x=((x+y)%z=x%z+y%z)?1:0;coutx=xendl;x=1;y=2;z=3;x+=y+=z;cout(z+=xy?x++:y++)endl;y=y+z=5x=x+5=69x=0voidmain(void){intx=1,y=2,z=3;x+=y+=z;coutxy?y:xendl;coutxy?x++:y++endl;coutx“,”yendl;coutz+=xy?x++:y++endl;couty“,”zendl;x=3;y=z=4;cout(z=y&&y==x)?1:0endl;coutz=y&&y=xendl;}xyz输出653653666356636,667996797,934434403441执行以下程序段后,变量a,b,c的值分别是:intx=10,y=9;inta,b,c;a=(--x==y++)?--x:++y;b=x++;c=y;x=8y=10a=8b=8x=9c=10voidmain(void){inta=5,b=1,c=0;if(a=b+c)cout“***\n”;elsecout“$$$\n”;}***switch语句多分支选择语句。if语句只有两个分支,而实际问题中常常需要用到多分支的选择。如,成绩分为A(100~85)、B(84~70)、C(69~60)、D(60以下)等。‘A’100~85Y‘B’Y84~70‘C’Y69~60‘D’YnopassNNNN显示出错cin.get(grade);if(grade==‘A’)cout“100~85\n”;elseif(grade==‘B’)cout“84~70\n”;elseif(grade==‘C’)cout“69~60\n”;elseif(grade==‘D’)cout“nopass\n”;elsecout“error\n”;switch(表达式){case常量表达式1:语句1case常量表达式2:语句2……case常量表达式n:语句ndefault:语句n+1}switch(grade){case‘A’:cout“100~85\n”;case‘B’:cout“84~70\n”;case‘C’:cout“69~60\n”;case‘D’:cout“nopass\n”;default:cout“error\n”;}如果grade为‘A’,则结果为100~8584~7069~60nopasserror其流程为:先计算表达式的值,然后顺序地与case子句中所列出的各个常量进行比较,若表达式的值与常量中的值相等,就开始进入相应的case语句执行程序,遇到case和default也不再进行判断,直至switch语句结束。如果要使其在执行完相应的语句后中止执行下一语句,可以在语句后加break。switch(grade){case‘A’:cout“100~85\n”;break;case‘B’:cout“84~70\n”;break;case‘C’:cout“69~60\n”;break;case‘D’:cout“nopass\n”;break;default:cout“error\n”;}注意:1、switch与if不同,它仅能判断一种逻辑关系,即表达式是否等于指定的常量,而if可以计算并判断各种表达式。2、case子句后必须为常量,常常是整型和字符型。3、default可以省略,这时,不满足条件什么也不执行。4、case和default只起标号的作用,顺序可以颠倒,颠倒时注意后面的break语句。5、多个case语句可以共用一组程序。case‘A’:case‘B’:case‘C’:cout“pass!\n”;voidmain(void){inti=10;switch(i){case9:i++;case10:i++;case11:i++;default:i++;}cout“i=”iendl;}i=11i=12i=13i=13intx=1,y=0,a=0,b=0;switch(x){case1:switch(y){case0:a++;break;case1:b++;break;}case2:a++;b++;break;case3:a++;b++;}cout“a=“a‘\t’“b=”bendl;a=1a=2b=1a=2b=1有3个整数a,b,c,由键盘输入,输出其中最大的数。while语句while(表达式){语句组1}{语句组2}表达式语句组1真语句组2假a=3;while(a100)a=a+5;cout“a=“a;当循环语句超过一条时,要用{}将语句组组合在一起。求1+2+3+……+100voidmain(void){inti=1,sum=0;//定义变量,初始化while(i=100)//构造循环{sum=sum+i;//循环体,多次执行i=i+1;}cout“sum=”sumendl;//输出结果}循环条件初值循环次数1234.....99100101sumi0112真33真64真105真真100真101真5050假sum=50500sum1i1233641005050101循环结束!!实际上是将i不停地累加到一起注意:1、循环体如果为一个以上的语句,用{}括起。2、循环体内或表达式中必须有使循环结束的条件,即一定有一个循环变量。3、while表达式可以成为语句,要特别小心。k=2;while(k!=0)coutk,k--;coutendl;k循环条件输出输出:212真21真10假回车voidmain(void){intnum=0;while(num=2){num++;coutnumendl;}}num循环条件输出1230真1CR1真2CR2真3CR3假无voidmain(void){inty=10;while(y--);cout“y=”yendl;}y条件输出输出:y=-1输出是什么?循环几次?10真无9真无......真无1真无0假-1循环:10次k=10;while(k=0)k=k-1;coutk;k10表达式0输出:0x=10;while(x!=0)x--;x=10;while(x)x--;x=10;while(x--);x=10;while(--x);以下语句,循环退出时x为多少?x=0x=0x=-1x=0#includeiostream.hvoidmain(){charch;while(cin.get(ch)&&ch!='\n')switch(ch-'2'){case0:case1:cout(char)(ch+4);case2:cout(char)(ch+4);break;case3:cout(char)(ch+3);default:cout(char)(ch+2);break;}coutendl;}从键盘输入2473CR,则程序的输出结果是:输出:668977直到P为真A直到型do—while语句表达式语句组1真语句组2假do{语句组1}while(表达式);{语句组2}求1+2+3+……+100voidmain(void){inti=1,sum=0;//定义变量,初始化do//构造循环{sum=sum+i;//循环体,多次执行i=i+1;}while(i=100);cout“sum=”sumendl;//输出结果}注意:do—while首先执行循环体,然后再判断表达式,至少执行一次循环体。当第一次循环表达式的值为真时,while与do—while的结果完全一样,否则结果不相同。x=0,y=0;do{y++;x*=x;}while((x0)&&(y5));cout“y=“y“,”“x=”xendl;y0x0条件输出:y=1,x=010假若为while循环,则一次也不执行循环体,输出为:y=0,x=0s=7;dos-=2;while(s==0);cout“s=”sendl;第一次s75表达式N输出:s=5for语句for(表达式1;表达式2;表达式3){语句组1(循环体)}{语句组2}N表达式2语句组1Y语句组2表达式1表达式3for(循环变量赋初值;循环结束条件;循环变量增值)求1+2+3+……+100voidmain(void){inti,sum;for(i=1,sum=0;i=100;i++)sum=sum+i;cout“sum=”sumendl;}voidmain(void){inti,sum;i=1;sum=0;while(i=100){sum=sum+i;i=i+1;}cout“sum=”sumendl;}注意:1、当型循环,条件测试是在循环开始时进行,有可能一次也进入不了循环体。2、for语句中的三个表达式可以部分省略或全部省略,但;不能省略,若省略表达式2,则表示循环条件为真。3、for语句中三个表达式可以是任何有效的C语言表达式。voidmain(void){chari,j;for(i=‘a’,j=‘z’;ij;i++,j--)coutij;coutendl;}次数ijij输出输出:azbycx.......lomnaz真azby真bycx真cx真.....真....

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

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

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

×
保存成功