当前位置:
文档之家› do-while语句 for语句 循环结构的嵌套
do-while语句 for语句 循环结构的嵌套
main() /*程序4 */ for语句的非常规使用方法2 { int i=1, sum=0; 三个表达式都被省掉了! 分隔符“ ;”不能省。 for ( ; ; ) {sum= sum + i++ ; 由于没有了表达式2, if i>100 goto pend; 用goto语句结束循环。 } pend: printf(“sum=%d\n”, sum); }
main( ) {float r, s ; for(r=0.5; r<=5.5; r++ ) {s=3.14159*r*r ; printf("r=%f,s=%f\n", r, s); } }
5.5 循环结构的嵌套
在一个循环语句的循环体内又完整地包 含了另一个循环语句,称为循环嵌套。
例5.5 循环嵌套的应用--输出九九乘法表。
main() /*程序5 */ 循环体语句是一个空语句! { int i, sum=0; for (i=1; i<=100 ; sum=sum+i++ ); printf(“sum=%d\n”, sum); }
注意在循环体语句之前不能有分号
main() main() { sum=0; { int i, int i, sum=0; for i<=100; i++) ; for (i=1 ; (i=1 ; i<=100; i++) ; sum= ; sum= sum + isum + i ; printf("sum=%d\n", printf("sum=%d\n", sum);sum); } /*前面两个程序的执行过程*/ } main() { int i, sum=0; for (i=1 ; i<=100; i++); sum= sum + i ; printf("sum=%d\n", sum); } 即:循环体语句是一个空语句!
for语句的常规使用方法: “表达式1”用来给循环变量赋初值或做一些初始 工作; “表达式2”用来作为判断循环是否结束的条件; “表达式3”用来修改循环变量的值,使得循环能 够趋于结束。
for语句的常规使用方法例
“表达式1”是逗号表达式 main() /*程序1 */ 做一些初始工作,准备累加! 给循环变量赋初值 { int i, sum; 判断循环是否结束! for (i=1,sum=0; i<=100; i++) sum= sum + i ; printf("sum=%d\n", sum); 使得循环能够趋于结束。 }
注意点:
do-while语句和while语句的区别在于do-while 是先执行循环体语句,后判断循环条件,因此 do-while至少要执行一次循环体。
用do-while语句改写例5.3的程序
题目:求1+2+3+…+100的值
main() { int i, sum; i=1; sum=0; do { sum= sum+i; i++; 这里一定要 }while(i<=100); 有一个分号 printf("sum=%d\n", sum); } 注意:N_S流程图的直到型循环结构的循环
在编写程序时,循环嵌套的书写要采用缩进形 式,如在例5.5的程序中,内循环中的语句应该比 外循环中的语句有规律地向右缩进2~4列。 main ( ) {int i, j; for(i=1; i<=9; i++) { for(j=1; j<= i; j++) printf("%1d*%1d =%2d ", i, j , i*j); printf("\n"); } }
条件的描述方法与C语言的do-while语句的 循环条件的测试方法稍有不同。
5.4 for语句和用for语句构成的循环
for语句的一般形式为: for (表达式1;表达式2;表达式3) 循环体语句 for循环语句的执行过程是: (1) 计算”表达式1”的值。 (2) 计算”表达式2”的值; 若其值为非零,转至步骤(3); 若其值为零,则转至步骤(5)。 (3) 执行一次循环体语句。 (4) 计算”表达式3”;然后转向步骤(2),构成循环。 (5) 结束循环,执行for循环之后的语句。
例5.5程序输出的九九乘法表
程序的运行结果为:
1*1= 1 2*1= 2 2*2= 4 3*1= 3 3*2= 6 3*3= 9 4*1= 4 4*2= 8 4*3=12 4*4=16 5*1= 5 5*2=10 5*3=15 5*4=20 5*5=25 6*1= 6 6*2=12 6*3=18 6*4=24 6*5=30 6*6=36 7*1= 7 7*2=14 7*3=21 7*4=28 7*5=35 7*6=42 7*7=49 8*1= 8 8*2=16 8*3=24 8*4=32 8*5=40 8*6=48 8*7=56 8*8=64 9*1= 9 9*2=18 9*3=27 9*4=36 9*5=45 9*6=54 9*7=63 9*8=72 9*9=81
for语句的非常规使用方法
从语法上来讲,三个表达式都可以是任意合法的C表达式, 各表达式之间用”;”隔开,并且这三个表达式都是任选项。 例如:我们可以用for循环语句将例5.3的程序改写为如下几 种形式,它们都能正确地求出1+2+3+…+100的值。
main() /*程序3 */ main() /*程序2 */ 表达式1和表达式3都省掉了! { int i=1, sum=0; 表达式1省略了! { int i=1, sum=0; for ( (; ; i<=100; ) i++) for i<=100; 循环体语句是复合语 {sum= sum + i; ; sum= sum + i 句,花括号不能省! i++ ; printf(“sum=%d\n”, sum); } } printf(“sum=%d\n”, sum); }
第十讲
do-while语句、for 语句 循环结构的嵌套
5.3 用do-while语句构成的循环
由do-while语句构成的循环称 为”直到型”循环,do-while语句 的一般形式为: do 循环体语句 while(表达式);
do-while语句的执行过程是:先执行循环体语句, 再求表达式的值,若表达式的值为“真”(非式的值为“假” (数值0)时结束循环。 如图所示。
例5.4 编程计算多个圆的面积
本例要求计算6个不同半径的圆面积, 且半径值的变化是有规律的,从0.5mm 开始按增1 mm的规律递增,可直接用半 径r作为for语句的循环控制变量,每循 环一次使r的值增1,直到r大于5.5为止。
变量r具有双 重功能,它既 是循环控制变 量,又是圆的 半径值,它的 值由0.5变化到 5.5,循环体共 执行6次,当r 增到6.0时,条 件表达式 r<=5.5的值为 0,从而退出循 环。