1、2000年1月25日北京理工大学 1语句语句YN条件条件节目录节目录2000年1月25日北京理工大学 2面向过程程序设计的任务:面向过程程序设计的任务:数据描述过程描述第三章第三章第四、五章第四、五章解决的问题:当过程中出现选择结构问题时,针对问题的类型,可有三种不同的条件判定方法来描述过程。当问题中需要多次使用同一过程时当问题中需要多次使用同一过程时,用循环的方法来描述过程。,用循环的方法来描述过程。返回主目录第节第节 第节第节 第节第节第节第节 第节第节循环的基本概念循环的基本概念 当型当型循环控制循环控制直到型循环控制直到型循环控制循环的嵌套循环的嵌套循环应用循环应用第五章第五章 循环循
2、环科技学院应用数学系科技学院应用数学系共 32 页 第 5 页什么是循环?什么是循环?为什么要使用循环?为什么要使用循环?6-16-1 循环的基本概念循环的基本概念l循环是有规律的重复操作。循环是有规律的重复操作。将复杂问题将复杂问题分解分解为为简单的操作过程,程序只对简单过程描述,这些简单的操作过程,程序只对简单过程描述,这些过程的多次过程的多次重复重复就可完成对问题的求解。重复的就可完成对问题的求解。重复的频繁性决定了循环在程序设计中必不可少!频繁性决定了循环在程序设计中必不可少!一、循环问题一、循环问题1001nyn问题问题1 1:问题问题2 2:问题问题3 3:问题分解问题分解循环控制
3、循环控制下页下页节节末页末页结束结束第五章第五章 循环循环科技学院应用数学系科技学院应用数学系共 32 页 第 6 页6-16-1 循环的基本概念循环的基本概念l if-goto 循环循环l while循环循环l for循环循环l do while循环循环 先判断后循环先判断后循环 (当型循环)(当型循环)先循环先循环后后判断判断(直到型循环)(直到型循环)特点:特点:难点:难点:C提供四种循环控制:提供四种循环控制:首页首页 上页上页 下页下页节节末页末页结束结束第五章第五章 循环循环科技学院应用数学系科技学院应用数学系共 32 页 第 7 页6-16-1 循环的基本概念(续)循环的基本概念
4、(续)二、循环结构二、循环结构l当型循环结构当型循环结构l直到型循环结构直到型循环结构循环体循环体N条件条件Y当型循环当型循环直到型循环直到型循环条件条件NY循环体循环体入口入口出口出口循环体中是一个过程,该过程的复杂程度取决于问题及对问题的分解首页首页 上页上页 下页下页节节末页末页结束结束第五章第五章 循环循环科技学院应用数学系科技学院应用数学系共 32 页 第 8 页6-16-1 循环的基本概念(续)循环的基本概念(续)三、循环的执行过程三、循环的执行过程循环体循环体N条件条件Yl当型循环当型循环条件条件 循环循环 次数次数Y循环体循环体?执行执行 3执行执行 2结束结束 循环体循环体Y
5、?循环体循环体Y?N3次在循环入口处判断在循环入口处判断当条件为真时执行循环当条件为真时执行循环首页首页 上页上页 下页下页节节末页末页结束结束第五章第五章 循环循环科技学院应用数学系科技学院应用数学系共 32 页 第 9 页6-16-1 循环的基本概念(完)循环的基本概念(完)l直到型循环直到型循环在循环出口处判断,当条在循环出口处判断,当条件为真时继续执行循环,件为真时继续执行循环,直到条件为假时为止。直到条件为假时为止。条件条件NY循环体循环体条件条件 循环循环 次数次数执行执行 3执行执行 2结束结束3次Y条件条件循环体循环体Y条件条件循环体循环体Y条件条件循环体循环体执行执行 4条件
6、条件循环体循环体N4 4次首页首页 上页上页 下页下页节节末页末页结束结束第五章第五章 循环循环科技学院应用数学系科技学院应用数学系共 32 页 第 10 页6-26-2 当型循环控制语句当型循环控制语句一、结构与语句一、结构与语句循环体循环体N条件条件Y形式1 1:标号:标号:if(条件条件)语句组语句组 goto 标号标号形式2 2:while(条件条件)语句组语句组形式3 3:for(初值初值;条件条件;增量增量)语句组语句组循环入口语句循环入口语句 循环终端语句循环终端语句当型循环当型循环首页首页 上页上页 下页下页节节末页末页结束结束goto 标号第五章第五章 循环循环科技学院应用数
7、学系科技学院应用数学系共 32 页 第 11 页6-26-2 当型循环控制语句(续)当型循环控制语句(续)首页首页 上页上页 下页下页节节末页末页结束结束xnns1求:求:s=s+ns=s+nn+n+分析分析问题被简化为做加法:问题被简化为做加法:最基本的执行语句就是循环最基本的执行语句就是循环体内的语句。其次要考虑在体内的语句。其次要考虑在进入循环之前和结束循环之进入循环之前和结束循环之后计算机应该完成的操作。后计算机应该完成的操作。用流程图描用流程图描述整个过程述整个过程二、三种语句的应用二、三种语句的应用第五章第五章 循环循环科技学院应用数学系科技学院应用数学系共 32 页 第 12 页
8、6-26-2 当型循环控制语句(续)当型循环控制语句(续)/*C5-1.C*/main()int n=1,S=0,x;scanf(%d,&x);loop:if(n=x)s=s+n;n+;goto loop;printf(s=%dn,s);开始开始初始化初始化n,s,xn,s,x输入输入x xn=xn=xs=s+ns=s+nYn加加1首页首页 上页上页 下页下页节节末页末页结束结束N输出输出s结束结束10s=55100s=5050255s=32640while(n=x)while(n=x)for(;n=x;)for(;n=x;)循环结束循环结束第五章第五章 循环循环科技学院应用数学系科技学院应用
9、数学系共 32 页 第 13 页6-26-2 当型循环控制语句(续)当型循环控制语句(续)首页首页 上页上页 下页下页节节末页末页结束结束 三、三、forfor语句执行过程语句执行过程 计算计算e1e1初值初值;计算计算e2e2并判断,并判断,0 0则跳出循环,非则跳出循环,非0 0执行循环;执行循环;当当e2e2非非0 0,执行循环到终端语句,计算,执行循环到终端语句,计算e3e3增量增量;自动转到第二步继续执行。自动转到第二步继续执行。ForFor语句格式:语句格式:第五章第五章 循环循环科技学院应用数学系科技学院应用数学系共 32 页 第 14 页6-26-2 当型循环控制语句(续)当型
10、循环控制语句(续)首页首页 上页上页 下页下页节节末页末页结束结束 1.1.e1e1、e2e2、e3e3均可缺省均可缺省for(;n100;n+)缺省缺省e1,n应在循环之前赋初值应在循环之前赋初值 for(n=0;n+)缺省缺省e2,造成死循环,造成死循环,for(n=0;n100;)缺省缺省e3,n增量应在循环体内进行增量应在循环体内进行for(;)for(;n100;)缺省缺省e1,e3分号始终不能缺省!分号始终不能缺省!不可用不可用 第五章第五章 循环循环科技学院应用数学系科技学院应用数学系共 32 页 第 15 页6-26-2 当型循环控制语句(续)当型循环控制语句(续)首页首页 上
11、页上页 下页下页节节末页末页结束结束for(初值初值;判断判断;增量增量)语句;语句;for(初值初值;判断判断;增量增量)复合语句复合语句;for(初值初值;判断判断;增量增量);2.2.e1e1和和e3e3可是与初值、增量无关的逗号表达式可是与初值、增量无关的逗号表达式for(s=0,n=1;n=100;s=s+n,printf(“%d”,s)n+;for(s=0;n100;s=s+n,n+)printf(“%d”,s);求累加和求累加和n的初值在的初值在for之前之前完成完成增量在增量在for之外完成之外完成ForFor语句的形式:语句的形式:第五章第五章 循环循环科技学院应用数学系科技
12、学院应用数学系共 32 页 第 16 页6-26-2 当型循环控制语句(续)当型循环控制语句(续)首页首页 上页上页 下页下页节节末页末页结束结束/*C5-2.C*/main()int n=1,s=0,x;scanf(%d,&x);for(;n=x;n+)s=s+n;printf(s=%dn,s);while(n=x)s=s+n;n+;/*C5-2-1.C*/main()int n,s,x;scanf(%d,&x);for(n=1,s=0;n=x;n+)s=s+n;printf(s=%dn,s);缺省缺省e1赋初值赋初值语句语句 第五章第五章 循环循环科技学院应用数学系科技学院应用数学系共 3
13、2 页 第 17 页6-26-2 当型循环控制语句(完)当型循环控制语句(完)首页首页 上页上页 下页下页节节末页末页结束结束/*C5-4.C*/main()int n,s;for(n=1;n=10;n+=2)printf(n=%dn,n);/*C5-3.C*/main()int n,s;for(n=1;n=10;n+=2);printf(n=%dn,n);以下以下程序的输出结果程序的输出结果输出结果:输出结果:n=11输出结果:输出结果:n=1n=3n=5n=7n=9无循环体无循环体 循环体循环体;第五章第五章 循环循环科技学院应用数学系科技学院应用数学系共 32 页 第 18 页6-36-
14、3 直到型循环控制语句直到型循环控制语句首页首页 上页上页 下页下页节节末页末页结束结束一、结构与语句一、结构与语句形式1 1:if(条件条件)goto 标号标号 形式2 2:do do 语句语句 while(条件条件);循环出口语句循环出口语句直到型循环直到型循环条件条件NY循环体循环体xnns1求:求:流程图流程图第五章第五章 循环循环科技学院应用数学系科技学院应用数学系共 32 页 第 19 页n=xn=xs=s+ns=s+nYn加加16-3 6-3 直到型循环控制语句(续)直到型循环控制语句(续)/*C5-5.C*/main()int n=1,S=0,x;scanf(%d,&x);lo
15、op:s=s+n;n+;if(n=x)goto loop;printf(s=%dn,s);开始开始初始化初始化n,s,xn,s,x输入输入x x首页首页 上页上页 下页下页节节末页末页结束结束 do do s=s+n;s=s+n;n+;n+;while(n=x);while(n=x);N输出输出s结束结束二、两种语句的应用二、两种语句的应用第五章第五章 循环循环科技学院应用数学系科技学院应用数学系共 32 页 第 20 页/*C5-6-1.C*/main()int s=0,x;scanf(%d,&x);while(x=10)s=s+x;x+;printf(s=%dn,s);/*C5-6.C*/
16、main()int s=0,x;scanf(%d,&x);do s=s+x;x+;while(x=10);printf(s=%dn,s);6-3 6-3 直到型循环控制语句(完)直到型循环控制语句(完)首页首页 上页上页 下页下页节节末页末页结束结束输入:输入:12输出:输出:s=12循环至少循环至少执行一次执行一次循环没有循环没有被执行被执行输入:输入:12输出:输出:s=0三、三、whilwwhilw与与do whiledo while的比较的比较第五章第五章 循环循环科技学院应用数学系科技学院应用数学系共 32 页 第 21 页6-46-4 循环的嵌套循环的嵌套首页首页 上页上页 下页下
17、页节节末页末页结束结束 一、循环嵌套的概念一、循环嵌套的概念 1 2 3 4 5 6 7 8 91 2 3 4 5 6 7 8 9-1 12 42 43 6 93 6 94 8 12 164 8 12 165 10 15 20 255 10 15 20 256 12 18 24 30 366 12 18 24 30 367 14 21 28 35 42 497 14 21 28 35 42 498 16 24 32 40 48 56 648 16 24 32 40 48 56 649 18 27 36 45 54 63 72 819 18 27 36 45 54 63 72 81在循环体中,又
18、包含在循环体中,又包含有循环结构。可以构有循环结构。可以构成循环嵌套。成循环嵌套。行循环中行循环中包含了列包含了列循环。循环。第五章第五章 循环循环科技学院应用数学系科技学院应用数学系共 32 页 第 22 页6-46-4 循环的嵌套(续)循环的嵌套(续)首页首页 上页上页 下页下页节节末页末页结束结束 二、嵌套结构规则二、嵌套结构规则 外循环外循环内循环内循环交叉循环交叉循环 三、三、breakbreak语句与语句与continuecontinue语句语句 外循环外循环入口入口内循环出口内循环出口内循环出口内循环出口外循环出口外循环出口第五章第五章 循环循环科技学院应用数学系科技学院应用数学
19、系共 32 页 第 23 页6-46-4 循环的嵌套(续)循环的嵌套(续)首页首页 上页上页 下页下页节节末页末页结束结束lbreak语句格式语句格式lbreakbreak语句的功能语句的功能 1.1.在在switchswitch语句中结束语句中结束casecase子句,使控制转子句,使控制转到到switchswitch语句之外。语句之外。2.2.在循环语句的循环体中使用,结束循环过在循环语句的循环体中使用,结束循环过程,使控制转移到整个循环语句之外的下一程,使控制转移到整个循环语句之外的下一条语句处。条语句处。第五章第五章 循环循环科技学院应用数学系科技学院应用数学系共 32 页 第 24
20、页6-46-4 循环的嵌套(续)循环的嵌套(续)首页首页 上页上页 下页下页节节末页末页结束结束lcontinue语句格式:语句格式:lcontinuecontinue语句的功能:语句的功能:continuecontinue语句仅能在循环语句中使用。语句仅能在循环语句中使用。它的作用不是结束循环,而是开始一次新的它的作用不是结束循环,而是开始一次新的循环。循环。对于对于forfor语句,将控制转到执行增量和条件测语句,将控制转到执行增量和条件测试部分。试部分。对于对于whilewhile和和do-whiledo-while语句,将控制转到条件语句,将控制转到条件测试部分。测试部分。第五章第五章
21、 循环循环科技学院应用数学系科技学院应用数学系共 32 页 第 25 页6-46-4 循环的嵌套(续)循环的嵌套(续)首页首页 上页上页 下页下页节节末页末页结束结束l打印边长为打印边长为m m的正方型的正方型从键盘输入从键盘输入m m值,输出值,输出m m行每行行每行m m个个*号。号。输入输入m=4m=4,输出的图形如下:输出的图形如下:l算法分析与设计:算法分析与设计:1.输入输入m,2.重复重复打印打印m行,每行打印行,每行打印m个个*;*1.输入输入m;2.for(k=1;k=m;k+)打印一行中的打印一行中的 m 个个 *;行控制行控制第五章第五章 循环循环科技学院应用数学系科技学
22、院应用数学系共 32 页 第 26 页6-46-4 循环的嵌套(续)循环的嵌套(续)首页首页 上页上页 下页下页节节末页末页结束结束1.输入输入m;2.for(k=1;k=m;k+)打印打印 m 个个 *;换新行换新行;1.输入m;2.for(k=1;k=m;k+)行控制行控制列控制列控制第五章第五章 循环循环科技学院应用数学系科技学院应用数学系共 32 页 第 27 页6-46-4 循环的嵌套(续)循环的嵌套(续)首页首页 上页上页 下页下页节节末页末页结束结束#include main()int k,m,j;scanf(“%d”,&m);for(k=1;k=m;k+)/*控制打印控制打印m
23、行行*/for(j=1;j=m;j+)/*打印一行中的打印一行中的m个个*号号*/printf(“*”);printf(“n”);l整理,得到程序如下:整理,得到程序如下:第五章第五章 循环循环科技学院应用数学系科技学院应用数学系共 32 页 第 28 页6-46-4 循环的嵌套(完)循环的嵌套(完)首页首页 上页上页 下页下页节节末页末页结束结束l分析方法分析方法逐步求精法。对于复杂问题,不逐步求精法。对于复杂问题,不可能一下得到程序,可以先将简可能一下得到程序,可以先将简单的部分明确出来,再逐步对复单的部分明确出来,再逐步对复杂部分进行细化,一步一步推出杂部分进行细化,一步一步推出程序。程
24、序。第五章第五章 循环循环科技学院应用数学系科技学院应用数学系共 32 页 第 29 页6-56-5 循环应用循环应用C5-8求求14141313数的最后三位数。数的最后三位数。1.问题分析问题分析将将1414累乘累乘1313次后截取最后三位数?次后截取最后三位数?因为因为1414的的1313次次方已经超出了方已经超出了计算机所能表计算机所能表示的整数范围示的整数范围乘法规律:乘积的最后乘法规律:乘积的最后三位的值只与乘数和被三位的值只与乘数和被乘数的后三位有关乘数的后三位有关C C语言中最长的整数是:语言中最长的整数是:无符号长整型数:无符号长整型数:0-42949672950-429496
25、72951010位位14141010=289254654976=2892546549761212位位首页首页 上页上页 下页下页节节末页末页结束结束第五章第五章 循环循环科技学院应用数学系科技学院应用数学系共 32 页 第 30 页6-5 6-5 循环应用(续)循环应用(续)2.解题方法解题方法 设计求设计求x xy y末尾三位数的通用程末尾三位数的通用程序。设一累乘器序。设一累乘器A A,使,使A A与与X X相乘后取相乘后取末尾三位数,即:末尾三位数,即:a=aa=a*x%1000 x%1000,如如此循环此循环y y次。次。问题被简化为求问题被简化为求三位数乘法。三位数乘法。3.程序流程
26、图程序流程图首页首页 上页上页 下页下页节节末页末页结束结束第五章第五章 循环循环科技学院应用数学系科技学院应用数学系共 32 页 第 31 页6-5 6-5 循环应用(续)循环应用(续)开始开始初始化初始化i,x,y,a输入输入x,yN输出结果输出结果结束结束main()main()intint i=1,x,y,a=1;i=1,x,y,a=1;printfprintf(Input X and Y:);(Input X and Y:);scanfscanf(%d(%d*%d,&x,&y);%d,&x,&y);while(i=y)while(i=y)a=a a=a*x%1000;x%1000;i
27、+;i+;printfprintf(3 digits is:);(3 digits is:);printfprintf(%dn,a%1000);(%dn,a%1000);Input X and Y:14Input X and Y:14*13133 digits is:1443 digits is:144Input X and Y:15Input X and Y:15*12123 digits is:6253 digits is:625i=ya=a*x%1000Yi加加1首页首页 上页上页 下页下页节节末页末页结束结束第五章第五章 循环循环科技学院应用数学系科技学院应用数学系共 32 页 第 3
28、2 页6-5 6-5 循环应用(完)循环应用(完)首页首页 上页上页 下页下页节节末页末页结束结束#include include.hmain()main()intint i=1,j;i=1,j;/*i:i:行计数器行计数器 j:j:列计数器列计数器 */while(i=9)while(i=9)/*控制打印表头控制打印表头 */printfprintf(%4d,i+);(%4d,i+);printfprintf(n-n);(n-n);for(i=1;i=9;i+)for(i=1;i=9;i+)/*行循环入口行循环入口 */j=1;j=1;/*列计数器置列计数器置1 1*/while(j=i)while(j=i)/*嵌套的内循环。输出第嵌套的内循环。输出第i i行行 */printfprintf(“%4d”,i(“%4d”,i*j);j);/*输出乘积输出乘积 */j+;j+;/*列计数器列计数器+1+1*/printfprintf(n);(n);/*一行输出结束后,输出一行输出结束后,输出 n n*/C5-9打印乘法九九表打印乘法九九表内循环终内循环终值与外循值与外循环变量有环变量有关关