资源描述:
《C语言程序设计实例教程(第2版)丁爱萍第5章 循环结构程序设计.ppt》由会员上传分享,免费在线阅读,更多相关内容在教育资源-天天文库。
1、第5章循环结构程序设计5.1循环结构程序设计的概念5.2while语句5.3do…while语句5.4for语句5.5循环结构嵌套5.6break语句和continue语句5.7goto语句习题55.1循环结构程序设计的概念循环是一种重复,一种有规律的重复。一般来说,这种重复指的是对同一程序段重复执行若干次,被重复执行的部分称为循环体。实现循环的程序结构称为循环结构,它是一种常见的重要基本结构,是计算机科学中用以描述客观世界广泛存在的循环现象的重要手段,用它可以避免重复不必要的操作,简化程序,节约内存,提高效率。程序设计中的循环(简称循环)是指在程序
2、设计中,从某处开始有规律地反复执行某一操作块(或程序块)。如果循环永远不会终止,则这样的循环就称为死循环。一个良好的结构化程序应该有一个或者多个出口,所以一般不允许出现死循环。循环的执行需要满足一定的条件,称为循环条件。如果达到一定条件的时候循环被终止了,就称这样的条件为终止条件。循环结构的特点是:循环体执行与否及其执行次数必须视其循环类型与条件而定,且必须确保循环体的重复执行能在适当的时候得以终止(即非死循环)。C语言提供了while、do…while和for3种语句来实现循环,下面分别介绍这3种语句。5.2while语句while循环结构的循环特
3、点是:先判断循环条件,根据条件决定是否执行循环体,执行循环体的最少次数为0。其流程图如图5.1所示。图5.1while循环结构流程图5.2.1while语句的一般格式while语句是一个循环控制语句,用来控制程序段的重复执行。其一般格式为while(表达式)循环体;格式中的循环体,可以是单个语句、空语句,也可以是复合语句。5.2.2while语句的执行过程当表达式为非0时,执行while语句中的循环体,然后继续进行表达式的判断,如此循环。当表达式为0时,则退出循环。说明:如果循环体包含一个以上的语句,就构成块语句,应该用花括号“{}”括起来。【例5-
4、1】求1+3+5+…+99的值。分析:这种求和可以利用计算机的快速计算能力来实现,算法是比较典型的,可以用一个变量存放“和”中的“项”,它的初始值为1,每一次循环增2,其值的变化为1,3,5,…,99。用另外一个变量存放“和”的中间值,其值变化为1,1+3,1+3+5,…,1+3+5+…+99。#include"stdio.h"main(){inti=1,sum=0;while(i<100)/*当累加到99时,停止累加*/{sum=sum+i;/*求和*/i=i+2;/*i的值每次增2*/}printf("sum=%d",sum);}【例5-2】阅读
5、下面几个循环语句,说明循环的含义。(1)while((c=getchar())!='Y'
6、
7、c!='y'
8、
9、c!='N'
10、
11、c!='n');(2)while(1){…};(3)while(i){…};(4)inti=1,sum=0;while(i<=100)sum+=i++;分析:程序段(1),接收键盘输入的字符,直到输入的是Y,y,N,n为止。程序段(2),是一个死循环。程序段(3),当i为0时结束循环。程序段(4),求1+2+3+…+100的值。【例5-3】输入一行字符,求其中字母、数字和其他符号的个数。分析:循环接收键盘输入的字符,遇到回车停止
12、接收字符,然后进行统计,最后输出字母、数字和其他符号的个数。#includemain(){charc;intletters=0,digit=0,others=0;/*letters为字母数,digit为数字数,others为其他符号数*/printf("Pleaseinputalinecharaters");while((c=getchar())!='')/*当按回车时,结束输入*/{if(c>='a'&&c<='z'
13、
14、c>='A'&&c<='Z')letters++;elseif(c>='0'&&c<='9')digit
15、++;elseothers++;}printf("letters:%d",letters);printf("digit:%d",digit);printf("others:%d",others);}【例5-4】编写程序,求xn的值。分析:使用一个循环计算出x*x,x*x*x,…,x*x*…*x(n个x)的值,本例中惟一的难点是循环退出的条件。#include"stdio.h"main(){doublex,p;unsignedn;printf("请输入x:");scanf("%lf",&x);printf("请输入n:");scanf("%d",&n)
16、;p=1.0;while(n--)p*=x;printf("x的n次幂为:%f",p);}【例5-5】用公式