C语言 循环控制
合集下载
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
4)省略循环体 ) for (i = 1, sum = 0; i <= 100; sum = sum + i, i + + ) ; 循环体是空语句 for (i = 1, sum = 0; i <= 100; sum += i + + ) 或 ; for (i = 1, sum = 0; sum = sum + i, i < 100; i + + ) 或 ;
循环控制
13
for 语句(续2) 语句( )
3)省略 e3 ) for (i = 1, sum = 0; i <= 100; ) { sum sum + i; 循环体是复合语句 i = i + 1; }
(注:括号内分号均不能省略) 括号内分号均不能省略)
循环控制
for 语句(续3)
14
for 语句(续3) 语句( )
若从键盘输入 1,两个程序运行结果均为 55 , 若从键盘输入 11,前者结果为 0,后者结果为 11 , ,
循环控制
11
五 for 语句
1 语句形式 for ( e1; e2; e3 ) s 其中, 、 、 均为任意表达式, 其中,e1、e2、e3 均为任意表达式, e1 为循环变量赋初值 e2 循环条件 e3 改变循环控制变量
while语句 语句 do_while语句 语句 for 语句
C语言专门的循环控制语句 C语言专门的循环控制语句
2
二 用 goto 语句及 if 语句构成循环
1 goto 语句 goto 语句的一般形式 : goto label; ; label 用来标识一个语句的标识符,称为语句标号 用来标识一个语句的标识符, 标号和被标识的语句之间用冒号 冒号隔开 标号和被标识的语句之间用冒号隔开 正确的标号 b1 : a = a + b + c; 例: void main() { int i = 1, sum = 0; x = 5 + a; b2 : y = 3 + b; loop : if ( i <= 100 ) { sum = sum + i++; 错误的标号 goto loop; 1 : b = c + d; } 2 : e = x + y; printf(“%d\n”,sum); }
20
三种循环语句的比较( 六 三种循环语句的比较(书P73) )
for 最常用。任何循环都可实现。 最常用。任何循环都可实现。 while和do-while: 循环控制量初始化是在其语句 和 : 之前。 之前。 for :循环控制量初始化在语句的初期进行。 循环控制量初始化在语句的初期进行。 for 和while:先判断,再循环体。因此,循环体可 :先判断,再循环体。因此, 能一次都不执行。 能一次都不执行。 do-while:先执行循环体,在判断。至少执行一次 :先执行循环体,在判断。 循环体。 循环体
循环控制 for 语句(续 6)
17
for 语句(续 6) 语句( )
4 循环体可以是五种语句的任何一种 for ( i = 1, sum1 = sum2 = 0; i <= 100 ;i + +) { if ( i % 2 == 0 ) sum1 = sum1 + i ; 循环体是复合语句 else sum2 = sum2 + i ; printf(“i=%d,sum1=%d,sum2=%d\n”,i,sum1,sum2); }
循环控制 do_while语句
9
四 do_while语句 语句
1 一般形式 do s 循环体(五种语句之一) 循环体(五种语句之一) s while ( e ); 循环条件(任意表达式) 循环条件(任意表达式) ≠0 2 语句执行过程 e =0 1)执行语句 s ) 2)计算表达式 e ) 3)若 e 值非 0,转 1)继续执行,否则语句结束 ) , )继续执行, 3 特点 先执行语句 s,后判断条件,s 至少执行一次 ,后判断条件, 有一个循环控制变量,改变该变量的值, 有一个循环控制变量,改变该变量的值,使 e 的值变为 0 ,从而结束循环
第五节 循环控制
一 实现循环的四种方法 二 用 goto 语句及 if 语句构成循环 三 while语句 语句 四 do_while语句 语句 五 for 语句 六 三种循环语句的比较 七 break 语句和 continue语句 语句 八 举例
概述.ppt
1
一 实现循环的四种方法
不建议使用) 用 goto 语句及 if 语句构成循环(不建议使用)
while语句(续4)
8
while语句(续4) 语句( ) 语句
5)循环体是复合语句 ) 求 100 之内的所有偶数之和及奇数之和 void main( ) { int i,sum1,sum2; while ( e ) i = sum1 = sum2 = 0; { ……… while ( i <= 100 ) ……… { if ( i %2 == 0 ) while ( e1 ) sum1 = sum1 + i; s1 else ……… sum2 = sum2 + i; } i = i + 1; } printf(“偶数之和为%d,奇数之和为%d”,sum1,sum2); 偶数之和为% 奇数之和为 奇数之和为% 偶数之和为 }
while语句(续2)
6
while语句(续2) 语句( ) 语句
4 循环体的五种形式 1)循环体是表达式语句 ) i = 1; while ( i <= 100 ) sum = sum + i + +; 2)循环体是函数调用语句 ) while ( (ch = getchar() ) != ‘\n’ ) ’ i = 1; printf(“%c”,ch); while ( i <= 100 ) printf(“%d”,sum = sum + i + + ); 3)循环体是空语句 ) i = 1; while ( i + + <= 100 ) ; 延时
循环控制
for 语句(续 4)
15
for 语句(续 4) 语句( )
4 循环体的其它形式 for ( ; ( ch = getchar() ) != ‘\n’ ; ) printf(“%c”,ch); 循环体是函数调用语句 for ( i = 1, sum1 = sum2 = 0; i <= 100; i ++) if ( i % 2 == 0 ) sum1 = sum1 + i ; 循环体是控制语句 else sum2 = sum2 + i ;
循环控制
10
do_while语句(续) 语句( 语句
例:void main() { int i, sum = 0; scanf(“%d”,&i); while ( i <= 10 ) { sum = sum + i; i = i + 1; } printf(“%d\n”,sum); } void main() { int i, sum = 0; ; scanf(“%d”,&i); do { sum = sum + i; i = i + 1; } while ( i <= 10 ); printf(“%d\n”,sum); }
e1 e2
≠0 =0
s
2 执行过程 1)计算 e1 ) 2)计算 e2 ) 3)若 e2 值非 0 转 4),否则循环结束 ),否则循环结束 ) ), 4)执行 s,计算 e3,转 2) ) , , )
e3
for 语句(续1)
12
for 语句(续1) 语句( )
例:void main( ) { int i, sum = 0; for ( i = 1; i <= 100; i + +) sum = sum + i; 循环体是表达式语句 printf(“%d”,sum); } 3 for 循环的几种特殊形式(见书 P71: 几点说明) 循环的几种特殊形式( : 几点说明) 1)省略 e1 2)省略 e2 ) ) sum = 0; i = 1; for ( i = 1; ; i + + ) for ( ; i <= 100; i + + ) { if ( i > 100 ) break; sum = sum + i; sum = sum + 1; }
循环控制 for 语句(续 7)
18
for 语句(续 7) 语句( )
for ( e1; e2; e3 ) { ……… ……… for ( e4; e5; e6) s ……… }
循环嵌套的情况 循环嵌套的情况
循环控制 for 语句(续 8)
19
for 语句(续 8) 语句( )
例:从键盘输入数字 n(0 ~ 9),打印该数字的一个n×n方阵 ( ),打印该数字的一个 × 方阵 ),打印该数字的一个 void main() { int n, i, j; do { scanf(“%d”,&n); n=3 for ( i = 1; i <= n; i + + ) 3 3 3 i=1 { for ( j = 1; j <= n, j + + ) 3 3 3 i=2 printf(“%c”, n + ‘0’); 3 3 3 i=3 printf(“\n”); } 3 + 0x30 = 0x33 } while (n); 循环控制 }
while语句(续3)
i = 1; while ( i <= 100 ) ; 死循环
7
while语句续3) 语句( 语句 )
4)循环体是控制语句 ) 求 100 之内的所有偶数之和及奇数之和 void main( ) { int i,sum1,sum2; int i = sum1 = sum2 = 0; i = sum1 = sum2 = 0; 错 while ( + + i <= 100 ) while (i ++ <= 100) 错 if ( i %2 == 0 ) while (i ++ < 100) 正确 sum1 = sum1 + i; else sum2 = sum2 + i; printf(“偶数之和为%d,奇数之和为 偶数之和为% 奇数之和为d”,sum1,sum2); 偶数之和为 奇数之和为 }
while语句(续1)
=0
5
while语句(续1) 语句( ) 语句
之间所有整数之和( 求 1~100 之间所有整数之和(书:例5-2) ~ ) 例: void main() { int i = 1, sum = 0; 循环控制变量 i 初值 while ( i <= 100 ) 循环终止条件 { sum = sum + i; i = i + 1; 改变循环控制变量值 } printf(“%d\n”,sum); }
用 goto 语句及 if 语句构成循环(续) 3
语句构成循环( 用 goto 语句及 if 语句构成循环(续)
2 用goto 语句及 if 语句构成循环 求 1~100 之间所有整数之和 ~ 例: void main() { int i = 1, sum = 0; loop : if ( i <= 100 ) { sum = sum + i; i = i + 1; goto loop; } printf(“%d\n”,sum); }
循环控制
4
三 while语句 语句
1 语句形式 循环条件(任意表达式) 循环条件(任意表达式) while ( e ) s 循环体(五种语句之一) 循环体(五种语句之一) 2 语句执行过程 e ≠0 1)计算表达式 e ) s 2)若 e 值非 0 ,执行语句 s ,转 1) ) ) 3)若 e 值为 0 ,结束本语句的执行 ) 3 特点 的值, 先计算及判断 e 的值,后执行语句 s,s 有可能一 , 次 也不执行 有一个循环控制变量,改变该变量的值, 有一个循环控制变量,改变该变量的值,使 e 的值 变为 0 ,从而结束循环
循环控制 for 语句(续 5)
16
for 语句(续 5) 语句( )
for ( i = 1, sum1 = sum2 = 0; i <= 100 ;i ) if ( i % 2 == 0 ) { sum1 = sum1 + i ; 循环体是条件语句 i = i + 1; 条件语句的子句是复合语句 } else { sum2 = sum2 + i ; i = i + 1; }
循环控制
13
for 语句(续2) 语句( )
3)省略 e3 ) for (i = 1, sum = 0; i <= 100; ) { sum sum + i; 循环体是复合语句 i = i + 1; }
(注:括号内分号均不能省略) 括号内分号均不能省略)
循环控制
for 语句(续3)
14
for 语句(续3) 语句( )
若从键盘输入 1,两个程序运行结果均为 55 , 若从键盘输入 11,前者结果为 0,后者结果为 11 , ,
循环控制
11
五 for 语句
1 语句形式 for ( e1; e2; e3 ) s 其中, 、 、 均为任意表达式, 其中,e1、e2、e3 均为任意表达式, e1 为循环变量赋初值 e2 循环条件 e3 改变循环控制变量
while语句 语句 do_while语句 语句 for 语句
C语言专门的循环控制语句 C语言专门的循环控制语句
2
二 用 goto 语句及 if 语句构成循环
1 goto 语句 goto 语句的一般形式 : goto label; ; label 用来标识一个语句的标识符,称为语句标号 用来标识一个语句的标识符, 标号和被标识的语句之间用冒号 冒号隔开 标号和被标识的语句之间用冒号隔开 正确的标号 b1 : a = a + b + c; 例: void main() { int i = 1, sum = 0; x = 5 + a; b2 : y = 3 + b; loop : if ( i <= 100 ) { sum = sum + i++; 错误的标号 goto loop; 1 : b = c + d; } 2 : e = x + y; printf(“%d\n”,sum); }
20
三种循环语句的比较( 六 三种循环语句的比较(书P73) )
for 最常用。任何循环都可实现。 最常用。任何循环都可实现。 while和do-while: 循环控制量初始化是在其语句 和 : 之前。 之前。 for :循环控制量初始化在语句的初期进行。 循环控制量初始化在语句的初期进行。 for 和while:先判断,再循环体。因此,循环体可 :先判断,再循环体。因此, 能一次都不执行。 能一次都不执行。 do-while:先执行循环体,在判断。至少执行一次 :先执行循环体,在判断。 循环体。 循环体
循环控制 for 语句(续 6)
17
for 语句(续 6) 语句( )
4 循环体可以是五种语句的任何一种 for ( i = 1, sum1 = sum2 = 0; i <= 100 ;i + +) { if ( i % 2 == 0 ) sum1 = sum1 + i ; 循环体是复合语句 else sum2 = sum2 + i ; printf(“i=%d,sum1=%d,sum2=%d\n”,i,sum1,sum2); }
循环控制 do_while语句
9
四 do_while语句 语句
1 一般形式 do s 循环体(五种语句之一) 循环体(五种语句之一) s while ( e ); 循环条件(任意表达式) 循环条件(任意表达式) ≠0 2 语句执行过程 e =0 1)执行语句 s ) 2)计算表达式 e ) 3)若 e 值非 0,转 1)继续执行,否则语句结束 ) , )继续执行, 3 特点 先执行语句 s,后判断条件,s 至少执行一次 ,后判断条件, 有一个循环控制变量,改变该变量的值, 有一个循环控制变量,改变该变量的值,使 e 的值变为 0 ,从而结束循环
第五节 循环控制
一 实现循环的四种方法 二 用 goto 语句及 if 语句构成循环 三 while语句 语句 四 do_while语句 语句 五 for 语句 六 三种循环语句的比较 七 break 语句和 continue语句 语句 八 举例
概述.ppt
1
一 实现循环的四种方法
不建议使用) 用 goto 语句及 if 语句构成循环(不建议使用)
while语句(续4)
8
while语句(续4) 语句( ) 语句
5)循环体是复合语句 ) 求 100 之内的所有偶数之和及奇数之和 void main( ) { int i,sum1,sum2; while ( e ) i = sum1 = sum2 = 0; { ……… while ( i <= 100 ) ……… { if ( i %2 == 0 ) while ( e1 ) sum1 = sum1 + i; s1 else ……… sum2 = sum2 + i; } i = i + 1; } printf(“偶数之和为%d,奇数之和为%d”,sum1,sum2); 偶数之和为% 奇数之和为 奇数之和为% 偶数之和为 }
while语句(续2)
6
while语句(续2) 语句( ) 语句
4 循环体的五种形式 1)循环体是表达式语句 ) i = 1; while ( i <= 100 ) sum = sum + i + +; 2)循环体是函数调用语句 ) while ( (ch = getchar() ) != ‘\n’ ) ’ i = 1; printf(“%c”,ch); while ( i <= 100 ) printf(“%d”,sum = sum + i + + ); 3)循环体是空语句 ) i = 1; while ( i + + <= 100 ) ; 延时
循环控制
for 语句(续 4)
15
for 语句(续 4) 语句( )
4 循环体的其它形式 for ( ; ( ch = getchar() ) != ‘\n’ ; ) printf(“%c”,ch); 循环体是函数调用语句 for ( i = 1, sum1 = sum2 = 0; i <= 100; i ++) if ( i % 2 == 0 ) sum1 = sum1 + i ; 循环体是控制语句 else sum2 = sum2 + i ;
循环控制
10
do_while语句(续) 语句( 语句
例:void main() { int i, sum = 0; scanf(“%d”,&i); while ( i <= 10 ) { sum = sum + i; i = i + 1; } printf(“%d\n”,sum); } void main() { int i, sum = 0; ; scanf(“%d”,&i); do { sum = sum + i; i = i + 1; } while ( i <= 10 ); printf(“%d\n”,sum); }
e1 e2
≠0 =0
s
2 执行过程 1)计算 e1 ) 2)计算 e2 ) 3)若 e2 值非 0 转 4),否则循环结束 ),否则循环结束 ) ), 4)执行 s,计算 e3,转 2) ) , , )
e3
for 语句(续1)
12
for 语句(续1) 语句( )
例:void main( ) { int i, sum = 0; for ( i = 1; i <= 100; i + +) sum = sum + i; 循环体是表达式语句 printf(“%d”,sum); } 3 for 循环的几种特殊形式(见书 P71: 几点说明) 循环的几种特殊形式( : 几点说明) 1)省略 e1 2)省略 e2 ) ) sum = 0; i = 1; for ( i = 1; ; i + + ) for ( ; i <= 100; i + + ) { if ( i > 100 ) break; sum = sum + i; sum = sum + 1; }
循环控制 for 语句(续 7)
18
for 语句(续 7) 语句( )
for ( e1; e2; e3 ) { ……… ……… for ( e4; e5; e6) s ……… }
循环嵌套的情况 循环嵌套的情况
循环控制 for 语句(续 8)
19
for 语句(续 8) 语句( )
例:从键盘输入数字 n(0 ~ 9),打印该数字的一个n×n方阵 ( ),打印该数字的一个 × 方阵 ),打印该数字的一个 void main() { int n, i, j; do { scanf(“%d”,&n); n=3 for ( i = 1; i <= n; i + + ) 3 3 3 i=1 { for ( j = 1; j <= n, j + + ) 3 3 3 i=2 printf(“%c”, n + ‘0’); 3 3 3 i=3 printf(“\n”); } 3 + 0x30 = 0x33 } while (n); 循环控制 }
while语句(续3)
i = 1; while ( i <= 100 ) ; 死循环
7
while语句续3) 语句( 语句 )
4)循环体是控制语句 ) 求 100 之内的所有偶数之和及奇数之和 void main( ) { int i,sum1,sum2; int i = sum1 = sum2 = 0; i = sum1 = sum2 = 0; 错 while ( + + i <= 100 ) while (i ++ <= 100) 错 if ( i %2 == 0 ) while (i ++ < 100) 正确 sum1 = sum1 + i; else sum2 = sum2 + i; printf(“偶数之和为%d,奇数之和为 偶数之和为% 奇数之和为d”,sum1,sum2); 偶数之和为 奇数之和为 }
while语句(续1)
=0
5
while语句(续1) 语句( ) 语句
之间所有整数之和( 求 1~100 之间所有整数之和(书:例5-2) ~ ) 例: void main() { int i = 1, sum = 0; 循环控制变量 i 初值 while ( i <= 100 ) 循环终止条件 { sum = sum + i; i = i + 1; 改变循环控制变量值 } printf(“%d\n”,sum); }
用 goto 语句及 if 语句构成循环(续) 3
语句构成循环( 用 goto 语句及 if 语句构成循环(续)
2 用goto 语句及 if 语句构成循环 求 1~100 之间所有整数之和 ~ 例: void main() { int i = 1, sum = 0; loop : if ( i <= 100 ) { sum = sum + i; i = i + 1; goto loop; } printf(“%d\n”,sum); }
循环控制
4
三 while语句 语句
1 语句形式 循环条件(任意表达式) 循环条件(任意表达式) while ( e ) s 循环体(五种语句之一) 循环体(五种语句之一) 2 语句执行过程 e ≠0 1)计算表达式 e ) s 2)若 e 值非 0 ,执行语句 s ,转 1) ) ) 3)若 e 值为 0 ,结束本语句的执行 ) 3 特点 的值, 先计算及判断 e 的值,后执行语句 s,s 有可能一 , 次 也不执行 有一个循环控制变量,改变该变量的值, 有一个循环控制变量,改变该变量的值,使 e 的值 变为 0 ,从而结束循环
循环控制 for 语句(续 5)
16
for 语句(续 5) 语句( )
for ( i = 1, sum1 = sum2 = 0; i <= 100 ;i ) if ( i % 2 == 0 ) { sum1 = sum1 + i ; 循环体是条件语句 i = i + 1; 条件语句的子句是复合语句 } else { sum2 = sum2 + i ; i = i + 1; }