资源描述:
《C语言 第五章-循环结构程序设计.ppt》由会员上传分享,免费在线阅读,更多相关内容在行业资料-天天文库。
1、第五章循环结构程序设计第5章循环语句程序设计5.2、while语句(p115)5.3、do-while语句(p115)5.4、for语句(p118)5.5、break和contiune语句5.6、典型举例说明5.2while语句1.while的语句格式:while(条件)语句2.当条件为真(非0)时重复执行内嵌语句(循环体);当条件为假(0)时,跳过内嵌语句,执行整个while的后续语句。循环准备条件P循环语句假真程序用while语句实现求1+2+…+n。main(){inti,sum,n;scanf(“%d”,&n);/*键盘输入n*/i=1;
2、sum=0;/*初始化i=1,sum=0*/while(i<=n){sum=sum+i;i++;}printf(“%d”,sum);}5.3do-while语句1.do–while的语句格式:do语句while(条件);2.功能:while循环准备条件P循环语句假真例比较下面两个程序的区别,分别写出它们的执行结果。main()/*程序1*/{inti,sum=0;i=1;while(i<=100){sum=sum+i;i++;}printf("%d",sum);}main()/*程序2*/{inti,sum=0;i=1;do{sum=sum+i;
3、i++;}while(i<=100);printf("%d",sum);}结果相同同样是下列程序,但如果while后面的表达式结果一开始就是假时,两种循环结果会不一样。main()/*程序1*/{inti,sum=0;i=101;while(i<=100){sum=sum+i;i++;}printf("%d",sum);}main()/*程序2*/{inti,sum=0;i=101;do{sum=sum+i;i++;}while(i<=100);printf("%d",sum);}输出结果为:sum=0输出结果为:sum=101结果不相同(表达式
4、的值第一次为真时,两值相同,否则不同)5.4for语句1.for的语句格式:for(表达式1;表达式2;表达式3)语句2.for语句的执行过程。(1)先求解表达式1(表达式1通常是为循环变量赋初值)。(2)再求解表达式2(循环的控制条件)。若为非0,则执行第(3)步;若为0,则结束循环,转到第(5)步。(3)执行内嵌语句(循环体)后,求解表达式3(通常对表达式2中的循环控制变量进行修正,以便在若干次循环之后能够使表达式2的值为0,结束循环)。(4)转回上面第(2)步,继续执行。(5)执行for语句的下面一个语句(后续语句)。表达式2表达式1语句表
5、达式3后续语句假真for语句的执行过程流程图表示例,下面程序段计算1+2+…+100并输出,它的执行过程如图所示。for(sum=0,i=1;i<=100;i++)sum=sum+i;printf(“%d”,sum);表达式1表达式2表达式3循环体语句后续语句i<=100sum=0,i=1sum=sum+ii++printf(“%d”,sum)假真程序的结构和流程图另外,也可以参考书上的用while语句等价表示。3.说明:(1)for语句的3个表达式都可为逗号表达式。尤其是表达式1常用逗号表达式给多个变量赋初值。例如:for(sum=0,i=1;
6、i<=100;i++)sum=sum+i;上面for语句中表达式1:sum=0,i=1为逗号表达式,负责为sum和i赋初值。注意:上述程序也可以写成:sum=0;for(i=1;i<=100;i++)sum=sum+i;(2)表达式2一般是关系表达式(如i<=100)或逻辑表达式(如:a>0&&b>0),但也可以是数值表达式或字符表达式,只要其值为非0,就执行循环体。例如:for(num=1,i=1;num%2;i++)scanf(“%d”,&num);其中:表达式2为算术表达式num%2。当num为奇数时循环执行scanf(“%d”,&num)
7、。(3)for语句一般形式中的“语句”部分就是循环体,它可以是一个单语句,也可以是一个复合语句。如果不加{},系统只将for后面的一个单语句作为循环体。例如:for(i=1;i<=10;i++){a=a+1;b=b+1;}例如:a=0;b=0;for(i=1;i<=10;i++){a=a+1;b=b+1;}执行后a的值为10,b的值为10。而程序段a=0;b=0;for(i=1;i<=10;i++)a=a+1;b=b+1;执行后a的值为10,b的值为1。(4)for语句一般形式中的表达式1,2,3都可以省略,但其后的分号不能省略。但注意若表达式2
8、省略,代表条件永远为真(死循环)。例如:sum=0;i=1;for(;i<=100;i++)sum=sum+i;例如:for(sum=0