Download presentation
Presentation is loading. Please wait.
1
程序设计基础
2
第六章 循环控制 概述 goto语句以及用goto语句构成循环 while语句 do-while语句 for语句 循环的嵌套 几种循环的比较
程序设计基础 第六章 循环控制 第六章 循环控制 概述 goto语句以及用goto语句构成循环 while语句 do-while语句 for语句 循环的嵌套 几种循环的比较 break语句和continue语句 程序举例
3
6.1 概述 特点: 在给定条件成立时,反复执行某程序段,直到条件不成立为止 。 分类: 循环条件 循环体
程序设计基础 第六章 循环控制 6.1 概述 特点: 循环条件 循环体 在给定条件成立时,反复执行某程序段,直到条件不成立为止 。 分类: 1)用goto语句和if语句构成循环; 2)用while语句; 3)用do-while语句; 4)用for语句 返回主菜单
4
6.2 goto语句以及用goto语句构成循环 一般形式: goto 语句标号; 由字母、数字和下划线组成,不能使用整数 例6.1
程序设计基础 第六章 循环控制 6.2 goto语句以及用goto语句构成循环 一般形式: goto 语句标号; 由字母、数字和下划线组成,不能使用整数 例6.1 返回主菜单
5
例6.1用goto语句和if语句构成循环,求。 main() { int i,sum=0; i=1; loop: if(i<=100)
程序设计基础 第六章 循环控制 例6.1用goto语句和if语句构成循环,求。 main() { int i,sum=0; i=1; loop: if(i<=100) {sum=sum+i; i++; goto loop;} printf("%d\n",sum); } 输出: 5050 运行程序
6
程序设计基础 第六章 循环控制 6.3 while语句 一般形式: while(表达式) 语句 流程图 例6.2 返回主菜单
7
例6.2 用while语句求 main() { int i,sum=0; i=1; while(i<=100) sum=sum+i;
程序设计基础 第六章 循环控制 例6.2 用while语句求 main() { int i,sum=0; i=1; while(i<=100) sum=sum+i; i++; } printf("%d\n",sum); 输出: 5050 流程图 运行程序
8
流程图 N-S流程图 传统流程图
9
程序设计基础 第六章 循环控制 6.4 do-while语句 一般形式 do 语句 while(表达式); 例6.3 例6.4 返回主菜单
10
例6.3 用do-while语句求 main() { int i,sum=0; i=1; do sum=sum+i; i++; }
程序设计基础 第六章 循环控制 例6.3 用do-while语句求 main() { int i,sum=0; i=1; do sum=sum+i; i++; } while(i<=100) printf("%d\n",sum); 流程图 运行程序
11
流程图
12
例6.4 while和do-while循环比较。
程序设计基础 第六章 循环控制 例6.4 while和do-while循环比较。 (1) (2) main() {int sum=0,i; scanf(“%d”,&i); while(i<=10) {sum=sum+i; i++; } printf(“sum=%d”,sum); main() {int sum=0,i; scanf(“%d”,&i); do {sum=sum+i; i++; } while(i<=10); printf(“sum=%d”,sum); 结果比较 运行程序1 运行程序2
13
while与do-while程序结果的比较
(1) (2) 运行情况: 1↙ sum=55 再运行一次: 11↙ sum=0 sum=11
14
6.5 for语句 一般形式 for(表达式1;表达式2;表达式3) 语句 理解形式 for(循环变量赋初值;循环条件;循环变量增量) 语句
程序设计基础 第六章 循环控制 6.5 for语句 一般形式 for(表达式1;表达式2;表达式3) 语句 理解形式 for(循环变量赋初值;循环条件;循环变量增量) 语句 改写成while循环形式 表达式1; while(表达式2) {语句 表达式3; } 执行过程 说明 返回主菜单
15
for语句执行过程 1)先求解表达式1 ; 2)求解表达式2,若其值为真(非0),则执行for语句中指定的内嵌语句,然后执行下面第3)步;若其值为假(0),则结束循环,转到第5)步 ; 3)求解表达式3 ; 4)转回上面第2)步继续执行 ; 5)循环结束,执行for语句下面的一个语句。
16
for语句说明 1)for循环中的“表达式1(循环变量赋初值)”、“表达式2(循环条件)”和“表达式3(循环变量增量)”都是选择项, 即可以缺省,但“;”不能缺省。 2)省略了“表达式1(循环变量赋初值)”, 表示不对循环控制变量赋初值。 for(i=1;i<=100;) {sum=sum+i; i++;} 3)省略了“表达式2(循环条件)”, 则不做其它处理时便成为死循环。 4)省略了“表达式3(循环变量增量)”, 则不对循环控制变量进行操作,这时可在语句体中加入修改循环控制变量的语句。 for(;i<=100;) 相当于 while(i<=100) {sum=sum+i; {sum=sum+i; i++;} i++;} 5)可以省略“表达式1(循环变量赋初值)”和“表达式3(循环变量增量)”。
17
for语句说明 for(sum=0;i<=100;i++) sum=sum+i; 6)3个表达式都可以省略。
7)表达式1可以是设置循环变量的初值的赋值表达式,也可以是其他表达式。 for(sum=0,i=1;i<=100;i++)sum=sum+i; 8)表达式1和表达式3可以是一个简单表达式也可以是逗号表达式。 9)表达式2一般是关系表达式或逻辑表达式,但也可是数值表达式或字符表达式,只要其值非零,就执行循环体。 for(;(c=getchar())!=’\n’;) printf(“%c”,c);
18
6.6 循环的嵌套 定义: 一个循环体内又包含另一个完整的循环结构,称为循环的嵌套。 几种形式: while( ) {… {…} }
程序设计基础 第六章 循环控制 6.6 循环的嵌套 定义: 一个循环体内又包含另一个完整的循环结构,称为循环的嵌套。 几种形式: while( ) {… {…} } do {…} … for(; ;) { 返回主菜单
19
6.7 几种循环的比较 1)四种循环都可以用来处理同一个问题,一般可以互相代替。但一般不提倡用goto型循环。
程序设计基础 第六章 循环控制 6.7 几种循环的比较 1)四种循环都可以用来处理同一个问题,一般可以互相代替。但一般不提倡用goto型循环。 2)while和do-while循环,循环体中应包括使循环趋于结束的语句。for语句功能最强。 3)用while和do-while循环时,循环变量初始化的操作应在while和do-while语句之前完成,而for语句可以在表达式1中实现循环变量的初始化。 返回主菜单
20
6.8 break语句和continue语句 break语句 continue语句 break语句和continue语句的区别
程序设计基础 第六章 循环控制 6.8 break语句和continue语句 不能用于循环语句和switch语句之外的任何其他语句 break语句 跳过循环体中剩余的语句而强行执行下一次循环 continue语句 break语句和continue语句的区别 例6.5 返回主菜单
21
break语句和continue语句的区别
程序(1) while(表达式1) { …… if(表达式2)break; …… } 程序(2) while(表达式1) if(表达式2)continue;
22
break语句和continue语句的区别
流程图(1) 流程图(2)
23
例6.5把100至200之间的不能被3整除的数输出。 main() {int n; for(n=100;n<=200;n++)
程序设计基础 第六章 循环控制 例6.5把100至200之间的不能被3整除的数输出。 main() {int n; for(n=100;n<=200;n++) {if(n%3==0) continue; printf("%d ",n); }} 运行程序
24
程序设计基础 第六章 循环控制 6.9 程序举例 例6.6 例6.7 例6.8 例6.9 例6.10 返回主菜单
25
例6.6用公式 求π。 #include<math.h> main() { int s; float n,t,pi;
程序设计基础 第六章 循环控制 例6.6用公式 求π。 #include<math.h> main() { int s; float n,t,pi; t=1,pi=0;n=1.0;s=1; while(fabs(t)>1e-6) {pi=pi+t; n=n+2; s=-s; t=s/n; } pi=pi*4; printf("pi=%10.6f\n",pi); 运行程序
26
程序设计基础 第六章 循环控制 例6.7 求Fibonacci数列40个数,这个数列有如下特点:第1,2两个数为1,1.从第3个数开始,该数是其前面两个数之和。即: F1=1(n=1) F2=1(n=2) Fn=Fn-1+ Fn-2(n>=3) main() { long int f1,f2; int i; f1=1;f2=1; for(i=1;i<=20;i++) printf(“%12ld%12ld”,f1,f2); if(i%2==0) printf(“\n”); f1=f1+f2; f2=f2+f1; } 运行程序
27
例6.8 判断m是否素数 。 #include<math.h> main() { int m,i,k;
程序设计基础 第六章 循环控制 例6.8 判断m是否素数 。 #include<math.h> main() { int m,i,k; scanf(“%d”,&m); k=sqrt(m); for(i=2;i<=k;i++) if(m%i==0)break; if(i>=k+1) printf(“%d is a prime number\n”,m); else printf(“%d is not a prime number\n”,m); } 运行程序
28
例6.9 求100至200间的全部素数。 #include<math.h> main() { int m,i,k,n=0;
程序设计基础 第六章 循环控制 例6.9 求100至200间的全部素数。 #include<math.h> main() { int m,i,k,n=0; for(m=101;m<=200;m=m+2) k=sqrt(m); for(i=2;i<=k;i++) if(m%i==0)break; if(i>=k+1) {printf(“%d”,m); n=n+1;} if(n%n==0)printf(“\n”); } printf(“\n”); 运行程序
29
例6.10 译密码。为使电文保密,往往按一定规律将其转 换成密码,收报人再按约定的规律将其译回原文。例如,可以按以下规律将电文变成密码。
程序设计基础 第六章 循环控制 例6.10 译密码。为使电文保密,往往按一定规律将其转 换成密码,收报人再按约定的规律将其译回原文。例如,可以按以下规律将电文变成密码。 include <stdio.h> main() { char c; while((c=getchar())!=‘\n’) if((c>=‘a’&&c<=‘z’|| c>=‘A’&&c<=‘Z’) { c=c+4; if((c>‘Z’&&c<=‘Z’+4|| c>‘z’) c=c-26; } printf(“%c”,c); 运行程序
30
The end
Similar presentations