还剩9页未读,继续阅读
本资源只提供10页预览,全部文档请下载后查看!喜欢就下载吧,查找使用更方便
文本内容:
本文由InspireX贡献ppt文档可能在WAP端浏览体验不佳建议您优先选择___,或下载源文件到本机查看第3章程序控制语句C++的语句分类为C++的语句分类为的语句分类为控制语句表达式语句空语句复合语句本章主要介绍程序控制语句C++中本章主要介绍程序控制语句在C++中,有一组相关的控制语句,用以实现选择结构与循环结构制语句,用以实现选择结构与循环结构选择控制语句if…elseswitch…case选择控制语句ifelse;switchcase循环控制语句while、do…whilewhile、循环控制语句while、dowhile、for转移控制语句break、continue、goto转移控制语句break、continue、goto3.1选择语句.…elseifelse语句if语句是用来判定所给定的条件if语句是用来判定所给定的条件是否满足,根据判定的结果(是否满足,根据判定的结果(真或决定执行给出的两种操作之一假)决定执行给出的两种操作之一C++语言提供了三种形式的C++语言提供了三种形式的if语句语句if语句if(表达式)语句1
(1)if(表达式)语句1它的执行过程是它的执行过程是当表达式为真时,执行语句1真时,执行语句1,否则不做任何操作,直接去执行if语句后面的语操作,直接去执行if语句后面的语if如图(所示句,如图(a)所示表达式假0真非0语句1图(a))if(表达式)语句1
(2)if(表达式)语句1语句2else语句2它的执行过程是当表达式为真时,执行语句1它的执行过程是当表达式为真时,执行语句1;表达式为假执行语句2无论如何,语句1与语句2时,执行语句2无论如何,语句1与语句2每次只能有一个被执如图(所示两者选择之一行,如图(b)所示两者选择之一真非0表达式假0语句2语句1图(b)完整源程序为完整源程序为#includeusingnamespa__std;分析分析/*以上两句也合并成以上两句也合并成为求输入的三个整数a为求输入的三个整数a、b和c#include*/的最大值__x__x,的最大值__x,int__in可以先比较a可以先比较a和b,将较大的值{赋给__x语句为__x,赋给__x,语句为intabc__x;ifab__x=a;cinabc;else__x=b;ifab__x=a;else__x=b;然后将__x__x与进行比较,如果c然后将__x与c进行比较,如果c大于__x则将__x修改为c的值,__x,__x修改为大于__x,则将__x修改为c的值,ifc__x__x=c;cout__x=__xendl;语句为语句为return0;ifc__x__x=c;}输入三个整数,例3-1输入三个整数,找出其中的最大数并输出中的最大数并输出花括号是必须的,否则意义完全不同输入三个整数,例3-2输入三个整数,将它们按从小到大的顺序temp=a;输出输出a=c;#includec=temp;usingnamespa__std;}int__inifbc{{intabctemp;temp=b;cinabc;b=c;ifabc=temp;{}temp=a;coutTheresultisc{在一个if语句中可以又出现另一个if语句,这称为ifif语句if语句在一个if语句中可以又出现另一个if语句,这称为if语句的嵌套或多重if语句其一般形式为if语句的嵌套或多重if语句其一般形式为表达式_1_1)if(表达式_1)ifelse表达式_12语句3_12)if(表达式_12)语句3;else语句4;语句4真真表达式_1(表达式_11)语句1;表达式_11)语句1_11语句2语句2;else假程序执行流程如图c所示如图c所示c所示表达式_11假真表达式_12假语句1语句2语句3语句4图c编写一个程序,输入一个x例3-3编写一个程序,输入一个x,改写成如下形式改写成如下形式根据下面的函数输出y的值根据下面的函数输出y的值#includex0)1(x0)usingnamespa__std;x=0)y=0(x=0)int__inx0)-1(x0){#includefloatx;usingnamespa__std;inty;int__incinx;{y=0;floatx;inty;ifx=0cinx;ifx0y=1;ifx=0elsey=-1;ifx0y=1;coutyendl;elsey=0;return0;elsey=-1;}coutyendl;return0;}对吗?
(3)if…elseif语句ifelseif语句C++程序还经常使用如下结构程序还经常使用如下结构在C++程序还经常使用如下结构if(表达式_1语句1_1)if(表达式_1)语句1if(表达式_2_2)elseif(表达式_2)语句2if(表达式_3_3)elseif(表达式_3)语句3…if(表达式_n_n)elseif(表达式_n)语句nelse语句语句n+1else语句n+1这种嵌套的if语句构成的序列是编写多路判定的最一般的方法if语句构成的序列是编写多路判定的最一般的方法这种嵌套的if语句构成的序列是编写多路判定的最一般的方法它的执行过程是如果表达式1的值为真,则执行语句1;它的执行过程是如果表达式1的值为真,则执行语句1否则,如果表达式2的值为真,则执行语句2if后否则,如果表达式2的值为真,则执行语句2;……;如果if后;如果if的表达式都不为真,则执行语句n+1n+1的表达式都不为真,则执行语句n+1每一个语句可以是单个语也可以是用花括号括起来的一组语句即复合语句句,也可以是用花括号括起来的一组语句即复合语句当n=3时,程序执行的流程如图d所示n=3时程序执行的流程如图d所示d所示表达式_1真假假表达式_2真假表达式_3真语句1语句2语句3语句4图d输入一个百分制的考试成绩,要求按照下面的规则打印出等级例3-4输入一个百分制的考试成绩,要求按照下面的规则打印出等级对应规则为100分等级为分等级为“,__分等级为分等级为“,79分对应规则为90~100分等级为“A”,80~__分等级为“B”,70~79分等级为“,69分等级为分等级为“,59分等级为分等级为“等级为“C”,60~69分等级为“D”,0~59分等级为“E”#includeusingnamespa__std;int__in{intscore;cinscore;ifscore100coutYourinputisWrong!endl;elseifscore=90coutscoreAendl;elseifscore=80coutscoreBendl;elseifscore=70coutscoreCendl;elseifscore=60coutscoreDendl;elseifscore=0coutscoreEendl;elsecoutYourinputisWrong!endl;return0;}使用if语句的注意事项使用if语句的注意事项
(1)三种形式的if语句中在if后面都有“表达式”,一般为逻辑三种形式的if语句中在if后面都有“表达式”if语句中在if后面都有表达式或关系表式表达式或关系表式例如,if(==bx====ycout‘a例如,if(a==bx==y)couta=b,x=y”;;在执行if语句时先对表达式求解,若表达式的值为0在执行if语句时先对表达式求解,若表达式的值为0,按“假”if语句时先对表达式求解处理,若表达式的值为非0处理,若表达式的值为非0,按“真”处理,执行指定的语句处理,执行指定的语句例如有以下if语句if
(3)cout“O.K.;例如有以下if语句if(coutO.K.”;if语句O.K.是合法的,执行结果输出“O.K.,因为表达式的值为3是合法的,执行结果输出“O.K.”,因为表达式的值为3,按“真”处理由此可见,表达式的类型不限于逻辑表达式,可处理由此可见,表达式的类型不限于逻辑表达式,以是任意的数值类型(包括整型,实型、字符型指针型数据)以是任意的数值类型(包括整型,实型、字符型指针型数据)第
二、第三种形式的if语句中,在每个else前面有一分号,if语句中else前面有一分号
(2)第
二、第三种形式的if语句中,在每个else前面有一分号,整个语句结束处有一分号整个语句结束处有一分号例如if(x0)ifx0)coutx;coutx;elsecout-cout-x;各有一个分号这是由于分号是C语言中不可缺少的部分,这个分号是这是由于分号是C语言中不可缺少的部分,if语句中的内嵌语所要求的如果无此分号,则出现语法错误语句中的内嵌语所要求的if语句中的内嵌语所要求的如果无此分号,则出现语法错误else子句不能作为语句单独使用它必须是if语句的一部分与子句不能作为语句单独使用它必须是if语句的一部分与ifelse子句不能作为语句单独使用它必须是if语句的一部分与if配对使用而且是每个else与最近的一个if配对else与最近的一个if配对配对使用而且是每个else与最近的一个if配对
(3)在if和else后面可以只含一个内嵌的操作语句(如上例),if和else后面可以只含一个内嵌的操作语句(如上例),后面可以只含一个内嵌的操作语句也可以有多个操作语句,此时用花括号“{}”将几个语句括也可以有多个操作语句,此时用花括号“{}将几个语句括起来成为一个复合语句起来成为一个复合语句什么是复合语句什么是复合语句它是使用花括号“}”将多条语句括起来组合而成的一种语句它是使用花括号“{}将多条语句括起来组合而成的一种语句格式格式格式为格式为局部定义变量〕{〔局部定义变量〕;语句1语句1;语句2语句2;……语句n语句n;}复合语句从形式上看是多个语句的组合,复合语句从形式上看是多个语句的组合,但在语法意义上它是一个整体,相当于一条语句,上它是一个整体,相当于一条语句,所以凡是可以用简单语句的地方都可以用复合语句来实现句的地方都可以用复合语句来实现在程序设计中复合语句被看成是一条语句,而不是多条语句被看成是一条语句,而不是多条语句例如例如{a=10;cout“a=couta=”grade;switchgrade{case‘A’cout“85~100\n”;break;;;case‘B’cout“70~84\n”;break;;;case‘C’cout“60~69\n”;break;;;case‘D’cout“0~59\n”;break;;;default}cout“等级输入有误!”;等级输入有误!等级输入有误switch语句的注意事项switch语句的注意事项语句的注意事项后面括弧内的“
(1)switch后面括弧内的“表达式”,一般最好是整型字)后面括弧内的表达式”一般最好是整型符型和枚举型符型和枚举型
(2)当表达式的值与某一个)当表达式的值与某一个case后面的常量表达式的值相等后面的常量表达式的值相等就执行此case后面的语句,若所有的case中的常量后面的语句,时,就执行此后面的语句中的常量表达式的值都没有与表达式的值匹配的,就执行default表达式的值都没有与表达式的值匹配的,就执行后面的语句后面的语句的常量表达式的值必须互不相同,
(3)每一个)每一个case的常量表达式的值必须互不相同,否则就会出的常量表达式的值必须互不相同现互相矛盾的现象现互相矛盾的现象
(4)各个case和default的出现次序不影响执行结果各个case和default的出现次序不影响执行结果case的出现次序不影响执行结果case后面的语句后
(5)执行完一个case后面的语句后,流程控制转移到下一个执行完一个case后面的语句后,case继续执行继续执行case常量表达式只是起语句标号作用,常量表达式”case继续执行“case常量表达式”只是起语句标号作用,并不是在该处进行条件判断在执行switch语句时,根据switchswitch语句时并不是在该处进行条件判断在执行switch语句时,根据switch后面表达式的值找到匹配的入口标号,就从此标号开始执行下,后面表达式的值找到匹配的入口标号,就从此标号开始执行下,不再进行判断因此,应该在执行一个case分支后,case分支后不再进行判断因此,应该在执行一个case分支后,使流程跳出switch结构即终止switch语句的执行可以用一个break结构,switch语句的执行break语句switch结构,即终止switch语句的执行可以用一个break语句来达到此目的(见以下例子)(见以下例子来达到此目的(见以下例子)#includeint__in{intx=7;switchx{case7:coutx=7endl;case2:coutx=2endl;case3:coutx=3endl;case5:coutx=5endl;}return0;}运行结果运行结果x=7x=2x=3x=5输入一个年份和月份,打印这一年的该月有几天例3-5输入一个年份和月份,打印这一年的该月有几天在程序中,需要判断某一年是否闰年,因为闰年的2在程序中,需要判断某一年是否闰年,因为闰年的2月份为29天,而非闰年的2月份为28天29天而非闰年的2月份为28天28闰年的判定条件是能被4整除,但不能被100100整除的年闰年的判定条件是
①能被4整除,但不能被100整除的年份都是闰年,1996年2004年是闰年年是闰年;能被100整除,100整除份都是闰年,如1996年,2004年是闰年;
②能被100整除,又能400整除的年份也是闰年整除的年份也是闰年2000年是闰年年是闰年被400整除的年份也是闰年如2000年是闰年可以用一个逻辑表达式来表示可以用一个逻辑表达式来表示year%==0year0year%year%400====0year%4==0year%100!=0||year%400==0year为某一整数值时如果上述表达式值为true为某一整数值时,true(),则当year为某一整数值时,如果上述表达式值为true
(1),则year为闰年否则year为非闰年为闰年;year为非闰年year为闰年;否则year为非闰年#includeusingnamespa__std;int__in{intyearmonthdayleap_year;cout请输入一个年份和月份;请输入一个年份和月份cinyearmonth;ifyear%4==0year%100!=0||year%400==0leap_year=1;elseleap_year=0;switchmonth{case1:case3:case5:case7:case8:case10:case12:day=31;break;case4:case6:case9:case11:day=30;break;case2:ifleap_year==1day=29;elseday=28;}coutyear年month月有day天.endl;月有年月有天return0;}例3-6将输入的百分制转换为等级制并打印出来转换规则为将输入的百分制转换为等级制并打印出来转换规则为85~100等级A等级70~84等级B等级60~69等级C等级60分以下等级分以下等级D设计思路设计思路85~10070~8460~6960分以下60分以下等级A等级A等级B等级B等级C等级C等级D等级DX/5X/5X/5X/520,19,18,20,19,18,1716,15,16,15,1413,13,120~11#includeusingnamespa__std;int__in{intx;chargrade;cinx;switchx/5{case20:case19:case18:case17:grade=A;break;case16:case15:case14:grade=B;break;case13:case12:grade=C;break;default:grade=D;}coutGrade=gradeendl;return0;}
3.2循环语句表达式真语句假图eWhile语句的注意事项While语句的注意事项语句的注意事项
(1)循环体如果包含一个以上的语句,应该用花括弧)循环体如果包含一个以上的语句,括起来,以复合语句形式出现如果不加花括弧,括起来,以复合语句形式出现如果不加花括弧,则while语句的范围只到while后面第一个分号处后面第一个分号处
(2)在循环体中应有使循环趋向于结束的语句如果)在循环体中应有使循环趋向于结束的语句无此语句,的值始终不改变循环永不结束的值始终不改变,无此语句,则i的值始终不改变,循环永不结束+100的值的值例3-7求1+2+3+…+99+100的值#includeusingnamespa__std;int__in{intisum;sum=0;/*累加器的初值一般为*/累加器的初值一般为0i=1;whilei=100{sum+=i;i=i+1;/*计数器增量为的累加器*/计数器增量为1的累加器}coutThesumissumendl;return0;}思考思考计算a1+a2+……+a50的值,其中ai为整数1+a的值,其中a为整数1例3-8选票统计
2.Li
3.Wang选票的格式为选票的格式为
1.Zhang编写一个程序,根据输入的投票情况,统计各侯选人得票结果编写一个程序,根据输入的投票情况,统计各侯选人得票结果每张有效选票只许勾选1输入时输入候选人代号,弃权票输入0张有效选票只许勾选1人,输入时输入候选人代号,弃权票输入0,无效票输入4(勾选人数超过1),以-1作为输入终止标志无效票输入4勾选人数超过1),以作为输入终止标志分析程序中需要5个计数器来分别统计三位侯选人、分析程序中需要5个计数器来分别统计三位侯选人、弃权票和无效票的情况,可以用switch语句来区分这5种情况switch语句来区分这和无效票的情况,可以用switch语句来区分这5种情况zhang=zhang+1;;li=li+1;;wang=wang+1;;nosele=nosele+1;;other=other+1;;本例是一个非计数循环,循环次数事先是未知的,本例是一个非计数循环,循环次数事先是未知的,但是可以用输入为-判断循环是否结束输入为-1判断循环是否结束#includeusingnamespa__std;int__in{intselezhangliwangnoseleother;zhang=li=wang=nosele=other=0;cinsele;default:coutInputwhilesele!=-1Error!endl;{}switchselecinsele;{}case1:zhang++;break;case2:li++;break;coutZhang=zhangendl;;case3:wang++;break;cout“Li=do--while语句do--while语句--while在C++中,直到型循环的语句是C++中do…while,它的一般形式为do它的一般形式为do语句while(表达式)表达式)真表达式循环体语句其中语句通常为复合语句,其中语句通常为复合语句,称为循环体do…while语句的执行流程环体do如图(f)所示,其基本特点是先如图(所示,其基本特点是执行后判断,执行后判断,因此循环体至少被执行一次行一次假图f+100的值的值例3-9求1+2+3+…+99+100的值#includeusingnamespa__std;int__in{intisum;sum=0;i=1;do{sum+=i;i=i+1;}whilei=100;coutThesumissumendl;return0;}从键盘输入一个非负整数,将它反向显示出来例3-10从键盘输入一个非负整数,将它反向显示出来例如,输入1234输出43211234,4321例如,输入1234,输出4321#includeusingnamespa__std;int__in{intnumberdigit;do{cout请输入一个非负整数;请输入一个非负整数cinnumber;}whilenumber0;coutnumber的逆序数为;do{digit=number%10;number=number/10;coutdigit;}whilenumber0;coutendl;return0;}do-例3-11while和do-while循环的比较111void__in{intsum=0i;cini;whilei=10{sum=sum+i;i++;}cout“sum=”i;输入输出输入11,输出0输入大于10的任何数,10的任何数输入大于10的任何数,则循环体一次都不做环体一次都不做输入11,输出输入11,输出11无论输入大于10的任何数,10的任何数无论输入大于10的任何数,都把此数输出,此数输出,所以循环体至少做一次do{sum=sum+i;i++;}whilei=10;cout“sum=”sum;}for语句for语句
1.for语句的一般形式为
1.for语句的一般形式为语句的一般形式为表达式1表达式2表达式3语句;for(表达式1;表达式2;表达式3)语句;求解表达式
12.执行过程
2.执行过程for循环的执行流程如图所示循环的执行流程如图所示for循环的执行流程如图所示根据for语句的执行流程,可将根据for语句的执行流程,for语句的执行流程for语句改写如下语句改写如下for语句改写如下表达式1表达式1;while(表达式2while(表达式2){语句表达式3表达式3;}表达式2真语句假求解表达式3for语句的下一语句
3、关于for语句的说明关于for语句的说明forfor语句的一般形式中的表达式1可以省略语句的一般形式中的“可以省略,
(1)for语句的一般形式中的“表达式1”可以省略,其后的分号不能省略注意省略表达式1时,其后的分号不能省略for(;i=100;(;i=100sum=sum+如for(;i=100;i++)sum=sum+i;执行时,跳过“求解表达式1这一步其他不变这一步,执行时,跳过“求解表达式1”这一步,其他不变,(其后的分号不能省略),即
(2)如果表达式2省略,(其后的分号不能省略),即如果表达式2省略,(其后的分号不能省略),不判断循环条件,循环无终止地进行下去不判断循环条件,循环无终止地进行下去也就是认为表达式2始终为真表达式2始终为真例如例如fori=1;;i++sum=sum+i;fori=1;;i++sum=sum+i;它相当于它相当于i=1;while1{sum=sum+i;i++;}也可以省略,
(3)表达式也可以省略,但此时程序设计者应另外)表达式3也可以省略设法保证循环能正常结束设法保证循环能正常结束如for(i=l;i=100;)(=;=;){sum=sum+i;+;i++;++;}4)可以省略表达式1和表达式和表达式3,只有表达式2,
(4)可以省略表达式1和表达式3,只有表达式2,即只给循环条件环条件如for(;=100;)(;i=while(i=100)(;)(=){sum=sum+i;相当于=+;{sum=sum+i;=+;i++;}i++;}++;}++;}for语句的一般形式中的三个表达式都是可以省略的语句的一般形式中的三个表达式都是可以省略的,
(5)for语句的一般形式中的三个表达式都是可以省略的,但分号“绝对不能省略但分号“;”绝对不能省略特别地,当表达式1和表达式3同时省略时,for语句完特别地,当表达式1和表达式3同时省略时,for语句完全等同于while语句之前给循环变量赋初值while语句全等同于while语句之前给循环变量赋初值例如例如i=1,sum=0;=,;for;i<=<=100;<=;{sum=sum+i;=+;i++;;}}相当于i=1sum=0;Whilei=100{sum=sum+i;i++;但分号不能省)
(6)3个表达式都可省略(但分号不能省),如;语句for;;语句相当于while(while
(1)语句即不设初值,不判断条件(认为表达式2为真值),即不设初值,不判断条件(认为表达式2为真值),循环变量不增值无终止地执行循环体循环变量不增值无终止地执行循环体
(7)表达式1可以是设置循环变量初值的赋值表达式,表达式1可以是设置循环变量初值的赋值表达式,也可以是与循环变量无关的其他表达式也可以是与循环变量无关的其他表达式如for(sum=0;i=100;for(sum=0;i=100;i++)sum=sum+i;表达式1和表达式3可以是一个简单的表达式,表达式1和表达式3可以是一个简单的表达式,也可以是逗号表达式,即包含一个以上的简单表达式,是逗号表达式,即包含一个以上的简单表达式,中间用逗号间隔用逗号间隔如forsum=0i=1sum=0i=1;i=100;i+forsum=0i=1;i=100;i++sum=sum+i;fori=0j=100;i=j;i+--或fori=0j=100;i=j;i++j--k=i+j;=100)
(8)表达式2一般是关系表达式(如i<=100)或逻辑表达式表达式2一般是关系表达式(bx<),但也可以是数值表达式或字符表达式但也可以是数值表达式或字符表达式,(如a<bx<y),但也可以是数值表达式或字符表达式,只要其值为非零,就执行循环体其值为非零,就执行循环体
(9)表达式
1、表达式2和表达式3可以是任何表达式表达式1表达式2和表达式3可以是任何表达式例如例如forsum=0,i=1;i=100;i++sum=sum+i;=,=;;=+;forsum=0,i=1;i=100;sum=sum+forsum=0,i=1;i=100;sum=sum+i,i++;forsum=0,i=100;i;sum=sum+i,i--;=,=;;=+,
(10)可以在表达式1中定义循环变量,该变量值只在此循环中有10)可以在表达式1中定义循环变量,效例如例如intsum=0;=forinti=1,;==,;i=100;i++sum=sum+i;;+;+100的值的值例3-11求1+2+3+…+99+100的值#includeusingnamespa__std;int__in{intisum;sum=0;fori=1;i=100;i++sum+=i;coutThesumissumendl;return0;}这是for语句最易理解也是最常用的形式这是for语句最易理解也是最常用的形式for变量=初值;循环条件;变量增值)for(变量=初值;循环条件;变量增值)语句;循环的嵌套一个循环的循环体中有另一个循环叫循环嵌套一个循环的循环体中有另一个循环叫循环嵌套循环嵌套也称为多重循环称为多重循环编写程序,例3-12编写程序,打印如下的乘法口诀表1*1=12*1=23*1=3……9*1=9分析分析如果乘法的前一个因子称为i如果乘法的前一个因子称为i,后一个因子称为j后一个因子称为j,可用双重循环来构造本例可用双重循环来构造本例i1~99j1~II9*2=189*3=27……9*9=812*2=3*2=463*3=9#includeUsingnamespa__std;Int__in{intij;fori=1;i=9;i++{forj=1;j=i;j++couti“*”j“=“i*j““;coutendl;}return0;}元人民币兑换成1例3-13用1元人民币兑换成1分、2分、5分,共有多少种不同的兑换方法换方法问用1角钱人民币(10分)兑换成1分、2分、5分,共有多少种不角钱人民币(10分兑换成1同的兑换方法?同的兑换方法?为了不遗漏掉一种有效兑换方法,我们列举如下为了不遗漏掉一种有效兑换方法,我们列举如下5分枚数分枚数five分枚数0外循环5外循环分枚数从0变化到变化到2变化到(10/5))内循环2分枚数内循环分枚数从0变化到变化到(10-five*5))/2125分枚数分枚数five0~20(100/5))2分枚数two分枚数01234501201分枚数分枚数108642053102分枚数two0~(100-5*five/2分枚数(#include这里没有考usingnamespa__std;虑1分的个数,因为不int__in够的都用1{分的来凑分的来凑intfivetwocount;count=0;forfive=0;five=100/5;five++{fortwo=0;two=100-five*5/2;two++count++;}cout共有count种兑换方法endl;种兑换方法共有return0;}例3-14600!能被9的最高多少次方整除?600!能被9的最高多少次方整除?600的阶乘是一个很大的数,将其计算出来,600的阶乘是一个很大的数,将其计算出来,然后的阶乘是一个很大的数不断除以9看它能被9的多少次方整除,是难以实现的不断除以9,看它能被9的多少次方整除,是难以实现的程序设计思想程序设计思想一个可以采用的方法是对1600这600个数进行判断,一个可以采用的方法是对1至600这600个数进行判断,个数进行判断看每一个数中包含多少个因子3看每一个数中包含多少个因子3,然后将它们加起来除即得9的最高次方以2,即得9的最高次方#includeusingnamespa__std;int__in{intinumberkpower;power=0;fori=1;i=600;i++{number=i;k=number%3;whilek==0{power++;number=number/3;k=number%3;}}coutThe__xpowerof9ispower/2endl;return0;}“S“r“=“usingnamespa__std;int__in{inti;fori=100;i=200;i++{ifi%3!=0continue;couti;}coutendl;return0;}的作用是结束本次循环,即跳过continuecontinue下面尚未执行continue的作用是结束本次循环,即跳过continue下面尚未执行的语句,直接跳到下一次是否执行循环的判断的语句,直接跳到下一次是否执行循环的判断对于while和dowhile来讲对于while和do……while来讲,意味着立即执行条件检测部分whilewhile来讲,意味着立即执行条件检测部分对于for语句,意味着立即执行表达式3for语句对于for语句,意味着立即执行表达式3比如比如intsum;forinti=0;i4;i++{ifi==2continue;sum+=i;}最后sum=4;因为当i=2时候continuesum=4;因为当i=2时候continue了也就是直接跳过了sum+=i;最后sum=4;因为当i=2时候continue了也就是直接跳过了sum+=i;直接进入i=3的情况了i=3的情况了直接进入i=3的情况了break和continue的区别如下break和continue的区别如下的区别如下break可用于switch语句表示跳出整个switch可用于switch语句,switch块
1.break可用于switch语句,表示跳出整个switch块,而continue则不能用于switch语句则不能用于switchcontinue则不能用于switch语句它们都可用于循环语句的循环体,
2.它们都可用于循环语句的循环体,区别是它们对循环次数的影响不同break用于立即退出当前循环用于立即退出当前循环,continue仅跳过当影响不同break用于立即退出当前循环,而continue仅跳过当次循环(本次循环体内不执行continue语句后的其它语句,continue语句后的其它语句次循环(本次循环体内不执行continue语句后的其它语句,但下次循环还会执行)举例说明)举例说明次循环还会执行)举例说明inti;ints=0;forinti=1;i=10;i++{ifi==6break;s+=i;}上面的循环会因为break语句而在i=6时提前终止,这样sbreak语句而在i=6时提前终止上面的循环会因为break语句而在i=6时提前终止,这样s的最终值就是1+2+3+4+5终值就是1+2+3+4+5如将break换成continue则结果为break换成continue,如将break换成continue,则结果为1+2+3+4+5+7+8+9+10=49没有6(没有6)goto语句goto语句goto语句为无条件转向语句,goto语句为无条件转向语句,它用于将控制从它所在的地方语句为无条件转向语句转移到语句标号所标识的语句处它的一般形式为转移到语句标号所标识的语句处它的一般形式为语句标号;goto语句标号;语句标号用标识符表示,它的命名规则与变量名相同,即由语句标号用标识符表示,它的命名规则与变量名相同,字母、数字和下划线组成,其第一个字符必须为字母或下划线字母、数字和下划线组成,其第一个字符必须为字母或下划线不能用整数来做标号不能用整数来做标号例如label_1;是合法的,123;是不合法的例如gotolabel_1;是合法的,而goto123;是不合法的现代程序设计方法主张限制使用goto语句,goto语句限制使用goto语句,因为滥goto语句将使程序流程无用goto语句将使程序流程无规律、可读性差规律、可读性差但也不是绝对禁止使用goto语句goto语句绝对禁止使用goto语句例如,当要从多层循环的最内层循环直接跳到外层循环外如果用break语句,break语句时,如果用break语句,将要用多次,而且可读性并不好,用多次,而且可读性并不好,这时用gotogoto语句就可以发挥这时用goto语句就可以发挥作用例如作用例如{……{……{……gotoerror;……}}}error……goto语句可以与if语句一起构成循环结构goto语句可以与if语句一起构成循环结构语句可以与if语句一起构成循环结构的值例3-17求1+2+3+…+99+100的值的值#includeusingnamespa__std;int__in{intisum;sum=0;i=1;loop1:sum+=i;i++;ifi=100gotoloop1;coutThesumissumendl;return0;}但是不推荐使用此方法!用此方法!循环举例输入10个整数,找出最大数10个整数例3-18输入10个整数,找出最大数#includeint__in{intkx__x;cinx;__x=x;k=2;whilek=10{cinx;ifx__x__x=x;k++;}cout“__x=__x=“__xendl;cout__x=__xendl;return0;}利用公式π/4=11/3+1/5-1/7+…求π/4=1例3-19利用公式π/4=1-1/3+1/5-1/7+求π的近似最后一项的绝对值小于10为止值,最后一项的绝对值小于10-6为止#includeint__in{longinti;doublepit;ints;初值的设定pi=0;t=1;i=1;s=1;whilet=1e-6{pi=pi+s*t;如果这里是t=1/i;如果这里是t=1/i;那么结果将是PI=4那么结果将是PI=4i=i+2;而不是PI=
3.14159而不是PI=
3.14159s=-s;t=
1.0/i;}pi=pi*4;cout“PI=piendl;return0;}输出Fibnacci序列的前20项的值Fibnacci序列的前20项的值例3-20输出Fibnacci序列的前20项的值#includeint__in{intabci;a=1;b=1;coutint__in{floatscore__xminsum__g;cinscore;__x=score;min=score;sum=score;forinti=2;i=10;i++{cinscore;ifscore__x__x=score;ifscoreminmin=score;sum=sum+score;}__g=sum-__x-min/10-2;cout__x=__xMin=min;cout__erage=#includec__th.h这种做法是加int__in一个标识,一个标识,表明m是否是质{longmk;inti;数cinm;k=sqrtm;ints=0;fori=2;i=k;i++fori=2;i=k;i++ifm%i==0break;ifm%i==0{s=1;break;}ifi=k//能除尽,所以不是质数能除尽,ifs==1coutm“isnotprime.”endl;elsecoutm“isprime.“endl;return0;}例3-23求100~200之间的所有质数200之间的所有质数之间的所有质数#include#includec__th.hint__in{intikms;form=101;m=200;m=m+2{k=sqrtm;s=0;fori=2;i=k;i++ifm%i==0{s=1;break;}ifs==0coutm““;}return0;}对任意给定的正整数n中末尾0的个数例3-24对任意给定的正整数n,求n!中末尾0的个数对于1对于1,2,3,……,n中的每一个数求5的因子个数,,中的每一个数求5的因子个数,然后将所有5的因子个数加起来就是n中末尾0的个数然后将所有5的因子个数加起来就是n!中末尾0的个数#includeint__in{intijk=0n;cinn;fori=5;i=n;i=i+5{j=i;whilej%5==0计算此数中{k++;有几个5有几个5j=j/5;}}cout“n!中末尾的个数为kendl;中末尾0的个数为中末尾的个数为return0;}求所有的水仙花数例3-25求所有的水仙花数所谓水仙花数是指一个三位数的各位数字的立方和等于该数本身例如=153数的各位数字的立方和等于该数本身例如13+53+33=153方法
一、方法
一、#includeint__in{intixyz;fori=100;i1000;i++{分别求百位、x=i/100;十位和个位y=i-x*100/10;z=i%10;ifx*x*x+y*y*y+z*z*z==icoutint__in{intijk;fori=1;i=9;i++forj=0;i=9;j++fork=0;k=9;k++ifi*i*i+j*j*j+k*k*k==i*100+j*10+kcouti*100+j*10+k;coutendl;return0;}小结主要掌握whilewhile、while、for语句的语法1.主要掌握while、dowhile、for语句的语法结构、执行过程结构、执行过程计数循环和非计数循环2.计数循环和非计数循环累加、累乘运算3.累加、累乘运算课堂练习从键盘输入n计算n1.从键盘输入n,计算n!计算1+1/4+1/7+1/10+的前200项的和1+1/4+1/7+1/10+…的前200项的和2.计算1+1/4+1/7+1/10+的前200项的和1。