第3章 程序设计3.ppt
![资源得分’ title=](/images/score_1.gif)
![资源得分’ title=](/images/score_1.gif)
![资源得分’ title=](/images/score_1.gif)
![资源得分’ title=](/images/score_1.gif)
![资源得分’ title=](/images/score_05.gif)
《第3章 程序设计3.ppt》由会员分享,可在线阅读,更多相关《第3章 程序设计3.ppt(54页珍藏版)》请在淘文阁 - 分享文档赚钱的网站上搜索。
1、3.4.13.4.1 while while语句语句3.4.23.4.2 do-while do-while语句语句3.4.33.4.3 for for 语句语句3.4.43.4.4 break break、continuecontinue和和gotogoto语句语句3.4.53.4.5 循环的嵌套循环的嵌套3.4.63.4.6 复合结构程序举例复合结构程序举例3.4 循环结构程序设计C语言程序设计C语言程序设计C语言程序设计C语言程序设计上一页上一页下一页下一页教学目的和基本要求:教学目的和基本要求:要求学生了解循环结构程序设计,掌握各种循环语句应用的特点及异同点,掌握循环嵌套及复合结构。教
2、学重点:教学重点:各种循环语句应用的特点及异同点。C语言程序设计C语言程序设计C语言程序设计C语言程序设计上一页上一页下一页下一页 scanf(“%f”,&a);s=s+a;scanf(“%f”,&a);s=s+a;.这样重复一百次,然后这样重复一百次,然后 输出输出s的值。的值。这样写显然非常麻烦。我们注意到程序中的 scanf(“%f”,&a);s=s+a;两句话是一直重复的,如果能用一种语句,使这两句话能自动的重复执行一百次,就可以简化了书写的麻烦,这就是循环语句。编程解决这样的一个问题:编程解决这样的一个问题:从键盘输入一百个学生的成绩,求总成绩。从键盘输入一百个学生的成绩,求总成绩。
3、从前面所学,有两种解决方法。从前面所学,有两种解决方法。1.设一百个变量,分别输入学生的成绩,然后求和。设一百个变量,分别输入学生的成绩,然后求和。这种方法浪费内存空间,显然不实际。这种方法浪费内存空间,显然不实际。2.设一个变量,每次输入一个学生成绩,累加后再输入下一个学生成设一个变量,每次输入一个学生成绩,累加后再输入下一个学生成绩,如下:绩,如下:C语言程序设计C语言程序设计C语言程序设计C语言程序设计上一页上一页下一页下一页 C语言有语言有while、do-while、和和for语句三种循环结构语句。语句三种循环结构语句。前两个称为条件循环,即根据前两个称为条件循环,即根据条件来决定是
4、否继续循环;条件来决定是否继续循环;后一个称为计数循环,即根据后一个称为计数循环,即根据设定的执行次数来执行循环。设定的执行次数来执行循环。C语言程序设计C语言程序设计C语言程序设计C语言程序设计上一页上一页下一页下一页3.4.13.4.1 whilewhile语句语句一般形式一般形式:while(表达式表达式)语句语句表达式语句真假表达式1.1.计算表达式计算表达式语句2.2.如果表达式的值为非零如果表达式的值为非零,执行语句执行语句表达式3.返回第一步,重新计算表达式返回第一步,重新计算表达式4.如果表达式的值为零,则结束循环如果表达式的值为零,则结束循环如果表达式的值一开始就为如果表达式
5、的值一开始就为0 0,则语,则语句一次也不会被执行。句一次也不会被执行。执行流程:执行流程:C语言程序设计C语言程序设计C语言程序设计C语言程序设计上一页上一页下一页下一页while语句举例语句举例问题问题:求学生的平均成绩,以输入负数成绩为结束求学生的平均成绩,以输入负数成绩为结束 算法分析算法分析:1.定义变量定义变量score存储学生成绩,定义存储学生成绩,定义s=0存储累加的成绩,存储累加的成绩,定义定义n=0统计录入的成绩数目。统计录入的成绩数目。2.输入第一个学生的输入第一个学生的score 3.若若score=0,执行第执行第4步,否则执行第步,否则执行第7步步 4.n+5.s=
6、s+score 6.录入下一个录入下一个score,并返回第并返回第3步步 7.如果如果n0,输出输出s/n否则输出没有学生成绩否则输出没有学生成绩C语言程序设计C语言程序设计C语言程序设计C语言程序设计上一页上一页下一页下一页main()int n=0;float s=0,score;scanf(“%f”,&score);while(score=0)n+;s=s+score;scanf(“%f”,&score);if(n0)printf(“n%f”,s/n);else printf(“no student score!”);程序:程序:C语言程序设计C语言程序设计C语言程序设计C语言程序设计
7、上一页上一页下一页下一页3.4.2 dowhile语句一般形式一般形式:do 语句语句 while (表达式表达式);1.1.执行语句执行语句3.3.表达式的值为非零表达式的值为非零,返回第,返回第1步步4.表达式的值为零,结束循环表达式的值为零,结束循环语句至少被执行一次。语句至少被执行一次。表达式语句2.2.计算表达式计算表达式执行流程:执行流程:注意:注意:分号不能丢分号不能丢语句表达式真真假假C语言程序设计C语言程序设计C语言程序设计C语言程序设计上一页上一页下一页下一页main()int n=0;float s=0,score;do scanf(“%f”,&score);n+;s=s
8、+score;while(score=0);if(n1)printf(“n%f”,(s-score)/(n-1);else printf(“no student score!”);用用do-while语句编写统计学生平均成绩的程序:语句编写统计学生平均成绩的程序:由于由于do-while语句至语句至少要被执行一次,特少要被执行一次,特别要注意别要注意n和和s的取值的取值问题!问题!C语言程序设计C语言程序设计C语言程序设计C语言程序设计上一页上一页下一页下一页想想这样的一段循环语句的执行结果想想这样的一段循环语句的执行结果:i=1;while(i=100)putchar(*);i+;这个循环永
9、远不会结束这个循环永远不会结束,因为循环控制变量因为循环控制变量i没有没有在循环体内被改变,在循环体内被改变,i+;不属于循环体。不属于循环体。应该改为应该改为应该改为应该改为:i=1;i=1;while(i=100)while(i=100)putcharputchar(*);(*);i+;i+;循环语句中一定要注循环语句中一定要注意表达式的值是否能在意表达式的值是否能在循环执行过程中被改变,循环执行过程中被改变,以免造成死循环。以免造成死循环。C语言程序设计C语言程序设计C语言程序设计C语言程序设计上一页上一页下一页下一页3.4.3 for循环语句循环语句 for(for(表达式表达式1;1
10、;表达式表达式2;2;表达式表达式3)3)循环体语句循环体语句一般形式:一般形式:1.计算表达式计算表达式1,通常用于循环开始前设,通常用于循环开始前设置变量初值。置变量初值。2.计算表达式计算表达式2,值为,值为0则结束循环,否则结束循环,否则执行第则执行第3步。步。3.执行循环体语句。执行循环体语句。4.计算表达式计算表达式3,返回第,返回第2步。步。执行流程执行流程表达式1表达式2循环体表达式3假真C语言程序设计C语言程序设计C语言程序设计C语言程序设计上一页上一页下一页下一页例例:求求 1+2+99#includemain()int i,s=0;for(i=1;i=99;i+)s=s+
11、i;printf(“s=%d”,s);分析:用变量分析:用变量i i从从1 1到到9999循环,循环,把把i i的值累加到变量的值累加到变量s s中,最中,最后输出后输出s s的值。的值。程序如下:程序如下:i=1i=99s=s+ii+假真C语言程序设计C语言程序设计C语言程序设计C语言程序设计上一页上一页下一页下一页从上面的程序我们看到,从上面的程序我们看到,for语句中:语句中:表达式表达式1:通常是给循环变量赋初值通常是给循环变量赋初值表达式表达式2:循环是否继续执行的判别表达式,这个表达循环是否继续执行的判别表达式,这个表达式通常与某一个(或多个)变量的值有关,随着这个式通常与某一个(
12、或多个)变量的值有关,随着这个(些)变量的值的改变,表达式的结果发生变化,这(些)变量的值的改变,表达式的结果发生变化,这个(些)变量被称为循环因变量。个(些)变量被称为循环因变量。表达式表达式3:通常用于改变循环因变量的值。通常用于改变循环因变量的值。在某些情况下,在某些情况下,for语句中的表达式语句中的表达式1、2、3都可以都可以省略,而改用其他的方式来实现这些功能。我们还用省略,而改用其他的方式来实现这些功能。我们还用上面的例子说明上面的例子说明for语句省略表达式的情形。语句省略表达式的情形。C语言程序设计C语言程序设计C语言程序设计C语言程序设计上一页上一页下一页下一页1.省略表达
13、式省略表达式1:#includemain()int i=1,s=0;for(;i=99;i+)s=s+i;printf(“s=%d”,s);2.省略表达式省略表达式3:#includemain()int i,s=0;for(i=1;i=99;)s=s+i;i+;printf(“s=%d”,s);3.同时省略表达式同时省略表达式1、3#includemain()int i=1,s=0;for(;i=99;)s=s+i;i+;printf(“s=%d”,s);表达式表达式2也可以省略也可以省略但在循环体中要借助但在循环体中要借助break;语句来实现循语句来实现循环的结束,我们将在环的结束,我们将
14、在后面介绍。后面介绍。注意:表达注意:表达式省略,分式省略,分号不省略。号不省略。C语言程序设计C语言程序设计C语言程序设计C语言程序设计上一页上一页下一页下一页 for语句中的表达式可以是一切形式的表达式,语句中的表达式可以是一切形式的表达式,逗号运算符参与的表达式也可以运用在逗号运算符参与的表达式也可以运用在for语句中,语句中,通常运用于表达式通常运用于表达式1和表达式和表达式3。如上面的例子可以改写为:如上面的例子可以改写为:#includemain()int i,s;for(s=0,i=1;ij时结束循环(即时结束循环(即i=j时继续循环)。最后输出时继续循环)。最后输出s。程序如下
15、:程序如下:#includemain()int i,j;float s=0;for(i=1,j=100;i=j;i+,j-)s=s+(float)i/j;printf(“ns=%f”,s);C语言程序设计C语言程序设计C语言程序设计C语言程序设计上一页上一页下一页下一页for、while、do-while的比较的比较 所有需要用到循环结构的程序,都可以用所有需要用到循环结构的程序,都可以用forfor、whilewhile、do-whiledo-while中的任何一个来实现,区别只在中的任何一个来实现,区别只在于某些问题用哪种语句更方便。于某些问题用哪种语句更方便。比如求比如求1+2+99的问
16、题我们也可以分别用的问题我们也可以分别用while与与do-while语句编写如下:语句编写如下:用用while:#includemain()int i=1,s=0;while(i=99)s=s+i;i+;printf(“ns=%d”,s);用用do-while:#includemain()int i=1,s=0;dos=s+i;i+;while(i0,执行第执行第4步,否则执行第步,否则执行第7步步4.i=a%105.t=t*10+i6.a=a/10,并返回第并返回第3步步7.输出输出tC语言程序设计C语言程序设计C语言程序设计C语言程序设计上一页上一页下一页下一页程序:程序:#includ
17、emain()long a,i,t=0;scanf(“%ld”,&a);while(a0)i=a%10;t=t*10+i;a=a/10;printf(“n%ld”,t);在这里由于在这里由于a的值可能的值可能很大所以用到了很大所以用到了long型定型定义变量义变量a,如果希望取到的如果希望取到的值更大,可以用值更大,可以用unsigned long型。型。C语言程序设计C语言程序设计C语言程序设计C语言程序设计上一页上一页下一页下一页例:有数列例:有数列2/3、4/5、6/9、10/15求此数列前求此数列前30项的和。项的和。1.初值初值i=2,j=3,s=0;2.用用n从从1到到30循环循环
18、5.输出输出s;3.s=s+i/j;4.c=i;i=j+1;j=c+j;算法分析:算法分析:对于数列的题,首先要找出通项公式,或前后项的计算关对于数列的题,首先要找出通项公式,或前后项的计算关系公式,根据公式求所需。由于数列的题一般执行次数能确定,系公式,根据公式求所需。由于数列的题一般执行次数能确定,用用for语句来编写比较方便。语句来编写比较方便。此题,前后项的关系是:后一项的分子是前一项的分母加此题,前后项的关系是:后一项的分子是前一项的分母加1,后一项的分母是前一项的分子加分母。解题思路是用循环,后一项的分母是前一项的分子加分母。解题思路是用循环语句求各项,并把值累加,因为是求前语句求
19、各项,并把值累加,因为是求前30项的和,循环执行项的和,循环执行30次。次。C语言程序设计C语言程序设计C语言程序设计C语言程序设计上一页上一页下一页下一页程序:程序:#includemain()int i=2,j=3,n,c;float s=0;for(n=1;n99)break;s=s+i;i+;printf(“s=%d”,s);例:前面讲到的计算例:前面讲到的计算1+2+99的程序,可以同时省的程序,可以同时省略略for循环的三个表达式,改写成如下形式:循环的三个表达式,改写成如下形式:本程序中,当本程序中,当i99时,利用时,利用break语句强行终止语句强行终止for循环,继续执行循
20、环,继续执行for语句后的下一条语句。语句后的下一条语句。C语言程序设计C语言程序设计C语言程序设计C语言程序设计上一页上一页下一页下一页3.4.4.2 continue语句语句 该语句被称为继续语句该语句被称为继续语句。在循环结构中执行在循环结构中执行continue语句语句,使本次循环提前结束,即跳过循环使本次循环提前结束,即跳过循环体中体中continrue语句下面的尚未执行的循环体语句,语句下面的尚未执行的循环体语句,但不结束整个循环,继续进行下一次循环的条件但不结束整个循环,继续进行下一次循环的条件判别,条件为真,继续进行执行循环语句。判别,条件为真,继续进行执行循环语句。一般形式:
21、一般形式:continue;C语言程序设计C语言程序设计C语言程序设计C语言程序设计上一页上一页下一页下一页例:下面这个程序,想想它实现的是什么功能例:下面这个程序,想想它实现的是什么功能?#includemain()int i,s=0;for(i=1;i=100;i+)if(i%5=0)continue;s=s+i;printf(“n%d”,s);在左边的程序在左边的程序中,中,i从从1到到100循循环,当环,当i是是5的倍数的倍数时,直接进入下一时,直接进入下一个个i,当当i不是不是5的倍的倍数时,把数时,把i累加到累加到s,最后输出最后输出s。所以,所以,这个程序实现的是这个程序实现的是
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 第3章 程序设计3 程序设计
![提示](https://www.taowenge.com/images/bang_tan.gif)
限制150内