《流程控制结构之循环结构.ppt》由会员分享,可在线阅读,更多相关《流程控制结构之循环结构.ppt(24页珍藏版)》请在金锄头文库上搜索。
1、第六章 流程控制结构之循环结构 杨章伟杨章伟e-mail:1-2课程内容安排课程内容安排goto语句及其构成的循环。语句及其构成的循环。while语句及其构成的循环的应用。语句及其构成的循环的应用。do while语句循环的应用语句循环的应用for语句循环的应用。语句循环的应用。循环嵌套和循环结构的综合应用。循环嵌套和循环结构的综合应用。1-3goto语句语句 C+提供了多种循环语句,可以组成各种不同形式的循提供了多种循环语句,可以组成各种不同形式的循环结构,比较常用的是环结构,比较常用的是goto语句、语句、for语句、语句、while语句语句和和do.while语句。其中,语句。其中,go
2、to语句也称为无条件跳转语句也称为无条件跳转语句,其作用是跳转到一条指定的语句,然后从那条语语句,其作用是跳转到一条指定的语句,然后从那条语句开始往下执行。句开始往下执行。使用使用goto 语句的目的是实现无条件分支,而这个分支语句的目的是实现无条件分支,而这个分支只能是函数内部的分支。运行只能是函数内部的分支。运行goto 语句将跳转到同一语句将跳转到同一函数内部的某个位置,该位置由一个标号表明。在函数内部的某个位置,该位置由一个标号表明。在C+中,中,goto语句的一般形式如下所示:语句的一般形式如下所示:goto label;其中,其中,label是用户定义的标识符标号。是用户定义的标识
3、符标号。label只能用作只能用作goto 的目标,并且必须由冒号结束。的目标,并且必须由冒号结束。label起标识语句起标识语句的作用,与的作用,与goto语句配合使用。语句配合使用。 1-4while语句语句 while语句是最简单的循环语句,用于控制一个语句或语句是最简单的循环语句,用于控制一个语句或语句块循环执行。语句块循环执行。while语句包含一个条件判断,只有语句包含一个条件判断,只有条件为真时,其对应的语句或语句块才会循环执行,否条件为真时,其对应的语句或语句块才会循环执行,否则不执行循环体。在则不执行循环体。在C+中,中,while语句的一般形式如语句的一般形式如下:下:wh
4、ile (表达式表达式);1-5dowhile语句语句 dowhile语句是语句是while语句的一种变化形式,其与语句的一种变化形式,其与while语语句的区别在于句的区别在于dowhile语句不管循环条件是否成立,都先语句不管循环条件是否成立,都先执行一次循环体中的语句。因此,使用执行一次循环体中的语句。因此,使用dowhile语句构成语句构成的循环,其循环体至少会被执行一次。在的循环,其循环体至少会被执行一次。在C+中,中,dowhile语句的一般使用形式为:语句的一般使用形式为:do while ( );1-6for语句语句 在在C+中,中,for语句是最常见的和功能最强的循环语句,语
5、句是最常见的和功能最强的循环语句,它既可用于循环次数确定的情况,也可用于循环次数不它既可用于循环次数确定的情况,也可用于循环次数不确定而只给出循环结束条件的情况,其说明语句的一般确定而只给出循环结束条件的情况,其说明语句的一般形式为:形式为:for (表达式表达式1; 表达式表达式2; 表达式表达式3 );1-7多重循环多重循环 实实际际的的应应用用中中,还还有有一一种种循循环环方方式式使使用用很很广广泛泛,这这就就是是多多重重循循环环,也也称称为为循循环环嵌嵌套套,其其是是指指循循环环语语句句的的循循环环体体内内又又包包含含另另一一个个循循环环语语句句。在在多多重重循循环环中中,循循环环嵌嵌
6、套套的的执执行行顺顺序序是是先先执执行行最最里里层层的的循循环环语语句句,依依次次往往外外执执行行,最后执行最外层的循环。最后执行最外层的循环。1-8转向语句是转向语句是C+中用来实现无条件转移的语句。常中用来实现无条件转移的语句。常用的转向语句有如下的用的转向语句有如下的4种:种:goto语句、语句、break语语句、句、continue语句和语句和return语句语句 .在在C+中,中,break语句的作用是终止整个循环,执语句的作用是终止整个循环,执行循环语句后面的语句。在循环中使用行循环语句后面的语句。在循环中使用break语句语句通常与一个通常与一个if语句配合使用。语句配合使用。
7、转向语句转向语句 1-9C+中,除中,除break语句可跳出循环外,语句可跳出循环外,continue语句也语句也是一种可跳出循环的转向语句。但是,与是一种可跳出循环的转向语句。但是,与break语句不语句不同的是,同的是,break语句用于跳出本层循环,而语句用于跳出本层循环,而continue语语句又称继续语句,用来跳出本次循环而进入本层的下句又称继续语句,用来跳出本次循环而进入本层的下一次循环。一次循环。continue语句的意义是:结束本次循环,即不再执行语句的意义是:结束本次循环,即不再执行循环体中循环体中continue语句之后的语句,转入下一次循环语句之后的语句,转入下一次循环条
8、件的判断与执行。条件的判断与执行。 continue语句语句 1-10在在C+中有返回值的函数中,中有返回值的函数中,return语句的作用是提供语句的作用是提供整个函数的返回值,并结束当前函数返回到调用它的地整个函数的返回值,并结束当前函数返回到调用它的地方。在没有返回值的函数中也可以使用方。在没有返回值的函数中也可以使用return语句,例语句,例如当检查到一个错误时提前结束当前函数的执行并返回。如当检查到一个错误时提前结束当前函数的执行并返回。在主函数在主函数main中,如果定义其返回数据类型为中,如果定义其返回数据类型为int,则,则在结尾处应加上在结尾处应加上“return 数字数字
9、;”的语句,表示程序是否的语句,表示程序是否成功执行。成功执行。 一般来说,语句一般来说,语句return 0;表示成功执行并退出,语句表示成功执行并退出,语句return -1;表示失败并退出。表示失败并退出。 return语句语句 1-11循环结构综合应用循环结构综合应用 循环结构是程序设计中最为复杂,也是最能体现计算机循环结构是程序设计中最为复杂,也是最能体现计算机运算效率的结构。在具体程序设计中,使用好了循环结运算效率的结构。在具体程序设计中,使用好了循环结构,可以使得问题的解决事半功倍。构,可以使得问题的解决事半功倍。 使用辗转相除法求两个数的最大公约数和最小公倍数的使用辗转相除法求
10、两个数的最大公约数和最小公倍数的算法。算法。 1-12小结小结 本章主要介绍了本章主要介绍了C+中用于控制循环结构流程的实现语句,主要包中用于控制循环结构流程的实现语句,主要包括括goto语句、语句、while语句、语句、do while语句和语句和for语句。这些语句语句。这些语句各有其应用特点,各有其应用特点,while语句先判断循环条件后执行循环体,语句先判断循环条件后执行循环体,do while语句则先执行循环体后判断循环条件,语句则先执行循环体后判断循环条件,for语句的使用语句的使用最为广泛,其语句最为精炼。本章通过了大量的示例介绍了这最为广泛,其语句最为精炼。本章通过了大量的示例
11、介绍了这些循环语句的功能和具体应用,读者在使用中可根据需要选择些循环语句的功能和具体应用,读者在使用中可根据需要选择不同的语句。不同的语句。1-13习题习题 【题目目62】编写一个编写一个C+程序,要求从键盘接收用户输入的程序,要求从键盘接收用户输入的10个实数,求出最大值。个实数,求出最大值。【分析分析】该试题主要考查循环的实现。在该试题中,要求用该试题主要考查循环的实现。在该试题中,要求用户从键盘上输入户从键盘上输入10个实数,则应该定义一个浮点型变量个实数,则应该定义一个浮点型变量用于接收,同时使用一个循环语句循环接收。由于每次新用于接收,同时使用一个循环语句循环接收。由于每次新接收的实
12、数都会替换变量中原有的实数,因此接收一个后接收的实数都会替换变量中原有的实数,因此接收一个后应马上进行比较,并将较大值保存在另一个变量中,直到应马上进行比较,并将较大值保存在另一个变量中,直到用户输入用户输入10个实数完成。个实数完成。1-14【题目目63】当执行以下程序时,循环体将被执行多少次?当执行以下程序时,循环体将被执行多少次?k=1; do k=k*k; while(!k);【分析分析】该试题主要考查该试题主要考查dowhile语句的执行情况。语句的执行情况。dowhile语句不管循环条件是否满足,都至少会执行一语句不管循环条件是否满足,都至少会执行一次循环体,执行一次后判断循环条件
13、是否成立。此处次循环体,执行一次后判断循环条件是否成立。此处k的的初值为初值为1,执行完语句,执行完语句k=k*k;后,后,k的值仍然为的值仍然为1。因此,。因此,循环条件循环条件!k的值为的值为false,该循环不会再继续下去,从而,该循环不会再继续下去,从而退出循环。因此,该循环体被执行了一次。退出循环。因此,该循环体被执行了一次。1-15【题目目64】编写一个程序,要求在屏幕上写一个程序,要求在屏幕上输出具有出具有7行的正行的正三角形,如下所示。三角形,如下所示。 1-16【题目目65】有有1、2、3、4个数字,能组成多少个互不相同且无重复数个数字,能组成多少个互不相同且无重复数字的三位
14、数?编写一个程序输出所有无重复数字的三位数。字的三位数?编写一个程序输出所有无重复数字的三位数。【分析分析】该题目主要考察嵌套循环和多个表达式的逻辑判断。为了方该题目主要考察嵌套循环和多个表达式的逻辑判断。为了方便理解,分析题目要求:便理解,分析题目要求:(1)由于是三位数,所以假设百位数、十位数、个位数依次为)由于是三位数,所以假设百位数、十位数、个位数依次为x、y和和z。(2)由于从)由于从1、2、3和和4选取,所以选取,所以1=x=4、1=y=4和和1=z=4。(3)由于互不重复,所以)由于互不重复,所以x!=y,且,且y!=z,且,且z!=x。所以,只需要让所以,只需要让x、y和和z依
15、次取值,然后判断条件,只要满足条件,依次取值,然后判断条件,只要满足条件,就可以。就可以。1-17【题题目目66】编编写一个程序,求写一个程序,求12+22+32+42+202的的值值。【分析分析】该题该题目考察的是目考察的是读读者的者的归纳归纳能力和循能力和循环语环语句使用能句使用能力。首先分析力。首先分析该该表达式的特点。表达式的特点。该该表达式是表达式是计计算数十个数算数十个数字的和。字的和。为为了方便了方便读读者找出者找出规规律,我律,我们们将所有的数字都列将所有的数字都列出,从出,从这这些数字,可以些数字,可以总结总结出以下出以下规规范:每个数字都比前范:每个数字都比前一个数字大一个
16、数字大10;这这些数字个数些数字个数为为20。所以,第一个数字。所以,第一个数字可以表示可以表示为为a1=2+10=12;第二个数字可以表示;第二个数字可以表示为为a2=a1+10=22;第三个数字可以表示;第三个数字可以表示为为a3=a2+10=32ai=ai-1+10a20=a19+10=202。 1-18【题目目67】编写一个编写一个C+程序,找出程序,找出200内能被内能被7整数的所有整数的所有自然数,并将其输出到用户屏幕。自然数,并将其输出到用户屏幕。【分析分析】该试题主要考查该试题主要考查continue语句的应用。语句的应用。continue语句用于结束本次循环,跳到下一次循环。
17、在该试题中,语句用于结束本次循环,跳到下一次循环。在该试题中,通过一个循环在通过一个循环在1200之间依次进行查找,能够被之间依次进行查找,能够被7整除整除则输出,否则使用则输出,否则使用continue语句结束本次循环,继续查语句结束本次循环,继续查找。找。1-19【题目目68】编写一个程序打印图形,按输入的边长,打印一编写一个程序打印图形,按输入的边长,打印一个正方形。其偶数行(从个正方形。其偶数行(从0行开始计算)填充行开始计算)填充=,奇数行,奇数行填充填充+。例如,如果输入为。例如,如果输入为1,则打印,则打印=,如果输入为,如果输入为5,则打印:则打印:=+=+=【分析分析】该试题
18、主要考查循环嵌套的应用。该试题需要使用该试题主要考查循环嵌套的应用。该试题需要使用两层循环结构,例如以外层循环变量为行号,内层变量为两层循环结构,例如以外层循环变量为行号,内层变量为列号;在内层打印字符时,使用选择结构:判断行号,如列号;在内层打印字符时,使用选择结构:判断行号,如果为奇数,打印,否则,打印。果为奇数,打印,否则,打印。1-20【题题目目69】计计算算1至至70中是中是7的倍数的数的倍数的数值值之和。之和。 【题题目目70】求下面分数序列的前求下面分数序列的前13项项之和:之和:2/1,3/2,5/3,8/5,13/8,21/13, 【题题目目71】要用要用0至至9之之间间不同
19、的三个数构成一个三位数,不同的三个数构成一个三位数,编编写程序写程序统计统计出共有多少种方法。出共有多少种方法。 【题题目目72】根据根据/4 =1-1/3+1/5-1/7+求求的近似的近似值值,直到,直到最后一最后一项项的的值值小于小于0.000001为为止。止。 1-21【题题目目73】输输入一个自然数,入一个自然数,输输出其各因子的出其各因子的连连乘形式,如乘形式,如输输入入12,则输则输出出12=1*2*2*3。 【题题目目74】求一个整数任意次方的最后三位数。求一个整数任意次方的最后三位数。 【题题目目75】猴子吃桃猴子吃桃问题问题。猴子第一天摘下若干个桃子,当。猴子第一天摘下若干个
20、桃子,当即吃了一半,即吃了一半,还还不不过瘾过瘾,又多吃了一个。第二天早上又将,又多吃了一个。第二天早上又将剩下的桃子吃掉一半,又多吃了一个。以后每天早上都吃剩下的桃子吃掉一半,又多吃了一个。以后每天早上都吃了前一天剩下的一半零一个。到第了前一天剩下的一半零一个。到第10天早上想再吃天早上想再吃时时,发现发现只剩一个桃子了,求猴子第一天究竟摘了多少个桃子只剩一个桃子了,求猴子第一天究竟摘了多少个桃子? 1-22【题题目目76】已知已知6a30,15b36,求,求满满足不定方程足不定方程2a+5b=126的全部整数的全部整数组组解。如解。如(13, 20)就是一个整数就是一个整数组组解,并以解,
21、并以(x,y)样样式式输输出每个解。出每个解。 【题题目目77】输输出从出从键盘键盘上上输输入的入的10个整数中的最大个整数中的最大值值,要求,要求输输入入变变量用量用x表示,存表示,存储储最大最大值值的的变变量用量用max表示。表示。 【题题目目78】有一分数序列:有一分数序列:2/1,3/2,5/3,8/5,13/8,21/13.。输输出出该该数列的前数列的前20项项之和。之和。 1-23【题题目目79】一个一个5位数,判断它是不是回文数。例如,位数,判断它是不是回文数。例如,12321是回文数,个位与万位相同,十位与千位相同。是回文数,个位与万位相同,十位与千位相同。 【题题目目80】求
22、求1+2!+3!+.+10!的和。的和。 【题题目目81】将一个正整数分解成将一个正整数分解成质质因数。例如:因数。例如:输输入入84,输输出出84=2*2*3*7。 【题题目目82】输输入两个正整数入两个正整数i和和j,输输出两者的最大公出两者的最大公约约数和数和最小公倍数。最小公倍数。 1-24【题题目目83】求求s=n+nn+nnn+nnnn+nn.n的的值值,其中,其中n是一是一个数字。例如个数字。例如3+33+333+3333+33333(共有(共有5个数相加)个数相加)。输输出出s的的值值。 【分析分析】该试题该试题考考查查数字如何通数字如何通过过循循环环构成更大的数字。构成更大的数字。该该程序可通程序可通过过循循环语环语句,句,为为用用户输户输入的入的变变量量进进行累乘,每循行累乘,每循环环一次乘以数字一次乘以数字10,再加上,再加上n,这样这样就得到了就得到了nn的数字,的数字,依次循依次循环环即可得到即可得到nn.n的的值值,将其累加就到了表达式,将其累加就到了表达式n+nn+nnn+nnnn+nn.n的的值值。 【题题目目84】输输出九九乘法表。出九九乘法表。