CProgrammingLanguage2方法一:if(x1)y=x;elseif(x10)y=2*x-1;elsey=3*x-11;printf(“y=%f\n”,y);方法二:if(x1)y=x;else{if(x10)y=2*x-1;elsey=3*x-11;}printf(“y=%f\n”,y);)10(113)101(12)1(xxxxxxyCProgrammingLanguage3实验【3-2】给出一个百分制成绩,要求输出成绩等级A,B,C,D,E。90分以上为A,60分以下为E,要求:①分别用if语句和switch语句实现。②输入一个负分数以及超过100分以上,不应该得到成绩,你应该如何修正?CProgrammingLanguage4内容提要:4.1while语句4.2dowhile语句4.3for语句4.4与循环有关的控制语句4.5程序举例课后任务CProgrammingLanguage5本章要点:建立循环程序设计的基本概念和逻辑思维掌握C语言循环程序设计的方法CProgrammingLanguage6概述1.引入循环控制语句的作用当满足一定条件时,重复执行一段程序.2.设置循环需要考虑的问题循环初值;循环条件的设置;循环体应包括的语句;循环条件的修改。3.C语言中可用以下语句实现循环(1)用while语句(2)用do\while语句(3)用for语句CProgrammingLanguage71.while循环语句的形式while(表达式)循环语句先判断条件,后执行语句表达式语句零非零2.执行过程:注意:循环体若包含一个以上语句,应该用花括号括起来(使用复合语句。循环体内,应注意设置修改循环条件的语句。否则循环无法终止。4.1while循环语句CProgrammingLanguage8说明:⑴执行while循环语句时,如果表达式的值第一次计算就等于0,则循环体一次也不执行。⑵无限循环:while(1)循环体;⑶发生下列情况之一时,while循环结束执行:表达式的值为0循环体内遇到break语句循环体内遇到goto语句,且与该goto语句配合使用的标号所指定的语句在本循环体外循环体内遇到return语句,此时退出while循环后,执行的流程从包含该while语句的函数返回到调用函数CProgrammingLanguage9例2:求1001nni=1,sum=0i=100?sum=sum+ii=i+1零非零main(){inti=1,sum=0;while(i=100){sum=sum+i;i++;}printf(%d,sum);}CProgrammingLanguage101.do—while循环语句的形式do循环体while(条件表达式);先执行语句,后判断条件2.执行过程说明:(1)do—while循环语句首先执行循环体,然后计算表达式并检查循环条件,所以循环体至少执行一次。(2)退出do—while循环的条件与退出while循环的条件相同表达式语句零非零4.2do—while循环语句CProgrammingLanguage11表达式=0?语句零非零i=100?sum=sum+ii=i+1i=1例4:用do-while型循环求:1001nnmain(){inti=1,sum=0;do{sum=sum+i;i++;}while(i=100);printf(%d,sum);}CProgrammingLanguage12结论:当while后的表达式为真时,while语句和do-while语句的结果相同,否则不同。main(){inti,s=0;scanf(“%d”,&i);while(i=10){s=s+i;i++;}printf(“s=%d\n”,s);}main(){inti,s=0;scanf(“%d”,&i);do{s=s+i;i++;}while(i=10);printf(“s=%d\n”,s);}输入:1打印:55输入:11打印:0输入:1打印:55输入:11打印:11CProgrammingLanguage13一般形式:for([表达式1];[表达式2;表达式3])循环体语句执行流程:表达式2循环体假(0)真(非0)for表达式1表达式34.3for语句1.先求解表达式1;2.求解表达式2,若其值为真(非0),则执行循环体的内容,然后执行第3步。若为假(0),则结束循环,执行for语句下面一条语句。3.若表达式为真,执行指定的语句后,求解表达式3。4.返回第2步执行。CProgrammingLanguage14for语句一般应用形式:for(循环变量赋初值;循环条件;循环变量增值){循环体语句}说明:for语句中表达式1、表达式2、表达式3类型任意,都可省略,但分号;不可省无限循环:for(;;)for语句可以转换成while结构表达式1;while(表达式2){循环体语句;表达式3;}CProgrammingLanguage15例用for循环求#includestdio.hmain(){inti,sum=0;for(i=1;i=100;i++)sum+=i;printf(%d,sum);}CProgrammingLanguage16例:#includestdio.hmain(){inti=0;for(i=0;i10;i++)putchar(‘a’+i);}运行结果:abcdefghij例:#includestdio.hmain(){inti=0;for(;i10;i++)putchar(‘a’+i);}例:#includestdio.hmain(){inti=0;for(;i10;)putchar(‘a’+(i++));}例:#includestdio.hmain(){inti=0;for(;i10;putchar(‘a’+i),i++);}CProgrammingLanguage17/*c4_8.c*/main(){inti,j,k;for(i=0,j=100;i=j;i++,j--){k=i+j;printf(%d+%d=%d\n,i,j,k);}}/*c4_9.c*/#includestdio.hmain(){charc;for(;(c=getchar())!='\n';)printf(%c,c);}/*c4_7.c*/#includestdio.hmain(){inti,c;for(i=0;(c=getchar())!='\n';i+=3)printf(%c,i+c);}结论:for语句的功能强大!CProgrammingLanguage18三种循环可互相嵌套,层数不限外层循环可包含两个以上内循环,但不能相互交叉嵌套循环的执行流程for(;;){……do{……}while();……while(){……}…...}内循环外循环内循环嵌套循环的跳转禁止:从外层跳入内层跳入同层的另一循环向上跳转循环的嵌套-在循环体内又包含一个循环结构,称为循环嵌套。CProgrammingLanguage19for(;;){···while(){···}}for循环体嵌套while循环体for(;;){···for(;;){···}}for循环体嵌套for循环CProgrammingLanguage20do{do{···}while();}while();do_while循环体嵌套do_while循环while(){do{···}while();}while循环体嵌套do_while循环while(){for(;;){···}}while循环体嵌套for循环do{for(;;){···}}while();do_while循环体嵌套for循环CProgrammingLanguage21打印九九乘法表CProgrammingLanguage2212345678912436991827364554637281……………..例循环嵌套,输出九九表ij/*c99乘法.c*/#includestdio.hvoidmain(){printf(\t九九乘法表\n);printf(\t-----------\n);for(inti=1;i=9;i++){for(intj=1;j=9;j++){printf(%d×%d=%d\t,i,j,i*j);}printf(\n);}}思考:打印上三角或下三角程序如何改动?CProgrammingLanguage23i10printf假(0)真(非0)i=1j++j=1j=i真(非0)假(0)i++for(i=1;i10;i++)for(j=1;j=i;j++)printf((j==i)?%4d\n:%4d,i*j);外循环内循环CProgrammingLanguage24几种循环的比较三种循环均可处理同一问题;for和while语句为先判断后执行,do-while语句则先执行后判断;do-while和while语句多用于循环次数不定的情况,循环次数确定的用for语句更方便;do-while语句更适合第一次肯定执行的情况;do-while和while语句只有一个表达式,用于控制循环是否进行。for语句有三个表达式,不仅可以控制循环是否进行,而且能为循环变量赋初值及不断修改其值。故for语句功能更强,更灵活。CProgrammingLanguage25用上述三种循环语句求while语句:n=1;s=0;while(n=100){s=s+n;n=n+1;}n=1;s=0;do{s=s+n;n=n+1;}while(n=100);do-while语句:for(n=1,s=0;n=100;n++)s=s+n;for语句:CProgrammingLanguage264.4.1break语句一般形式:break;功能:在循环语句和switch语句中,终止并跳出循环体或开关体说明:break只能终止并跳出最近一层的结构break不能用于循环语句和switch语句之外的任何其它语句之中4.4break语句和continue语句CProgrammingLanguage27do……break;…...表达式假(0)真(非0)while表达式……break;……假(0)真(非0)whileCProgrammingLanguage28switch表达式语句组1break;语句组2break;语句组nbreak;语句组break;…...const1const2constndefaultcase表达式2……break;…...假(0)真(非0)for表达式1表达式3CProgrammingLanguage29例break举例:输出圆面积,面积大于100时停止#includestdio.h#definePI3.14159main(){intr;floatarea;for(r=1;r=10;r++){area=PI*r*r;if(area100)break;printf(r=%d,area=%.2f\n,r,area);}}CProgrammingLanguage30例break举例:小写字母转换成大写字母,直至输入非小写字母字符。/*ch6-5-2.c*/#includestdio.hmain(){charc;while(1){c=getchar();if(c='a'&&c='z')putchar(c-'a'+'A');elsebreak;}}CProgrammingLanguage314.4.2continue语句一般形式:continue;功能:结束本次循环,跳过循环体中尚未执行的语句,进行下一次是否执行循环体的判断说明:仅用于循环语句中continue语句仅结束本次循环,但break语句则是结束整个循环过程。CProgrammingLanguage32真(非0)do……con