C语言-第5章循环结构.ppt
《C语言-第5章循环结构.ppt》由会员分享,可在线阅读,更多相关《C语言-第5章循环结构.ppt(44页珍藏版)》请在淘文阁 - 分享文档赚钱的网站上搜索。
1、第第5章章 循环结构循环结构 n循环的基本要素有三个:循环的基本要素有三个:n循环入口(即循环的初始化条件)循环入口(即循环的初始化条件)n循环出口(即循环的终止条件)循环出口(即循环的终止条件)n循环体(反复执行的部分)循环体(反复执行的部分)n C C语言提供了语言提供了3 3种循环语句实现循环结构种循环语句实现循环结构n5.1 5.1 whilewhile语句语句n5.2 5.2 do-whiledo-while语句语句n5.3 5.3 forfor语句语句 n5.4 5.4 转移语句转移语句n5.5 5.5 举例举例n巩固练习巩固练习图图1.6当型循环结构当型循环结构A当当p为真为真语
2、义语义:计算表达式的值,计算表达式的值,当值为非当值为非0(0(真真)时,执行循环体语句。重复上述操作,时,执行循环体语句。重复上述操作,直到表达式的值为直到表达式的值为0 0(假)时,跳出循环,转而执行(假)时,跳出循环,转而执行whilewhile语句的后续语句。语句的后续语句。5.1while语句语句 nwhile语句的一般形式为:语句的一般形式为:while (while (表达式表达式)语句;语句;图图5.1 while语句的语义语句的语义表达式表达式语句语句sum=0,i=1i=100?sum=sum+ii=i+1输出输出sumwhile(i=100)sum=sum+i;i=i+1
3、;sum=0,i=1i=100?sum=sum+ii=i+1输出输出sum【例例5.1】计计算算 i=n输出输出sumsum=sum+i;i+;图图5.2 例例5.1N-S图图定义变量定义变量i=1,sum=0和和n输入正整数给输入正整数给n/*求求n个自然数的累加和个自然数的累加和*/#include stdio.hmain()int n,i=1,sum=0;printf(Enter a number:);scanf(%d,&n);while(i=n)sum+=i;i+;printf(Sum is%d,sum);sum称为累加称为累加器,使用前要器,使用前要进行初始化,进行初始化,一般初始化
4、为一般初始化为0思考:思考:2.求求1+1/2+1/3+.+1/n3.求求1-1/2+1/3-.-1/n 1.求求使用使用while语句应注意以下几点:语句应注意以下几点:1.while语句中的表达式可以是任意表达式,一般是关语句中的表达式可以是任意表达式,一般是关系表达或逻辑表达式,只要表达式的值为非系表达或逻辑表达式,只要表达式的值为非0(真真)则则继续循环。继续循环。如:如:while(n-)printf(%d,n);2.循环体可以是空语句、单语句或用花括号括起来的复循环体可以是空语句、单语句或用花括号括起来的复合语句。合语句。3.应注意循环条件的选择以避免死循环。例如下列循环应注意循环
5、条件的选择以避免死循环。例如下列循环语句:语句:while(n=10)printf(%d,n+);4.while语句从语法上来说是一条完整的控制语句。语句从语法上来说是一条完整的控制语句。死循环死循环5.允许允许while语句的循环体语句又是语句的循环体语句又是while语句,从语句,从而形成循环嵌套。而形成循环嵌套。如:如:i=1;while(i=9)/*外循环外循环*/j=1;while(j100)sum+=i;使用使用while语句应注意以下几点:语句应注意以下几点:5.2 do-while语句语句ndo-while语句的一般形式为:语句的一般形式为:do 语句;语句;while(表达式
6、表达式);图图5.4 do-while语句的语义语句的语义表达式表达式语句语句语义:语义:先执行循环体语句一次,先执行循环体语句一次,再判别表达式的值,若为非再判别表达式的值,若为非0(0(真真)则则继续执行循环体语句,否则终止循环,继续执行循环体语句,否则终止循环,转而执行转而执行do whiledo while语句后面的语句。语句后面的语句。/*求求n个自然数累加和个自然数累加和*/main()int n,i=1,sum=0;printf(Enter a number:);scanf(%d,&n);do sum+=i;i+;while(i=100);printf(%d,sum);/*求求n
7、个自然数的累加和个自然数的累加和*/#include stdio.hmain()int n,i=1,sum=0;printf(Enter a number:);scanf(%d,&n);while(i=n)sum+=i;i+;printf(Sum is%d,sum);注意观察注意观察【例例5.3】一个人口统计程序,一个人口统计程序,1980年世界人口已达年世界人口已达45亿,按年亿,按年增长率增长率1%计算,问什么年份开始世界人口突破计算,问什么年份开始世界人口突破100亿大关。亿大关。#include“stdio.h”main()int year=1980;double rate=0.01,
8、p=4.5e+09;do p=p*(1+rate);year+;while(p1e+10);printf(year=%d,%en,year,p);while(p1e+10)p=p*(1+rate);year+;初值:年:初值:年:year=1980人口:人口:p=4.5e+09以后每年的人口:以后每年的人口:p=p*(1+0.01)5.3 for语句语句n一般形式为:一般形式为:for(表达式表达式1;表达式;表达式2;表达;表达3)语句语句 n执行过程:执行过程:计算表达式计算表达式1的值,为循环变量赋初值。的值,为循环变量赋初值。计算表达式计算表达式2的值,若值为非的值,若值为非0(真真)
9、,则执行循环体一,则执行循环体一次,否则跳出循环。次,否则跳出循环。计算表达式计算表达式3的值,转回第的值,转回第步重复执行。步重复执行。表达式表达式2语句语句图图5.5 for语句的语义语句的语义表达式表达式1表达式表达式3如如:sum=0;for(k=1;k=100;k+)sum+=k;赋值赋值控制循控制循环结束环结束循环变循环变量增值量增值或减值或减值#include“stdio.h”main()int n,i=1,sum=0;printf(“Enter a number:”);scanf(“%d”,&n);while(i=n)sum+=i;i+;printf(Sum is d,sum)
10、;例:求例:求n个自然数的累加和个自然数的累加和do sum+=i;i+;while(i=n);for(i=1;i=n;i+)sum+=i;【例例5.4】编程计算正整数编程计算正整数1到到n中的奇数之和以及偶数之和。中的奇数之和以及偶数之和。#include“stdio.h”main()int i,n,o_sum,e_sum;scanf(%d,&n);e_sum=0;o_sum=0;for(i=1;i=n;i+)if(i%2=0)e_sum+=i;else o_sum+=i;printf(o_sum=%d,e_sum=%dn,o_sum,e_sum);输入输入ni=n定义变量定义变量i,n,e
11、_sum,o_sume_sum+=ii=1非非00i%2=0o_sum+=i输出输出e_sum和和o_sume_sum=0;o_sum=0;图图5.6 例例5.4N-S图图i+注意:注意:n 三个表达式均可省略,但两个分号不能省略。三个表达式均可省略,但两个分号不能省略。q省略表达式省略表达式1:此时必须在此时必须在for语句之前给循环变量赋语句之前给循环变量赋初值。初值。如:如:k=1;for(;k=100)break;q省略表达式省略表达式3:应另设法使循环正常执行。应另设法使循环正常执行。如:如:for(k=1;k=100;)s+=k;k+;q全省略全省略:“死循环死循环”如:如:for
12、(;)sum+=k;关于:关于:for(表达式表达式1;表达式;表达式2;表达;表达3)语句语句 n循环体也可以省略,但分号不可省略。循环体也可以省略,但分号不可省略。“;”代表空语句,代表空语句,表示不执行任何操作,但在语法上不可少。表示不执行任何操作,但在语法上不可少。如:如:for(k=1;k=10000;k+);n表达式表达式1和和3还可包含与循环变量无关的其它表达式。还可包含与循环变量无关的其它表达式。如:如:for(s=0,k=1;k=100;k+,s=s+k);for(k=0;k=100;k+,k+)s+=k;n表达式表达式2可为任意表达式,只要值为非零,就执行循环体。可为任意表
13、达式,只要值为非零,就执行循环体。如:如:for(k=0;(c=getchar()!=n;k+);for(;(c=getchar()!=n;)printf(“%c”,c);思考:使用三种循环语句实现:思考:使用三种循环语句实现:1+2*2+3*3+100*100 关于:关于:for(表达式表达式1;表达式;表达式2;表达;表达3)语句语句 n三种循环语句可相互嵌套,构成多重循环。三种循环语句可相互嵌套,构成多重循环。for()while()do for()while();while()for()for()for()for(i=1;i=2;i+)j=1;while(j=5)printf(“%d”
14、,j);printf(“n”);【例例5.6】有有1、2、3三个数字,编写程序输出由这三个数三个数字,编写程序输出由这三个数组成的互不相同且无重复数字的两位数。即输出:组成的互不相同且无重复数字的两位数。即输出:12,13,21,23,31,32。#include“stdio.h”main()int i,j,k;printf(n);for(i=1;i4;i+)*二重循环二重循环*/for(j=1;j4;j+)if(i!=j)/*确保确保i、j两位互不相同两位互不相同*/printf(%d%dn,i,j);三位数?三位数?三位数?三位数?【例例5.7】编程打印三角形表示编程打印三角形表示(黑色区
15、域黑色区域)的的九九乘法表九九乘法表*1 2 3 4 5 6 7 8 91 12 2 43 3 6 9 4 4 8 12 165 5 10 15 20 256 6 12 18 24 30 367 7 14 21 28 35 42 498 8 16 24 32 40 48 56 649 9 18 27 36 45 54 63 72 81#include stdio.hmain()int i,j,p;for(i=1;i=9;i+)for(j=1;j=i;j+)p=i*j;printf(%4d,p);printf(“n”);/换行换行n一般形式为:一般形式为:break;qbreak语句只能用在语句
16、只能用在switch 语句或循环语句中语句或循环语句中q作用作用:跳出跳出switch语句或跳出本层循环,转去执语句或跳出本层循环,转去执行后面的程序语句。行后面的程序语句。main()int i,s;s=0;for(i=1;i5)break;printf(“s=%dn”,s);5.4 转移语句转移语句-break语句语句 n一般格式是:一般格式是:continue;n语义:结束语义:结束本次本次循环,即不再执行循环体中循环,即不再执行循环体中continue 语句之后的语句,转入语句之后的语句,转入下一次下一次循环条循环条件的判断与执行。件的判断与执行。n注意(注意(1)只能用在循环体中)只
17、能用在循环体中,(2)只结束本层本次的循环,并不跳出循环。)只结束本层本次的循环,并不跳出循环。#include stdio.hmain()int k=0,s=0,i;for(i=1;i2)continue;k=k+s;printf(s=%d,k=%dn,s,k);5.4 转移语句转移语句-continue语句语句例:打印例:打印1-1001-100之内能被之内能被7 7整除的数整除的数#include“stdio.h”main()int n;for (n=1;n=100;n+)if(n%7)=0)printf(“%d ”,n);思考:如何控思考:如何控制每行打印制每行打印5个个数数(n%7)
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 语言 循环 结构
限制150内