高级程序设计语言 吴凡 TEL:83202682 E-mail:cdwf@tom.com
高级程序设计语言 吴 凡 TEL: 83202682 E-mail: cdwf@tom.com
第六章循环控制 电子科技大学通信与信息工程学院
电子科技大学通信与信息工程学院 第六章 循环控制
概述 ●循环结构:在给定条件成立时,反复执行某程序 段,直到条件不成立为止 ●给定的条件称为循环条件,反复执行的程序段称为循 环体 实现循环的四种语句 用goto语句和语句构成循环;(不提倡) 用 While语句;( While型循环,先判断,再执行) ●用 do-while语句;(先执行,再判断) ●用fo语句;(多功能) 电子科技大学通信与信息工程学院
电子科技大学通信与信息工程学院 概述 ⚫ 循环结构:在给定条件成立时,反复执行某程序 段,直到条件不成立为止。 ⚫ 给定的条件称为循环条件,反复执行的程序段称为循 环体。 ⚫ 实现循环的四种语句 ⚫ 用goto语句和if语句构成循环;(不提倡) ⚫ 用while语句;(while型循环,先判断,再执行) ⚫ 用do-while语句;(先执行,再判断) ⚫ 用for语句;(多功能)
goto语句以及用goto语句构成循环 goto语句功能:无条件地转向语句标号所在的语句行出开 始执行 格式为:goto语句标号; 语句标号:属于标识符,命名规则与变量相同 ●不提倡使用,会破坏结构化, 例 例:求1+2+3.+100的和 include stdio. h for main o for(...) int sum= 0 if (disaster) 1oop:if(i<=100){ goto error Sum Sun 1++; goto loop; error: printf("ERROR\n) printf("sum d\n", sum)i 电子科技大
电子科技大学通信与信息工程学院 goto语句以及用goto语句构成循环 ⚫ goto语句功能:无条件地转向语句标号所在的语句行出开 始执行 ⚫ 格式为: goto 语句标号; ⚫ 语句标号:属于标识符,命名规则与变量相同 ⚫ 不提倡使用,会破坏结构化, ⚫ 例: 例:求1+2+3…+100的和 for ( ... ) for ( ... ) { ... if (disaster) goto error; } ... error: printf(“ERROR\n”); #include "stdio.h" main() { int sum = 0, i = 1; loop: if (i<=100){ sum = sum + i; i++; goto loop; } printf("sum = %d\n",sum); }
While语句 格式: While(表达式) 表达式0假) 语句; 非0(真) 语句 ●例:求1+2+3.+100 的和 循环 #include "stdio. h" 变量 main o 当(表达式)为真 nt sum =s0 while <=100) 语句 循环体 sum sum t li 1+十 printf ("sum d\n", sum); 电子科技大学通信与信息工程学院
电子科技大学通信与信息工程学院 while 语句 ⚫ 格式:while (表达式) 语句; ⚫ 例:求1+2+3…+100 的和 语句 当(表达式)为真 语句 表达式 0(假) 非0(真) #include "stdio.h" main() { int sum = 0, i = 1; while (i <= 100){ sum = sum + i; i++; } printf("sum = %d\n",sum); } 循环体 循环 变量
While语句 例:∑冂 例:n! #include stdio.h" #include "stdio. h" main o main o int sum, i int fac, ii int n int n printf ("Input n: \t")i printf("Input n:\ t") scanf("d", &n)i scanf("d &n)i sUIn fac 1 1 while (i < n)[ while (i n sum+=工; sum★ 1++; 1++; printf("sum 号dln",sum); printf("factorial=d\n", fac); 电子科技大学通信与信息工程学院
电子科技大学通信与信息工程学院 while 语句 ⚫ 例:∑n 例:n! #include "stdio.h" main() { int sum, i; int n; printf("Input n:\t"); scanf("%d", &n); sum = 0; i = 1; while (i <= n){ sum += i; i++; } printf("sum = %d\n",sum); } #include "stdio.h" main() { int fac, i; int n; printf("Input n:\t"); scanf("%d", &n); fac = 1; i = 1; while (i <= n){ sum *= i; i++; } printf("factorial=%d\n",fac); }
While语句 ●例:统计从键盘输入一行字符的个数 #include "stdio.h" main() int num o printf("input a string: \t)i while (getchar()!=1\n') num++ printf("character number d\n", num)i 电子科技大学通信与信息工程学院
电子科技大学通信与信息工程学院 while语句 ⚫ 例:统计从键盘输入一行字符的个数 #include "stdio.h" main() { int num = 0; printf("input a string:\t"); while (getchar()!=‘\n’) num++; printf("character number = %d\n", num); }
While语句注意事项 循环前,应先给循环变量赋初值 循环体中,一般应该有修改循环变量值的语句 使循环趋向结東(即使表达式的值变为假) 循环体如包括有一个以上的语句,则必须用复合 语句(即用{}括起来) ●循环体可以为空 ●例:whe(c= getchar()!=Q'); 等价:c= getchar(); while(c! =Q C= getchar 电子科技大学通信与信息工程学院
电子科技大学通信与信息工程学院 while语句注意事项 ⚫ 循环前,应先给循环变量赋初值 ⚫ 循环体中,一般应该有修改循环变量值的语句, 使循环趋向结束(即使表达式的值变为假) ⚫ 循环体如包括有一个以上的语句,则必须用复合 语句(即用{ }括起来) ⚫ 循环体可以为空 ⚫ 例:while ((c = getchar( )) != 'Q' ); 等价:c = getchar( ); while (c != 'Q') c = getchar();
do-While语句 语句 ●格式:do 表达式#C 0(真) 语句; While(表达式); 0(假 ●特点:先执行,再判断 区别:Whle语句:先判断, 语句 再执行 直到(表达式)为假 电子科技大学通信与信息工程学院
电子科技大学通信与信息工程学院 do-while语句 ⚫ 格式:do 语句; while (表达式); ⚫ 特点:先执行,再判断 ⚫ 区别:while语句:先判断, 再执行 语句 直到(表达式)为假 表达式 非0(真) 0(假) 语句
区别: do while& while o while do while include stdio. h" #include "stdio. h main o maIn int sum=0, n; int sum=0, ni scanf(d",&n)i scanf("gd",&n)i while(n 10) do i sum + ni sum + n. n++ n++ }whi1e(n<=10); printf("sum=号d\n SuIn printf ("sum=d\n" sum)i 电子科技大学通信与信息工程学院
电子科技大学通信与信息工程学院 区别:do while & while ⚫ while do while #include "stdio.h" main() { int sum=0, n; scanf("%d",&n); while(n <= 10){ sum += n; n++; } printf("sum=%d\n",sum); } #include "stdio.h" main() { int sum=0, n; scanf("%d",&n); do{ sum += n; n++; } while( n <= 10); printf("sum=%d\n",sum); }