1、 C语言有语言有while、do-while、和、和for语句三种循环结构语句。语句三种循环结构语句。6.1 循环语句概述循环语句概述二、二、while语句的执行过程语句的执行过程1 1、求解表达式。如果其值为真、求解表达式。如果其值为真(非非0)0),转第,转第2 2步;否则转第步;否则转第3 3步。步。2 2、执行循环体语句组,然后转、执行循环体语句组,然后转1 1。3 3、执行、执行whilewhile语句的下一条语句。语句的下一条语句。真真假假假假一、一、while语句的一般形式语句的一般形式while (表达式表达式)循环体语句组循环体语句组 表达式表达式为为循环控制条件循环控制条件
2、真真假假假假二、二、dowhile语句执行流程语句执行流程 1 1、执行循环体语句组。、执行循环体语句组。2 2、计算、计算“循环继续条件循环继续条件”表达式表达式,如果如果“循环继续条件循环继续条件”表达式的值为非表达式的值为非0 0(真),(真),则转向则转向1 1继续执行;否则,转继续执行;否则,转向向3 3。3 3、执行执行do-whiledo-while的下一条的下一条语句。语句。假真真假假一、一、dowhile 语句的一般形式是语句的一般形式是:do 循环体语句组循环体语句组 while (循环继续表达式循环继续表达式);假真真假假循环条件第一次就为假(如循环条件第一次就为假(如输
3、入输入-1)时会怎样?)时会怎样?二、执行流程二、执行流程 1 1、求解表达式、求解表达式1 1。2 2、求解表达式、求解表达式2 2。如果其值为真。如果其值为真 (非非0)0),执行第,执行第3 3步;否则,转步;否则,转 至第至第4 4步。步。3 3、执行循环体语句组,并求解表、执行循环体语句组,并求解表达式达式3 3,然后转向,然后转向2 2。4 4、执行、执行forfor语句的下一条语句。语句的下一条语句。6.4 for语句语句 一、一般形式:一、一般形式:for(for(表达式表达式1;1;表达式表达式2;2;表达式表达式3)3)循环体语句组循环体语句组 sum=0的作用?的作用?如
4、何减少循环次数如何减少循环次数2 2功能功能 (1 1)breakbreak:强行结束其所在的那一层循环。:强行结束其所在的那一层循环。(2 2)continuecontinue:强行结束本次循环。对于:强行结束本次循环。对于forfor循循环,跳过循环体其余语句,转向循环变量增量表达环,跳过循环体其余语句,转向循环变量增量表达式的计算;对于式的计算;对于whilewhile和和do-whiledo-while循环,跳过循环体循环,跳过循环体其余语句,但转向循环继续条件的判定。其余语句,但转向循环继续条件的判定。3 3breakbreak和和continuecontinue语句对循环控制的影响
5、如下:语句对循环控制的影响如下:二、二、gotogoto语句语句gotogoto被称为无条件转移语句。由两部分组成:被称为无条件转移语句。由两部分组成:goto goto 标号标号;标号标号:语句语句 “瞎猫碰死耗子瞎猫碰死耗子”“死循环死循环”标准库函数,标准库函数,作用是终止整作用是终止整个程序的执行,个程序的执行,强制返回操作强制返回操作系统系统 结构清晰的结构清晰的程序程序 循环语句的循环体内,又包含另一个完整的循环语句的循环体内,又包含另一个完整的循环结构,称为循环的嵌套。循环结构,称为循环的嵌套。嵌套在循环体内的嵌套在循环体内的循环称语句称为内循环,外面的循环语句称为外循环称语句称
6、为内循环,外面的循环语句称为外循环。如果内循环体中又有嵌套的循环语句,称循环。如果内循环体中又有嵌套的循环语句,称为多层循环。为多层循环。While、do-while、for三种循环都三种循环都可以互相嵌套。可以互相嵌套。6.6 循环的循环的嵌套嵌套例例6.3 输入输入n值,计算并输出值,计算并输出 1!+2!+3!+n!每次单独计算每次单独计算累加项累加项利用前项利用前项计算后项计算后项例例6.3 输入输入n值,计算并输出值,计算并输出 1!+2!+3!+n!C语言允许循环语句与分支结构语句联用,语言允许循环语句与分支结构语句联用,即循环体内可包含一个完整的分支结构,也可以即循环体内可包含一
7、个完整的分支结构,也可以在分支结构下包含一个完整的循环体。这样的程在分支结构下包含一个完整的循环体。这样的程序结构被称为复合程序结构,复合程序结构同样序结构被称为复合程序结构,复合程序结构同样必须做到嵌套层次清楚。(即搞清楚分支结构的必须做到嵌套层次清楚。(即搞清楚分支结构的范围以及循环体的范围)范围以及循环体的范围)6.7 复合结构程序举例复合结构程序举例参考源程序如下:参考源程序如下:#include#include main()main()int n=11,j;int n=11,j;for(;n=100;n+=2)for(;n=100;n+=2)for(i=2;i=sqrt(n);i+)
8、for(i=2;isqrt(n)if(i sqrt(n)printf(%6d,n);printf(%6d,n);循环嵌套时,循环嵌套时,breakbreak和和continuecontinue只影响包含它只影响包含它们的最内层循环,与外层们的最内层循环,与外层循环无关,而循环无关,而gotogoto可以跳可以跳出多重循环。出多重循环。例例6.5:6.5:猜数游戏。由计算机猜数游戏。由计算机“想想”一个一个100100以内的数以内的数请你猜,如果你猜对了,则结束游戏,否则计算机请你猜,如果你猜对了,则结束游戏,否则计算机给出提示,告诉你所猜的数是太大还是太小,直到给出提示,告诉你所猜的数是太大还
9、是太小,直到你猜中为止。计算机记录你猜的次数,以此可以反你猜中为止。计算机记录你猜的次数,以此可以反映出你猜的水平。映出你猜的水平。#include#include main()int magic;int guess;int counter=0;randomize();magic=random(100);do printf(nguess the magic number:);scanf(%d,&guess);counter+;if(guessmagic)printf(*Wrong*too bign);else if(guessmagic)printf(*Wrong*too smalln);wh
10、ile(guess!=magic);printf(*Right*n);printf(guess counter is%dn,counter);getch();简单语句简单语句 表达式语句表达式语句(表达式表达式;)函数调用语句函数调用语句(函数名函数名(参数表参数表);)空语句空语句(;)复合语句复合语句(一条或多条语句一条或多条语句)条件语句条件语句(if语句,语句,switch语句语句)结构化语句结构化语句 while语句语句 循环语句循环语句 dowhile语句语句 for语句语句流程控制语句流程控制语句 break语句语句 非结构化语句非结构化语句 continue语句语句 return语句语句 非限定转向语句(非限定转向语句(goto语句)语句)语言数据操作语句语言数据操作语句C C