第六章循环控制 第6章第1节 (重点) C语言直接提供了三种构成循环的语句 1) while()语句 构成“当型循环” 2) do while()语句 构成“直到型循环” 3)for()语句 4)if语句和goto语句构成循环不推荐使用 §62g0to语句及goto语句构成的循环 goto语句的形式(goto又名“无条件转向语句”) goto语句标号 写在某一语句前,后面用冒号: 命名规则:与变量名相同 二.执行 当执行到goto语句时,转向语句标号所指向的其他语句,然后向 后执行
第6章 第1节 §6.2 goto 语句及goto语句构成的循环 C语言直接提供了三种构成循环的语句 1)while ( ) 语句 构成“当型循环” 2)do while( ) 语句 构成“直到型循环” 3)for( ) 语句 4) if 语句和goto语句构成循环 不推荐使用 一. goto 语句的形式 (goto——又名“无条件转向语句”) goto 语句标号 写在某一语句前,后面用冒号 : 命名规则:与变量名相同 二. 执行 当执行到goto 语句时,转向语句标号所指向的其他语句,然后向 后执行。 (重点)
第6章第2节 例:求∑n (0 main fint i, sum=0 ll:if(i<=100) isum+=i goto l1 printf(“sum=%dn”,sum); 说明 ).goto可以用于程序的任何地方。 2).“结构化程序设计”思想中,限制goto使用
第6章 第2节 三. 说明 1). goto 可以用于程序的任何地方。 2). “结构化程序设计”思想中,限制goto 使用。 100 n 例: 求 n main() {int i,sum=0; l1: if (i<=100) {sum+=i; i++; goto l1;} printf(“sum=%d\n”,sum); }
§63 while语句 第6章第3节 whl语句的形式 while(表达式)语句; 二, while语句的执行 循环体内容;可以 构成“当型循环” 是复合语句 表达式= 当表达式为真 ≠0 语句」 语句 例:求∑n 求:20 mainO main fint i=1 fint i=0, Sum=0; 注意边界 long int sum=l while(i<=100) while(i<=20 sumt=i; 等价于 isum*=i; 等价于 i++;} sum=sum+ i++;} summum* printf((“sum=%din”,um): printf((“sum=%dm”,sum);
第6章 第3节 一. while语句的形式 §6.3 while 语句 while (表达式) 语句; 二 . while语句的执行 构成“当型循环” 表达式 语句 =0 ≠0 语句 当 表达式为真 100 n 例:求 n main() { int i=0, sum=0; while(i<=100) {sum+=i; i++;} printf(“sum=%d\n”,sum); } main() { int i=1; long int sum=1; while(i<=20) {sum*=i; i++;} printf(“sum=%d\n”,sum); } 求: 20! 循环体内容; 可以 是复合语句 等价于 sum=sum+i 等价于 sum=sum*i 注意边界
第6章第3节 说明 1)如循环内容(循环体)为多条语句,应采用“复合语句” 2)必须控制循环次数(重要,即:循体中必须要有使循环趋于结束的语句 while(i<=100 “循环控制”变量。起控制 Rsum+=i; 循环次数的作用。 例:P12062 mainO f int a1, a2, a3, a4; char. al=a2=a3=:4=0 while((c=)]=n) if(t=A'&&c<=Z)|(==a",&&c<=3z)a1++; else if(c>=0&&c<=9)a2++; else if(==040)a3++ eIse a4++ printf(a1, a2, a3, a4=%d, %d, %d, %d", a1, a2, a3, a4)
三 说明: 1) 如循环内容(循环体)为多条语句, 应采用“复合语句” 2) 必须控制循环次数(重要), 即: 循体中必须要有使循环趋于结束的语句 第6章 第3节 while(i<=100) {sum+=i; i++;} i—— “循环控制”变量。起控制 循环次数的作用。 例:P120 6.2 main() { int a1,a2,a3,a4; char c; a1=a2=a3=a4=0; while ((c=getchar())!=‘\n’) {if((c>=‘A’ && c<=‘Z’) | | (c>=‘a’ && c<=’z’)) a1++; else if(c>=‘0’ &&c<=‘9’) a2++; else if (c= =‘\040’ ) a3++ else a4++; } printf (“a1,a2,a3,a4=%d,%d,%d,%d”,a1,a2,a3,a4); }
第6章第4节 §64 do- while语句 一. do while语句的形式 do 循环体语句;} 循环体内容 可以复合语句 二. do whilei语句的执行 while(表达式 构成“直到型循环” 语句 循环体语句 表达式 直到表达式为假 例:求∑ 求:20! main( main fint i=l Rint i=0, sum=0; long int mul=l do do sum+=i; isum=l; i++;} i++;} while(i<=100 while(i<=20) printf((“sum=%dn”,sum); print(“mul=%dn”,mul);
第6章 第4节 一. do while语句的形式 §6.4 do—— while 语句 do 循环体语句; 二 while (表达式); . do while语句的执行 构成“直到型循环” 表达式 语句 =0 ≠0 直到 表达式为假 100 n 例:求 n main() { int i=0, sum=0; do {sum+=i; i++;} while(i<=100); printf(“sum=%d\n”,sum); } main() { int i=1; long int mul=1; do {sum*=i; i++;} while(i<=20); printf(“mul=%d\n”,mul); } 求: 20! 循环体语句 循环体内容, 可以复合语句