《高级程序语言设计循环结构程序设计.ppt》由会员分享,可在线阅读,更多相关《高级程序语言设计循环结构程序设计.ppt(38页珍藏版)》请在taowenge.com淘文阁网|工程机械CAD图纸|机械工程制图|CAD装配图下载|SolidWorks_CaTia_CAD_UG_PROE_设计图分享下载上搜索。
1、第第第第6 6 6 6章章章章 循环结构程序设计循环结构程序设计循环结构程序设计循环结构程序设计制作人:王敬华制作人:王敬华制作人:王敬华制作人:王敬华第第6 6章:循环结构程序设计章:循环结构程序设计 u学习的意义学习的意义 语语言言程程序序设设计计教教程程 第第六六章章 循循环环结结构构程程序序设设计计C 许多实际问题中往往需要有规律地重复某些操作,如菜许多实际问题中往往需要有规律地重复某些操作,如菜许多实际问题中往往需要有规律地重复某些操作,如菜许多实际问题中往往需要有规律地重复某些操作,如菜谱中可以有:谱中可以有:谱中可以有:谱中可以有:“打鸡蛋直到泡沫状打鸡蛋直到泡沫状打鸡蛋直到泡沫
2、状打鸡蛋直到泡沫状”这样的步骤,也就是说,这样的步骤,也就是说,这样的步骤,也就是说,这样的步骤,也就是说,在鸡蛋没有打成泡沫状时要反复地打。相应的操作在计算机在鸡蛋没有打成泡沫状时要反复地打。相应的操作在计算机在鸡蛋没有打成泡沫状时要反复地打。相应的操作在计算机在鸡蛋没有打成泡沫状时要反复地打。相应的操作在计算机程序中就体现为某些语句的重复执行,这就时所谓的程序中就体现为某些语句的重复执行,这就时所谓的程序中就体现为某些语句的重复执行,这就时所谓的程序中就体现为某些语句的重复执行,这就时所谓的循环循环循环循环。下面来思考一个问题:下面来思考一个问题:下面来思考一个问题:下面来思考一个问题:如
3、何编程来计算如何编程来计算如何编程来计算如何编程来计算1+2+3+1001+2+3+100?程序如下:程序如下:程序如下:程序如下:int s=0;int s=0;s=s+1;s=s+1;s=s+2;s=s+2;s=s+3;s=s+3;s=s+100;s=s+100;printf(“s=%d”,s);printf(“s=%d”,s);重复重复重复重复100100100100次,次,次,次,晕!晕!晕!晕!有没有更好的方法来有没有更好的方法来计算呢?计算呢?有!就是用循有!就是用循环来编程。环来编程。第第第第4 4章已讨论章已讨论章已讨论章已讨论程序结构程序结构程序结构程序结构顺序结构顺序结构顺
4、序结构顺序结构选择结构选择结构选择结构选择结构循环结构循环结构循环结构循环结构本章讨论本章讨论本章讨论本章讨论第第第第5 5章已讨论章已讨论章已讨论章已讨论 WhileWhileWhileWhile、do-whiledo-whiledo-whiledo-while、forforforfor语句语句语句语句 循环嵌套循环嵌套循环嵌套循环嵌套 BreakBreakBreakBreak、continuecontinuecontinuecontinue、gotogotogotogoto语句语句语句语句 exit()exit()exit()exit()函数函数函数函数 循环结构类型的选择及转换循环结构类
5、型的选择及转换循环结构类型的选择及转换循环结构类型的选择及转换 循环结构程序设计举例循环结构程序设计举例循环结构程序设计举例循环结构程序设计举例 本章小结本章小结本章小结本章小结u学习目标学习目标 理解循环结构的含义;理解循环结构的含义;理解循环结构的含义;理解循环结构的含义;掌握掌握掌握掌握C C C C语言三种循环结构的特点;语言三种循环结构的特点;语言三种循环结构的特点;语言三种循环结构的特点;掌握掌握掌握掌握whilewhilewhilewhile、do-whiledo-whiledo-whiledo-while、forforforfor、gotogotogotogoto、breakb
6、reakbreakbreak、continuecontinuecontinuecontinue语语语语句的使用方法;句的使用方法;句的使用方法;句的使用方法;掌握不同循环结构的选择及其转换方法;掌握不同循环结构的选择及其转换方法;掌握不同循环结构的选择及其转换方法;掌握不同循环结构的选择及其转换方法;掌握混合控制结构程序设计的方法。掌握混合控制结构程序设计的方法。掌握混合控制结构程序设计的方法。掌握混合控制结构程序设计的方法。u学习内容学习内容 语语言言程程序序设设计计教教程程 第第六六章章 循循环环结结构构程程序序设设计计C6.1 6.1 循环结构的程序设计循环结构的程序设计 1.while
7、1.while1.while1.while语句语句语句语句 语语言言程程序序设设计计教教程程 第第六六章章 循循环环结结构构程程序序设设计计C 一般形式:一般形式:一般形式:一般形式:while(while(表达式表达式表达式表达式)循环体语句;循环体语句;循环体语句;循环体语句;执行流程:执行流程:执行流程:执行流程:F F T Texprexpr循环体循环体循环体循环体whilewhile其中:其中:其中:其中:l l whilewhilewhilewhile后面的括号(后面的括号(后面的括号(后面的括号()不能省。)不能省。)不能省。)不能省。l l whilewhilewhilewhi
8、le后面的表达式可以是任意类型后面的表达式可以是任意类型后面的表达式可以是任意类型后面的表达式可以是任意类型的表达式,但一般是条件表达式或逻辑的表达式,但一般是条件表达式或逻辑的表达式,但一般是条件表达式或逻辑的表达式,但一般是条件表达式或逻辑表达式。表达式。表达式。表达式。l l 表达式的值是是循环的控制条件。表达式的值是是循环的控制条件。表达式的值是是循环的控制条件。表达式的值是是循环的控制条件。l l 语句部分称为循环体,当需要执行多语句部分称为循环体,当需要执行多语句部分称为循环体,当需要执行多语句部分称为循环体,当需要执行多条语句时,应使用复合语句条语句时,应使用复合语句条语句时,应
9、使用复合语句条语句时,应使用复合语句。特点:先判断表达式,再执行循环体特点:先判断表达式,再执行循环体特点:先判断表达式,再执行循环体特点:先判断表达式,再执行循环体语语言言程程序序设设计计教教程程 第第六六章章 循循环环结结构构程程序序设设计计C【例】【例】【例】【例】用用用用whilewhilewhilewhile语句求语句求语句求语句求1 1 1 1100100100100的累计和。的累计和。的累计和。的累计和。#include#include void main()void main()int i=1,sum=0;int i=1,sum=0;while(i=100)while(i=10
10、0)sum+=i;sum+=i;i+;i+;printf(sum=%dn,sum);printf(sum=%dn,sum);循环初值循环初值循环初值循环初值循环终值循环终值循环终值循环终值循环条件循环条件循环条件循环条件循环体循环体循环体循环体循环变量增值循环变量增值循环变量增值循环变量增值运行结果:运行结果:运行结果:运行结果:sum=5050sum=5050【例】显示【例】显示【例】显示【例】显示1 1 1 110101010的平方的平方的平方的平方#include#include void main()void main()int i=1;int i=1;while(i=10)while
11、(i 0)while(a 0)/a 0/a 0为假,为假,为假,为假,b+b+不可能执行不可能执行不可能执行不可能执行 b+;b+;int num=0;int num=0;/字符计数字符计数字符计数字符计数while(1)while(1)if(getche()=n)if(getche()=n)/如果输入的字符是回车符,则返如果输入的字符是回车符,则返如果输入的字符是回车符,则返如果输入的字符是回车符,则返回回回回 return;return;num+;num+;(4)(4)(4)(4)在执行在执行在执行在执行whilewhilewhilewhile语句之前,循环控制变量必须初始化,语句之前,循
12、环控制变量必须初始化,语句之前,循环控制变量必须初始化,语句之前,循环控制变量必须初始化,否则执行的结果将是不可预知的。否则执行的结果将是不可预知的。否则执行的结果将是不可预知的。否则执行的结果将是不可预知的。(5)(5)(5)(5)要在要在要在要在whilewhilewhilewhile语句的某处(表达式或循环体内)改变语句的某处(表达式或循环体内)改变语句的某处(表达式或循环体内)改变语句的某处(表达式或循环体内)改变循环控制变量,否则极易构成死循环。循环控制变量,否则极易构成死循环。循环控制变量,否则极易构成死循环。循环控制变量,否则极易构成死循环。(6)(6)(6)(6)允许允许允许允
13、许whilewhilewhilewhile语句的循环体又是语句的循环体又是语句的循环体又是语句的循环体又是whilewhilewhilewhile语句,从而形语句,从而形语句,从而形语句,从而形成双重循环。成双重循环。成双重循环。成双重循环。语语言言程程序序设设计计教教程程 第第六六章章 循循环环结结构构程程序序设设计计C whilewhilewhilewhile语句注意事项:语句注意事项:语句注意事项:语句注意事项:例:计算例:计算例:计算例:计算10!10!10!10!#include#include void main()void main()int i;int i;/i/i应赋初始值应
14、赋初始值应赋初始值应赋初始值1010 long s=1;long s=1;while(i=1)while(i=1)s*=i-;s*=i-;printf(10!=%ldn,s);printf(10!=%ldn,s);i=1;i=1;while(i 100)while(i 100)/死循环,因为死循环,因为死循环,因为死循环,因为i i的值没变化,永远小于的值没变化,永远小于的值没变化,永远小于的值没变化,永远小于100100 sum+=i;sum+=i;printf(sum=%dn,sum);printf(sum=%dn,sum);i=1;i=1;while(i=9)while(i=9)j=1;
15、j=1;while(j=9)while(j=9)printf(%d*%d=%dn,i,j,i*j);printf(%d*%d=%dn,i,j,i*j);j+;j+;i+;i+;【例】求两个正整数的最大公因子。【例】求两个正整数的最大公因子。【例】求两个正整数的最大公因子。【例】求两个正整数的最大公因子。我们采用我们采用我们采用我们采用EuclidEuclid(欧几里德)算法来求最大公因子,其算法是:(欧几里德)算法来求最大公因子,其算法是:(欧几里德)算法来求最大公因子,其算法是:(欧几里德)算法来求最大公因子,其算法是:(1)(1)输入两个正整数输入两个正整数输入两个正整数输入两个正整数mm
16、和和和和n n。(2)(2)用用用用mm除以除以除以除以n n,余数为,余数为,余数为,余数为r r,如果,如果,如果,如果r r等于等于等于等于0 0,则,则,则,则n n是最大公因子,算法结是最大公因子,算法结是最大公因子,算法结是最大公因子,算法结束,否则束,否则束,否则束,否则(3)(3)。(3)(3)把把把把n n赋给赋给赋给赋给mm,把,把,把,把r r赋给赋给赋给赋给n n,转,转,转,转(2)(2)。#include#include void main()void main()int m,n,r;int m,n,r;printf(Please input two positiv
17、e integer:);printf(Please input two positive integer:);scanf(%d%d,&m,&n);scanf(%d%d,&m,&n);while while(n!=0)(n!=0)r=m%n;r=m%n;/求余数求余数求余数求余数 m=n;m=n;n=r;n=r;printf(Their greatest common divisor is%dn,m);printf(Their greatest common divisor is%dn,m);运行结果:运行结果:运行结果:运行结果:Please input two positive intege
18、r:24 56Please input two positive integer:24 56 Their greatest common divisor is 8Their greatest common divisor is 8语语言言程程序序设设计计教教程程 第第六六章章 循循环环结结构构程程序序设设计计C2.do_while2.do_while2.do_while2.do_while语句语句语句语句 语语言言程程序序设设计计教教程程 第第六六章章 循循环环结结构构程程序序设设计计C 一般形式:一般形式:一般形式:一般形式:do do do do 循环体语句;循环体语句;循环体语句;循环体
19、语句;while(while(while(while(表达式表达式表达式表达式););););执行流程:执行流程:执行流程:执行流程:其中:其中:其中:其中:l l whilewhilewhilewhile后面的括号(后面的括号(后面的括号(后面的括号()不能省。)不能省。)不能省。)不能省。l l whilewhilewhilewhile最后面的分号最后面的分号最后面的分号最后面的分号;不能省。不能省。不能省。不能省。l l whilewhilewhilewhile后面的表达式可以是任意类型后面的表达式可以是任意类型后面的表达式可以是任意类型后面的表达式可以是任意类型的表达式,但一般是条件表
20、达式或逻辑的表达式,但一般是条件表达式或逻辑的表达式,但一般是条件表达式或逻辑的表达式,但一般是条件表达式或逻辑表达式。表达式。表达式。表达式。l l 表达式的值是是循环的控制条件。表达式的值是是循环的控制条件。表达式的值是是循环的控制条件。表达式的值是是循环的控制条件。l l 语句部分称为循环体,当需要执行多语句部分称为循环体,当需要执行多语句部分称为循环体,当需要执行多语句部分称为循环体,当需要执行多条语句时,应使用复合语句条语句时,应使用复合语句条语句时,应使用复合语句条语句时,应使用复合语句。F F T Texprexpr循环体循环体循环体循环体dodowhilewhile特点:先执行
21、循环体,再判断表达式特点:先执行循环体,再判断表达式特点:先执行循环体,再判断表达式特点:先执行循环体,再判断表达式语语言言程程序序设设计计教教程程 第第六六章章 循循环环结结构构程程序序设设计计C【例】【例】【例】【例】用用用用do_whiledo_whiledo_whiledo_while语句求语句求语句求语句求1 1 1 1100100100100的累计和。的累计和。的累计和。的累计和。#include#include void main()void main()int i=1,sum=0;int i=1,sum=0;do do sum+=i;sum+=i;i+;i+;while(i=1
22、00);while(i 0);while(a 0);(1)(1)(1)(1)如果如果如果如果do-whiledo-whiledo-whiledo-while后的表达式的值一开始就为假,循环后的表达式的值一开始就为假,循环后的表达式的值一开始就为假,循环后的表达式的值一开始就为假,循环体还是要执行一次。体还是要执行一次。体还是要执行一次。体还是要执行一次。(2)(2)(2)(2)在在在在ifififif语句、语句、语句、语句、whilewhilewhilewhile语句中,表达式后面都不能加分号,语句中,表达式后面都不能加分号,语句中,表达式后面都不能加分号,语句中,表达式后面都不能加分号,而在
23、而在而在而在do-whiledo-whiledo-whiledo-while语句的表达式后面则必须加分号,否则将产生语句的表达式后面则必须加分号,否则将产生语句的表达式后面则必须加分号,否则将产生语句的表达式后面则必须加分号,否则将产生语法错误。语法错误。语法错误。语法错误。(3)(3)(3)(3)循环体中的语句可为任意类型的循环体中的语句可为任意类型的循环体中的语句可为任意类型的循环体中的语句可为任意类型的C C C C语句。语句。语句。语句。(4)(4)(4)(4)和和和和whilewhilewhilewhile语句一样,在使用语句一样,在使用语句一样,在使用语句一样,在使用do-whil
24、edo-whiledo-whiledo-while语句时,不要语句时,不要语句时,不要语句时,不要忘记初始化循环控制变量,否则执行的结果将是不可预知的。忘记初始化循环控制变量,否则执行的结果将是不可预知的。忘记初始化循环控制变量,否则执行的结果将是不可预知的。忘记初始化循环控制变量,否则执行的结果将是不可预知的。(5)(5)(5)(5)要在要在要在要在do-whiledo-whiledo-whiledo-while语句的某处(表达式或循环体内)改语句的某处(表达式或循环体内)改语句的某处(表达式或循环体内)改语句的某处(表达式或循环体内)改变循环控制变量的值,否则极易构成死循环。变循环控制变量
25、的值,否则极易构成死循环。变循环控制变量的值,否则极易构成死循环。变循环控制变量的值,否则极易构成死循环。(6)do-while (6)do-while (6)do-while (6)do-while语句也可以组成多重循环,而且也可以和语句也可以组成多重循环,而且也可以和语句也可以组成多重循环,而且也可以和语句也可以组成多重循环,而且也可以和whilewhilewhilewhile语句相互嵌套。语句相互嵌套。语句相互嵌套。语句相互嵌套。3.for3.for3.for3.for语句语句语句语句 语语言言程程序序设设计计教教程程 第第六六章章 循循环环结结构构程程序序设设计计C 一般形式:一般形式
26、:一般形式:一般形式:for(for(for(for(表达式表达式表达式表达式1 1 1 1;表达式;表达式;表达式;表达式2 2 2 2;表达式;表达式;表达式;表达式3)3)3)3)循环体语句;循环体语句;循环体语句;循环体语句;执行流程:执行流程:执行流程:执行流程:其中:其中:其中:其中:l l forforforfor后面的括号(后面的括号(后面的括号(后面的括号()不能省。)不能省。)不能省。)不能省。l l 表达式表达式表达式表达式1 1 1 1:一般为赋值表达式,给控一般为赋值表达式,给控一般为赋值表达式,给控一般为赋值表达式,给控制变量赋初值。制变量赋初值。制变量赋初值。制变
27、量赋初值。l l 表达式表达式表达式表达式2 2 2 2:关系表达式或逻辑表达式,关系表达式或逻辑表达式,关系表达式或逻辑表达式,关系表达式或逻辑表达式,循环控制条件。循环控制条件。循环控制条件。循环控制条件。l l 表达式表达式表达式表达式3 3 3 3:一般为赋值表达式,给控一般为赋值表达式,给控一般为赋值表达式,给控一般为赋值表达式,给控制变量增量或减量。制变量增量或减量。制变量增量或减量。制变量增量或减量。l l 表达式之间用分号分隔。表达式之间用分号分隔。表达式之间用分号分隔。表达式之间用分号分隔。l l 语句部分称为循环体,当需要执行多语句部分称为循环体,当需要执行多语句部分称为循
28、环体,当需要执行多语句部分称为循环体,当需要执行多条语句时,应使用复合语句。条语句时,应使用复合语句。条语句时,应使用复合语句。条语句时,应使用复合语句。FTexpr2expr2循环体循环体循环体循环体forforexpr1expr1expr3expr3forforforfor语句很好地体现了正确表达循环结构应注意的三个问题:语句很好地体现了正确表达循环结构应注意的三个问题:语句很好地体现了正确表达循环结构应注意的三个问题:语句很好地体现了正确表达循环结构应注意的三个问题:控制变量的初始化。控制变量的初始化。控制变量的初始化。控制变量的初始化。循环的条件。循环的条件。循环的条件。循环的条件。循
29、环控制变量的更新。循环控制变量的更新。循环控制变量的更新。循环控制变量的更新。语语言言程程序序设设计计教教程程 第第六六章章 循循环环结结构构程程序序设设计计C【例】【例】【例】【例】用用用用forforforfor语句求语句求语句求语句求1 1 1 1100100100100的累计和。的累计和。的累计和。的累计和。#include#include void main()void main()int i,sum=0;int i,sum=0;for(i=1;i=100;i+)for(i=1;i=100;i+)sum+=i;sum+=i;printf(sum=%dn,sum);printf(sum
30、=%dn,sum);运行结果:运行结果:运行结果:运行结果:sum=5050sum=5050语语言言程程序序设设计计教教程程 第第六六章章 循循环环结结构构程程序序设设计计C forforforfor语句注意事项:语句注意事项:语句注意事项:语句注意事项:例:计算例:计算例:计算例:计算1*2+3*4+5*6+99*1001*2+3*4+5*6+99*100。int i,j;int i,j;long sum=0;long sum=0;for(i=1,j=2;i=99;i=i+2,j=j+2)for(i=1,j=2;i=99;i=i+2,j=j+2)sum+=i*j;sum+=i*j;print
31、f(sum=%ldn,sum);printf(sum=%ldn,sum);(1)(1)(1)(1)表达式表达式表达式表达式1 1 1 1、表达式、表达式、表达式、表达式2 2 2 2、和表达式、和表达式、和表达式、和表达式3 3 3 3可以是任何类型的表可以是任何类型的表可以是任何类型的表可以是任何类型的表达式。比方说,这三个表达式都可以是逗号表达式,即每个表达式。比方说,这三个表达式都可以是逗号表达式,即每个表达式。比方说,这三个表达式都可以是逗号表达式,即每个表达式。比方说,这三个表达式都可以是逗号表达式,即每个表达式都可由多个表达式组成。达式都可由多个表达式组成。达式都可由多个表达式组成
32、。达式都可由多个表达式组成。逗号表达式逗号表达式逗号表达式逗号表达式逗号表达式逗号表达式逗号表达式逗号表达式#include#include void main()void main()int i,sum=0;int i,sum=0;i=1;i=1;for(;i=100;i+)for(;i=100;i+)sum+=i;sum+=i;printf(sum=%dn,sum);printf(sum=%dn,sum);#include#include void main()void main()int i,sum=0;int i,sum=0;i=1;i=1;for(;i=100;)for(;i=100
33、;)sum+=i+;sum+=i+;printf(sum=%dn,sum);printf(sum=%dn,sum);语语言言程程序序设设计计教教程程 第第六六章章 循循环环结结构构程程序序设设计计C forforforfor语句注意事项:语句注意事项:语句注意事项:语句注意事项:省掉表达式省掉表达式省掉表达式省掉表达式1,31,3省掉表达式省掉表达式省掉表达式省掉表达式1 1 (2)(2)(2)(2)表达式表达式表达式表达式1 1 1 1、表达式、表达式、表达式、表达式2 2 2 2、和表达式、和表达式、和表达式、和表达式3 3 3 3都是任选项,可以都是任选项,可以都是任选项,可以都是任选项
34、,可以省掉其中的一个、两个或全部,但其用于间隔的分号是一个省掉其中的一个、两个或全部,但其用于间隔的分号是一个省掉其中的一个、两个或全部,但其用于间隔的分号是一个省掉其中的一个、两个或全部,但其用于间隔的分号是一个也不能省的。也不能省的。也不能省的。也不能省的。#include#include void main()void main()int i,sum=0;int i,sum=0;i=1;i=1;for(;)for(;)if(i 100)break;if(i 100)break;sum+=i+;sum+=i+;printf(sum=%dn,sum);printf(sum=%dn,sum);
35、省掉表达式省掉表达式省掉表达式省掉表达式1,2,31,2,3语语言言程程序序设设计计教教程程 第第六六章章 循循环环结结构构程程序序设设计计C forforforfor语句注意事项:语句注意事项:语句注意事项:语句注意事项:for(a=1;a+)for(a=1;a+)printf(&dn,a);printf(&dn,a);(3)(3)(3)(3)表达式表达式表达式表达式2 2 2 2如果为空则相当于表达式如果为空则相当于表达式如果为空则相当于表达式如果为空则相当于表达式2 2 2 2的值是真的值是真的值是真的值是真。死循环!死循环!死循环!死循环!(4)(4)(4)(4)循环体中的语句可为任意
36、类型的循环体中的语句可为任意类型的循环体中的语句可为任意类型的循环体中的语句可为任意类型的C C C C语句。语句。语句。语句。(5)for (5)for (5)for (5)for语句也可以组成多重循环,而且也可以和语句也可以组成多重循环,而且也可以和语句也可以组成多重循环,而且也可以和语句也可以组成多重循环,而且也可以和whilewhilewhilewhile语语语语句和句和句和句和do-whiledo-whiledo-whiledo-while语句相互嵌套。语句相互嵌套。语句相互嵌套。语句相互嵌套。(6)(6)(6)(6)循环体可以是空语句。循环体可以是空语句。循环体可以是空语句。循环体
37、可以是空语句。例:计算用户输入的字符数(当输入是回车例:计算用户输入的字符数(当输入是回车例:计算用户输入的字符数(当输入是回车例:计算用户输入的字符数(当输入是回车符时统计结束符时统计结束符时统计结束符时统计结束)。#include#include void main()void main()int n=0;int n=0;printf(input a string:n);printf(input a string:n);for(;getchar()!=n;n+)for(;getchar()!=n;n+);printf(%d,n);printf(%d,n);表示循环体为空语表示循环体为空语表
38、示循环体为空语表示循环体为空语句,并非表示句,并非表示句,并非表示句,并非表示forforforfor语语语语句结束句结束句结束句结束 三种循环可互相嵌套三种循环可互相嵌套三种循环可互相嵌套三种循环可互相嵌套,层数不限层数不限层数不限层数不限 外层循环可包含两个以上内循环外层循环可包含两个以上内循环外层循环可包含两个以上内循环外层循环可包含两个以上内循环,但不能相互交叉但不能相互交叉但不能相互交叉但不能相互交叉 嵌套循环的执行流程嵌套循环的执行流程嵌套循环的执行流程嵌套循环的执行流程(1)while()(1)while()while()while().(2)do(2)do do do whil
39、e();while();.while();while();(3)while()(3)while()do do while();while();.嵌套循环的跳转嵌套循环的跳转嵌套循环的跳转嵌套循环的跳转禁止:禁止:禁止:禁止:l l 从外层跳入内层从外层跳入内层从外层跳入内层从外层跳入内层l l 跳入同层的另一循环跳入同层的另一循环跳入同层的另一循环跳入同层的另一循环l l 向上跳转向上跳转向上跳转向上跳转语语言言程程序序设设计计教教程程 第第六六章章 循循环环结结构构程程序序设设计计C4.4.4.4.循环嵌套循环嵌套循环嵌套循环嵌套 (4)for(;)(4)for(;)do do while(
40、);while();while()while().外循环外循环外循环外循环内循环内循环内循环内循环内循环内循环内循环内循环【例】【例】【例】【例】循环嵌套,输出九九表循环嵌套,输出九九表循环嵌套,输出九九表循环嵌套,输出九九表1234567891234567892468101214161836912151821242791827364554637281.ij语语言言程程序序设设计计教教程程 第第六六章章 循循环环结结构构程程序序设设计计C#include#include void main()void main()int i,j;int i,j;for(i=1;i 10;i+)for(i=1;
41、i 10;i+)printf(%4d,i);printf(%4d,i);printf(n-n);printf(n-n);for(i=1;i 10;i+)for(i=1;i 10;i+)for(j=1;j 10;j+)for(j=1;j 10;j+)printf(j=9)?%4dn printf(j=9)?%4dn :%4d,i*j);:%4d,i*j);i10i10printfprintf假假假假(0)(0)(0)(0)真真真真(非非非非0)0)0)0)i=1i=1j+j+j=1j=1j10j10真真真真(非非非非0)0)0)0)假假假假(0)(0)(0)(0)i+i+外循环外循环外循环外循环
42、内循环内循环内循环内循环语语言言程程序序设设计计教教程程 第第六六章章 循循环环结结构构程程序序设设计计Cfor(i=1;i10;i+)for(i=1;i10;i+)for(j=1;j10;j+)for(j=1;j10;j+)printf(j=9)?%4dn:%4d,i*j);printf(j=9)?%4dn:%4d,i*j);语语言言程程序序设设计计教教程程 第第六六章章 循循环环结结构构程程序序设设计计C5.5.5.5.breakbreak与与与与continuecontinue语句语句语句语句 breakbreakbreakbreak语句语句语句语句功能:功能:功能:功能:在循环语句和在
43、循环语句和在循环语句和在循环语句和switchswitchswitchswitch语句中语句中语句中语句中,终止并跳出循环体终止并跳出循环体终止并跳出循环体终止并跳出循环体或开关体或开关体或开关体或开关体说明:说明:说明:说明:(1)break(1)break(1)break(1)break不能用于循环语句和不能用于循环语句和不能用于循环语句和不能用于循环语句和switchswitchswitchswitch语句之外的语句之外的语句之外的语句之外的任何其它语句之中。任何其它语句之中。任何其它语句之中。任何其它语句之中。(2)break(2)break(2)break(2)break只能只能只能
44、只能终止并跳出终止并跳出终止并跳出终止并跳出最近一层最近一层最近一层最近一层的结构的结构的结构的结构。while(while(表达式表达式表达式表达式1)1)if(if(表达式表达式表达式表达式2)2)break;break;语句语句语句语句dodo if(if(表达式表达式表达式表达式2)2)break;break;while(while(表达式表达式表达式表达式1);1);语句语句语句语句for(;for(;表达式表达式表达式表达式1;)1;)if(if(表达式表达式表达式表达式2)2)break;break;语句语句语句语句语语言言程程序序设设计计教教程程 第第六六章章 循循环环结结构构
45、程程序序设设计计C【例】【例】【例】【例】将用户输入的小写字母转换成大写字母,直将用户输入的小写字母转换成大写字母,直将用户输入的小写字母转换成大写字母,直将用户输入的小写字母转换成大写字母,直到输入非小写字母字符。到输入非小写字母字符。到输入非小写字母字符。到输入非小写字母字符。#include#include void main()void main()char c;char c;while(1)while(1)c=getchar();c=getchar();/读取一个字符读取一个字符读取一个字符读取一个字符 if(c=a&c=a&c=z)/是小写字母是小写字母是小写字母是小写字母 put
46、char(c-a+A);putchar(c-a+A);/输出其大写字母输出其大写字母输出其大写字母输出其大写字母 else else /不是小写字母不是小写字母不是小写字母不是小写字母 break;break;/循环退出循环退出循环退出循环退出 运行结果:运行结果:运行结果:运行结果:howareyouhowareyou HOWAREYOUHOWAREYOU 语语言言程程序序设设计计教教程程 第第六六章章 循循环环结结构构程程序序设设计计C 方法:方法:方法:方法:通过设置一标志通过设置一标志通过设置一标志通过设置一标志变量变量变量变量tagtag,然后在每层循环,然后在每层循环,然后在每层循
47、环,然后在每层循环后加上一条语句:后加上一条语句:后加上一条语句:后加上一条语句:if(tag)if(tag)break;break;其值为其值为其值为其值为1 1表示跳出循表示跳出循表示跳出循表示跳出循环体,为环体,为环体,为环体,为0 0则不跳出。则不跳出。则不跳出。则不跳出。for()for()while()while()if()break;if()break;while while循环后的第一条语句循环后的第一条语句循环后的第一条语句循环后的第一条语句 int tag=0;int tag=0;for()for()while()while()if()if()tag=1;tag=1;bre
48、ak;break;if(tag)break;if(tag)break;forfor循环后的第一条语句循环后的第一条语句循环后的第一条语句循环后的第一条语句 多重循环中,多重循环中,多重循环中,多重循环中,breakbreak的使用的使用的使用的使用问:在嵌套循环的问:在嵌套循环的问:在嵌套循环的问:在嵌套循环的情况下,如何让情况下,如何让情况下,如何让情况下,如何让breakbreakbreakbreak语句跳出最外语句跳出最外语句跳出最外语句跳出最外层的的循环体?层的的循环体?层的的循环体?层的的循环体?语语言言程程序序设设计计教教程程 第第六六章章 循循环环结结构构程程序序设设计计Ccon
49、tinuecontinuecontinuecontinue语句语句语句语句功能:功能:功能:功能:结束本次循环,跳过结束本次循环,跳过结束本次循环,跳过结束本次循环,跳过循环体中循环体中循环体中循环体中尚未执行的语句,尚未执行的语句,尚未执行的语句,尚未执行的语句,进行下一次是否执行循环体的判断。进行下一次是否执行循环体的判断。进行下一次是否执行循环体的判断。进行下一次是否执行循环体的判断。说明:说明:说明:说明:(1)(1)(1)(1)仅用于循环语句中仅用于循环语句中仅用于循环语句中仅用于循环语句中。(2)(2)(2)(2)在嵌套循环的情况下,在嵌套循环的情况下,在嵌套循环的情况下,在嵌套循
50、环的情况下,continuecontinuecontinuecontinue语句只对包含语句只对包含语句只对包含语句只对包含它的它的它的它的最内层最内层最内层最内层的循环体语句起作用。的循环体语句起作用。的循环体语句起作用。的循环体语句起作用。for()for()while()while()if()if()continue;continue;while while循环后的第一条语句循环后的第一条语句循环后的第一条语句循环后的第一条语句 语语言言程程序序设设计计教教程程 第第六六章章 循循环环结结构构程程序序设设计计C【例】【例】【例】【例】求输入的十个整数中正数的个数及其平均值。求输入的十个整