| 
 
| for(;;)语句; 这是一个死循环,一般用条件表达式加break语句在循环体内适当位置,一旦条件满足时,
 用break语句跳出for循环。
 例如,在编制菜单控制程序时,可以如下:
 for(;;)
 {
 printf("please input choice(Q=Exit):");显/*示菜单语句块:*/
 scanf("%c",&ch);
 if(ch=='Q')or(ch=='q')break;语/*句段*/
 }
 b.for(;表达式2;表达式3)
 使用条件是:循环控制变量的初值不是已知常量,而是在前面通过计算得到,例如:
 i=m-n;
 ⋯⋯
 for(;i<k;i++)语句;
 c.for(表达式1;表达式2;)语句
 一般当循环控制变量非规则变化,而且循环体中有更新控制变量的语句时使用。
 例如:
 for(i=1;i<=100;)
 {
 ⋯⋯
 i=i*2+1;
 ⋯⋯
 }
 d.for(i=1,j=n;i<j;i++,j--)语句;
 在for语句中,表达式1、表达式3都可以有一项或多项,如本例中,表达式1同时为i和j赋
 初值,表达式3同时改变i和j的值。当有不止一项时,各项之间用逗号“,”分隔。
 另外,C语言还允许在循环体内改变循环变量的值,这在某些程序的设计中是很有用的。
 到此,我们已经学习了C语言中三种循环控制语句while、do...while和for语句,下面再讨论两个问题:
 三种语句的选用
 同一个问题,往往既可以用while语句解决,也可以用do...while或者for语句来解决,但在
 实际应用中,应根据具体情况来选用不同的循环语句,选用的一般原则是:
 1)如果循环次数在执行循环体之前就已确定,一般用for语句;如果循环次数是由循环体
 的执行情况确定的,一般用while语句或者do...while语句。
 2)当循环体至少执行一次时,用do...while语句,反之,如果循环体可能一次也不执行,
 选用while语句。
 循环的嵌套
 一个循环的循环体中有另一个循环叫循环嵌套。这种嵌套过程可以有很多重。一个循环
 外面仅包围一层循环叫二重循环;一个循环外面包围两层循环叫三重循环;一个循环外面包
 围多层循环叫多重循环。
 三种循环语句for、while、do...while可以互相嵌套自由组合。但要注意的是,各循环必须
 完整,相互之间绝不允许交叉。如下面这种形式是不允许的:
 do
 {
 for(;;)
 {
 ......
 }while();
 }
 [例3-15]打印8行7列的星形矩阵。
 程序如下:
 
 #include<stdio.h>
 main()
 {
 inti,j;
 for(i=0;i<8,i++)/*控制行*/
 {
 for(j=0;j<7>;j++)/*控制列*/
 printf("*");
 printf("\n");/*换行*/
 }
 }
 打印结果如下:
 RUN
 *******
 *******
 *******
 *******
 *******
 *******
 *******
 *******
 将程序中for(j=0;j<7;j++)改为for(j=0;j<i;j++),用行数来控制每行星号的多少,就可以
 打印三角形。
 3.4.4break与continue语句
 有时,我们需要在循环体中提前跳出循环,或者在满足某种条件下,不执行循环中剩下
 的语句而立即从头开始新的一轮循环,这时就要用到break和continue语句。
 1.break语句
 在前面学习switch语句时,我们已经接触到break语句,在case子句执行完后,通过break
 语句使控制立即跳出switch结构。在循环语句中,break语句的作用是在循环体中测试到应立
 即结束循环时,使控制立即跳出循环结构,转而执行循环语句后的语句。
 [例3-16]打印半径为1到10的圆的面积,若面积超过100,则不予打印。
 #include<stdio.h>
 main()
 {
 intr;
 float area;
 for(r=1;r<=10;r++)
 {
 area=3.141593*r*r;
 if(area>100.0)
 break;
 printf("square=%f\n",area);
 }
 printf("nowr=%d\n",r);
 }运行程序:
 RUN
 square=3.141593
 square=12.566373
 square=28.274338
 square=50.265488
 square=78.539825
 nowr=6
 当break处于嵌套结构中时,它将只跳出最内层结构,而对外层结构无影响。
 | 
 |