1第5章循环结构设计(三)break语句---无条件转移语句一般形式:break;功能:用在switch语句中使流程跳出switch结构,继续执行switch语句后面的语句。用在循环体内,迫使所在循环立即终止(跳出当前循环体),继续执行循环体后面的第一条语句。说明:break语句不能用于循环语句和switch语句之外的任何其他语句中。3【例5.9】用break语句提前退出循环计算r=1到r=10时的圆面积,直到面积area大于100为止。例:floatpi=3.14159;for(r=1;r=10;r++){area=pi*r*r;if(area100)break;printf(″r=%f,area=%f\n″,r,area);}4【例5.10】把数316分为两个数之和,其中一个为13的倍数,一个为11的倍数。main(){inti=0;for(;;i++)if(!((316-i*13)%11))break;printf(13*%d+11*%d=316\n,i,(316-13*i)/11);}5课堂练习输出1000以内的Fibonacci数列,用break语句实现continue语句---无条件转移语句一般形式:continue;功能:结束本次循环(跳过循环体中尚未执行的语句),接着进行是否执行下一次循环的判定。continue和break的区别:continue只结束本次循环,而非终止整个循环。break则是结束所在循环,不再进行条件判断。7continue语句和break语句的区别continue语句只结束本次循环,而不是终止整个循环的执行。while(表达式1){语句1;if(表达式2)continue;语句2;}while循环的下一语句;语句1语句28continue语句和break语句的区别(续)break语句则是结束整个循环过程,不再判断执行循环的条件是否成立。while(表达式1){语句1;if(表达式2)break;语句2;}while循环的下一语句;语句1语句2【例5.11】输出100~200之间所有不能被3整除的数。main(){intn,count=0;for(n=100;n=200;n++){if(n%3==0)continue;printf(%4d,n);count++;if(count%10==0)printf(\n);}}不用continue语句,怎么实现?说明:当n能被3整除时,执行continue语句,结束本次循环(即跳过printf函数语句),只有n不能被3整除时才执行printf函数。改为if(n%3!=0)printf(“%d”,n);10课堂练习求随机输入的10个数当中的正数之和,用continue语句实现。11【例5.12】判断m是否为素数。算法思想:让m被i(2-sqrt(m)之间的整数)去除,如果m能被i整除,则提前结束循环,此时i必然小于或等于k=sqrt(m);如果m不能被2~k之间的任一整数整除,则在完成最后一次循环后,i还要加1,因此i=k+1,然后才终止循环。在循环之后判别i的值是否大于或等于k+1,若是,则表明未曾被2~k之间任一整数整除过,因此输出“是素数”。13运行结果:17↙17isaprimenumber#includestdio.h#includemath.hvoidmain(){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);}例5.12代码实现。【例5.13】求100~200间的全部素数。#includestdio.h#includemath.hvoidmain(){intm,k,i,n=0;for(m=101;m=200;m=m+2){k=sqrt(m);for(i=2;i=k;i++)if(m%i==0)break;if(i=k+1){printf(“%d″,m);n=n+1;}if(n%10==0)printf(″\n″);}printf(\n);}运行结果:10110310710911312713113713914915115716316717317918119119319719915【例5.14】译密码。为使电文保密,往往按一定规律将其转换成密码,收报人再按约定的规律将其译回原文。基本思路:编码的时候,将字母A变成字母E,a变成e,即变成其后的第4个字母,W变成A,X变成B,Y变成C,Z变成D。解码的时候,再反过来。例5.14代码实现includestdio.hvoidmain(){charc;while((c=getchar())!=‘\n’){if((c=‘a’&&c=‘z’)||(c=‘A’&&c=‘Z’)){c=c+4;if(c’Z’&&c=‘Z’+4||c’z’)c=c-26;}printf(“%c\n”,c);}}运行结果:China!↙Glmre!A---65Z---90a---97z---122d---100为什么不用c’z’&&c=‘z’+417goto语句一般形式:goto语句标号;说明:–goto为无条件转向语句。–语句标号必须是合法的标识符。不能用整数作标号。用途:–与if语句一起构成循环结构;–从多层循环体的内层循环跳到外层循环。结构化程序设计方法主张有限制地使用goto语句,因为滥用goto语句将使程序流程无规律、可读性差只有不得已(如能大大提高效率)时才使用goto!18【例5.15】用if和goto语句构成循环,求。main(){inti=1,sum=0;loop:if(i=100){sum=sum+i;i++;gotoloop;}printf(Sum=%d,sum);}1001nn19课堂练习用循环语句实现密文的解码20作业上交作业内容:–第5章书后习题∪电子课件程序题上交作业形式:–纸质手写上交作业时间:–本周六(11月14日)上机检查后上交