C语言第05次课

合集下载

ch05程序的三种基本结构

ch05程序的三种基本结构

1 1 1 1 例:求 1 ...... 的值。 2 3 4 1000 多项式求和问题。 定义变量: S --- 累加和 N --- 代表一项的分母 算法:⑴ S←0,N←1 ⑵ S←S+ 1 N 循环 ⑶ N←N+1 算法描述: ⑷ 如果 N≤1000,转⑵ 自然语言+ 否则,转⑸ 伪代码 ⑸ 输出 S 的值 ⑹ 结束
程序的三种基本结构
如何将C语句组织成一个程序呢? 程序 = 数据 + 算法
体现为语句
算法:为解决一个问题而采取的有限步骤。 计算机算法:指挥计算机按照一定步骤完成工作。 怎样来描述一个算法呢? ⑴ 自然语言 ⑵ 流程图 ⑶ N-S 图 ⑷ 伪代码(类似于数学语言)
1973年美国学者 I.Nassi 和 B.Shneideman 提出的一种无流线的流程图
(a) 流程图
(b) N-S图
2. 选择结构: P 代表一个条件, Y---Yes,N---No。
Y P N P A B
Y
N
A
B
(a) 流程图
(b) N-S图
3.循环结构:( “当”型循环 ) (1)当条件 P 成立时,反复执行 A 操作, 直到 P 为假时,才停止循环。
P Y A N
当 P为真
A
(a) 流程图
(b) N-S图
3.循环结构:( “直到”型循环 )
(2)先执行 A 操作,再判条件 P, 若为“假”重复执行A,直到 P 为“真”停止。
A N
p
A 直到 P为真 Y
(a) 流程图
(b) N-S图
A
Y
P
N
P Y A
NBAFra bibliotekBA

Visual C# 2005从入门到精通第05章

Visual C# 2005从入门到精通第05章

使用复合赋值和循环语句本章旨在教会你:●使用复合赋值操作符来更新一个变量的值●使用while、for和do等循环语句●逐步执行一个do方法,并观察变量值的变化第4章讲述了如何使用if和switch结构来选择性地运行语句。

在本章,将介绍如何使用多种循环语句来重复运行一个或多个语句。

写循环语句时,通常需要控制重复次数。

为此,可以使用一个变量,在每次重复时都更新它的值,并在变量抵达一个特定的值时停止重复。

因此,还要介绍如何在这些情况下使用特殊的赋值操作符来更新一个变量的值。

5.1 使用复合赋值操作符前面讲过如何使用算术操作符来创建新值。

例如,以下语句使用操作符+来创建比变量answer大42的一个值,新值将写入控制台:Console.WriteLine(answer + 42);前面还讲过如何使用赋值语句来更改一个变量的值。

以下语句使用赋值操作符将answer的值变成42:answer = 42;如果希望在一个变量的值上加42,可以将赋值操作符与加法操作符合并到一起。

例如,以下语句在answer上加42,并将新值赋给answer。

换言之,在运行该语句之后,answer 的值将比之前大42:answer = answer + 42;虽然这是一个有效的语句,但有经验的程序员不会这样写。

在变量上加一个值是非常普遍的一个操作,所以Microsoft Visual C#专门提供了一个复合赋值操作符+=来简化这个操作。

为了在answer上加42,有经验的程序员会这样写:answer += 42;利用这个快捷方式,可以将任何算术操作符与赋值操作符合并到一起,表5.1对此进行了总结。

这些操作符统称为复合赋值操作符(compound assignment operator)。

第I部分Microsoft Visual C#和Microsoft Visual Studio 2005概述60表5.1 复合赋值操作符提示复合赋值操作符与简单赋值操作符具有一样的优先级和右结合性。

05 第5次课(第4章:沙波运动)解析

05  第5次课(第4章:沙波运动)解析

hsΔ
4.1、沙波形态和发展过程 4.1.1 沙波的纵剖面形态
A1 A2 λ
图4-1 沙波的纵剖面
波峰:沙波向上隆起的最高点。 波谷:沙波向下凹入的最低点。 波长:相邻两波峰或波谷之间的距离λ。 波高:波谷至波峰的铅直距离hs。
hsΔ
4.1、沙波形态和发展过程 4.1.1 沙波的纵剖面形态
A1 A2 λ
11
4.1.2 沙波的发展过程
河道中的沙波随着水流在不断变化,具有产生、发展 和消亡的过程。
沙波的发展过程与河道水流强度密切相关。 随着水流强度的增强,沙波运动及相应的床面形态将经历 以下几个不同的发展阶段,会出现以下几种类型的沙波:
12
4.1.2 沙波的发展过程 0、静平床 此时水流强度较弱,U<Uc ,床沙静止不动。
图4-1 沙波的纵剖面
1、形态特征: 外形——迎水面长而平,背水面短而陡; 坡度变化
hs Δ
2、沙波表面水流流态
A1 A2 λ
(1) 流速分布不均,波峰处流速最大,波谷处流速 最小; (2)波峰后水流分离,形成横轴环流;
7
Δ
hs
2、沙波表面水流流态
A1 A2 λ
(3) 漩涡上下两端、正负流速之间存在两个停滞点(即流 速为零的点); (4)迎水面流速为正,漩涡区内水流流速为负值。
4、沙浪 逆行沙波形成原因:
沙浪
因为这种沙波起伏很大,水流在经过沙波的迎流面时, 好像上坡一样,负担较大,把一部分泥沙卸了下来;而 越过波峰下行时,又有余力冲走一部分泥沙。这样每一 颗泥沙虽然顺着水流方向运动,但沙波作为一个整体却 是徐徐向上游后退,故称为逆行沙波。
21
4.1.2 沙波的发展过程
5、急滩和深潭

C05

C05

• 初始化
在定义的同时赋初值,称为指针变量的初始化。 例如:
float d =1.5, *p= &d; float d =1.5, *p; p = &d;
p和d的关系如图5.2所示。
p d
&d
1.5
图中,p称为指针变量,d称为指针变量p所指向 的变量。 指针变量与指针所指向的变量的区别:
5.1.3 指针运算符
(2) p=&a;
p指向变量a。 (3) p1=&a; p2=p1; 相同类型的指针变量可以相互赋值,但必须用已 有确定指向的指针对同类型指针变量赋值。
(4) p=(int *)malloc(sizeof(int)); 调用malloc库函数,系统自动开辟一段内存区,并 将其首地址赋给变量p。
• 例5.1
p1,p2所指对象变了,而对象本身没变。
• 例5.2 run main() {int a,b,t;int *p1,*p2; scanf("%d%d",&a,&b); p1=&a;p2=&b; printf("\na=%d,b=%d\n",*p1,*p2); t=*p1;*p1=*p2;*p2=t; printf("\na=%d,b=%d\n",*p1,*p2); }
b. 冒泡法run
基本思想: 把相邻的两个元素进行比较,如符合排序要求,则保持 原样,如不符合,则交换之。 程序段:
for(i=0;i<9;i++) for(j=1;j<10-i ;j++) if(a[j-1]>a[j] ) {temp=a[j-1]; a[j-1]=a[j]; a[j]=temp; }

c 5第五章 静态成员,友元

c  5第五章 静态成员,友元

35
完整版ppt
36
完整版ppt
37
完整版ppt
38
完整版ppt
39
完整版ppt
40
完整版ppt
41
完整版ppt
42
完整版ppt
43
完整版ppt
44
完整版ppt
45
完整版ppt
46
完整版ppt
47
完整版ppt
48
完整版ppt
49
完整版ppt
50
完整版ppt
51
完整版ppt
完整版ppt
1
完整版ppt
2
完整版ppt
3
完整版ppt
4
完整版ppt
5
完整版ppt
6
完整版ppt
7
完整版ppt
8
完整版ppt
9
完整版ppt
10
完整版ppt
11
完整版ppt
12
完整版ppt
Байду номын сангаас
13
完整版ppt
14
完整版ppt
15
完整版ppt
16
完整版ppt
17
完整版ppt
69
完整版ppt
70
完整版ppt
71
完整版ppt
72
完整版ppt
73
完整版ppt
74
完整版ppt
75
完整版ppt
76
完整版ppt
77
完整版ppt
78
完整版ppt
79
完整版ppt
80
此课件下载可自行编辑修改,供参考! 感谢您的支持,我们努力做得更好!

ch05

ch05
(1) C语言提供三种逻辑运算符: 语言提供三种逻辑运算符: 语言提供三种逻辑运算符
&& 逻辑与(相当于“同时”) 逻辑与(相当于“同时” || 逻辑或(相当于“或者” 逻辑或(相当于“或者”) ! 逻辑非(相当于“否定” 逻辑非(相当于“否定”)
例如:下面的表达式都是逻辑表达式: 例如:下面的表达式都是逻辑表达式:
例如: 例如:
假设n 假设n1、n2、n3、n4、x、y的值分别为1、2、3、4、1、1, 的值分别为1 则求解表达式“(x=n1>n2)&&(y=n3>n4)”后 则求解表达式 “(x=n1>n2)&&(y=n3>n4)”后 ,x的值变为0, 而 的值变为0 y的值不变,仍等于1! 的值不变,仍等于1
程序运行情况如下: 程序运行情况如下:
Please input three numbers:11,22,18↙ numbers:11,22,18↙ The three numbers are:11,22,18 max=22
本案例中的第1 if语句 可优化为如下不带else子句的形式 本案例中的第1个if语句,可优化为如下不带else子句的形式: 语句, 子句的形式: max=num1; if(num2>max) max=num2;
这种优化形式的基本思想是: 这种优化形式的基本思想是: 首先取一个数预置为max(最大值),然后再用max ),然后再用 首先取一个数预置为max(最大值),然后再用max 依次与其余的数逐个比较,如果发现有比max大的 大的, 依次与其余的数逐个比较,如果发现有比max大的,就 用它给max重新赋值 比较完所有的数后,max中的数就 重新赋值, 用它给max重新赋值,比较完所有的数后,max中的数就 是最大值。这种方法,对从3个或3 是最大值。这种方法,对从3个或3个以上的数中找最大 值的处理,非常有效。请读者仔细体会。 值的处理,非常有效。请读者仔细体会。

CH5

CH5

1 5 1 3 7
5 1 3 7 0 8 0 0 8 9 2 6 0 2 5 1 0 6 1 3
a00 a10 a20 a11 a21 a22
....... an-1,0 ........ an-1,n-1 1,n-
在这个下三角矩阵中, 行恰有 个元素, 行恰有i+1个元素 在这个下三角矩阵中,第i行恰有 个元素, 元素总数为: 元素总数为:
表头: 表头: 第一个元素 表尾: 表尾: 除表头外剩下的部分
任何一个非空广义表的表头是表中的第 一个元素,它可以是原子,也可以是子表; 一个元素,它可以是原子,也可以是子表; 而其表尾必定是子表。 而其表尾必定是子表。 例如: 例如: L = ( a, b ) B = ( A, y ) head(L) = a head(B) = A head(tail(L)) = b tail(tail(L)) = ( ) tail(L) = ( b ) tail(B) = ( y )
二维数组
a[0][1] a[0][2] a[0][0] a[1][1] a[1][2] a[1][0] a = a[2][0] a[2][1] a[2][2] ⋮ ⋮ ⋮ a[n − 1][0] a[n − 1][1] a[n − 1][2]
行优先 LOC ( j, k ) = =a+(j*m+k)*l
∑ (i + 1) = n(n + 1) / 2
i =0
n −1
因此, 因此,我们可以将这些元素存放在一个向量 sa[n(n+1)/2]中。为了便于访问方阵 中的元 中 为了便于访问方阵A中的元 必须在a 之间建立一个对应关系。 素,必须在 ij和sa[k]之间建立一个对应关系。 之间建立一个对应关系 在下三角矩阵中,则有: 若aij在下三角矩阵中,则有:

c语言p05

c语言p05

x<0
真 假 x==0

y= -1

y=0 y= -1
程序2: if (x>=0) if (x>0) y = 1; else y = 0; else y = -1;
程序3: y = -1; if (x != 0) if (x>0) y = 1; else y = 0;
x >= 0
真 x>0 假

y= 1

y=0 y= -1 y= -1
真 x>0 真
x!=0 假

y= 1 y=0
5.4.3 条件运算符
在if语句中,在“表达式”为“真”和“假”时,都只执 行一个赋值语句给同一变量赋值,
例、if (a>b) max = a; else max = b;
可以用如下条件运算符来处理: max = (a>b) ? a : b
条件表达式的求解过程 •先求解表达式1的值
•若表达式1的值为真(非0);则求解表达式2的值,将
其作为条件表达式的值。表达式3不计算。
若表达式1的值为假(0);则求解表达式3的值,将
其作为条件表达式的值。表达式2不计算。
例:int a=1,b=2,c=3,d=4,m=5,n=6,k;
k=a>b?(m=c>b): (n=b>d)
§5.6 程序举例
习题5-6:判别学生成绩的等级: 小于60分,E级; 小于70分,D级; 小于80分,C级; A 小于90分,B级; B 小于100分,A级; C
1.算法:
分数/10: <6 ,E级 <7 ,D级 <8 ,C级 <9 ,B级 <10 ,A级

C05

C05
6
5.1 C语言语句
C语言程序是由各种函数构成的,而函数又 包含函数说明和函数体两部分 函数体是函数的核心。 与其他高级语言一样,C语言也是利用函数 体内的可执行语句,向计算机系统发出操 作命令 C语言语句分为五类
7
基本语句 (Statements)
控制语句 表达式语句 函数调用语句 空语句 复合语句
22
格式指示符
由 % 和格式字符组成 作用:将输出的数据转换为指定的格式输出 例如: %3d %4.3f 格式指示符总是由 % 字符开始的
23
转义字符及其含义
字符形式 \b \f \n \r \t \\ \' \" \ddd \xhh
24
含 义 退格,将当前位置移到前一列 换页,将当前位置移到下页开始 换行,将当前位置移到下一行开头 回车,将当前位置移到本行开头 水平制表(一个Tab位置) 反斜杠字符 单撇号字符 双撇号字符 1到3位八进制所代表的字符 1到2位十六进制所代表的字符
14
空语句
形式
; 只有一个分号
用法
作为转向点 作为循环语句中的循环体
举例
for(i=1; i<=100; i++) sum+=i; for(i=1; i<=100; sum+=i++);
15
5. 复合语句
复合语句是由一对大括号括起来的一组(也可以是一 条) 语句构成的。 { z = x+ y; t = z/ 100; printf( “%f”, t ); }
iewsong@ iewsong@
第5章 顺序结构程序设计
学习内容
顺序结构是C语言程序中最常用的基本结构之一。 结构中的各个语句按照先后顺序,依次执行。 C语言利用函数体中的可执行语句,向计算机系统 发出操作命令。在程序运行中,有时候需要从外 部设备(如键盘) 得到一些数据;程序计算结束后, 通常要把结果发送到外部设备上,以便对结果进 行分析。 程序从外部设备上获得数据的操作称为“输入”; 程序发送数据到外部设备的操作称为“输出”。 C语言中,数据的输入、输出是通过调用C语言的 库函数来实现的。 重点:C语言语句,输出函数printf、输入函数scanf。 重点:C语言语句,输出函数printf、输入函数scanf。

c-5

c-5

score
…. 88
stu
实参用数组名
void main()
例2:用选择法对数组中10 个 数由小到大排序。
#include <stdio.h> void sort(int array[ ],int n) { int i,j,k,t; for(i=0;i<n-1;i++) { k=i; for(j=i+1;j<n;j++) if(array[j]<array[k]) k=j; t=array[k]; array[k]=array[i]; array[i]=t; } }
0 1 2 3 4 5 6 7 8 9
k j j j j j j j j j
k k
void main()
例2:用选择法对数组中10 个 数由小到大排序。
#include <stdio.h> void sort(int array[ ],int n) { int i, j, k, t; for(i=0;i<n-1;i++) { k=i; for(j=i+1;j<n;j++) if(array[j]<array[k]) k=j; t=array[k]; array[k]=array[i]; array[i]=t; } }
{ int a[10],i; for(i=0;i<10;i++) scanf("%d",&a[i]); sort( a, 10 ); for(i=0;i<10;i++) printf("%d ",a[i]); printf("\n"); }

大学C++05数组与字符串

大学C++05数组与字符串

输出第i个数组元素: cout<<a[i];
输入整个数组的元素: for ( i=0; i<10; i++)
cin>>a[i];
输出整个数组的元素:
for ( i=0; i<10; i++ ) cout<<a[i];
14
返回
例5.1 输入n个成绩,求平均分,输出高于平均分的成绩
#include<iostream.h>
7
下一节
一、一维数组的定义
❖ 格式 : 类型标识符 数组名[常量表达式];
例如: int a[10];
类型说明 数组名
常量表达式
8
int a[10];
❖ 数组名:用户定义的标识符
数组名表示了一个存储区的首地址 (即第一个数组元 素的地址)
❖ 常量表达式的值为元素的个数
❖ 常量表达式中不能有变量 常量表达式的值不能是实数
b[0][0] , b[0][1] ……b[1][2]
12 3 45 6
注意: 此方法数据没有明显的界限, 当数据较多 时容易出错
21
返回
❖ 若全部都赋初值,第一维长度可省略
int b[][3] = { {1,2,3},{4,5,6}};
int b[][]; int b[][]={1,2,3,4,5,6}; int b[n][m];
i 趟扫描中要进行 n-i 次比较。
31
/*冒泡法排序*/
for (i=0; i<N-1; i++) for ( j=0;j<N-i-1 ; j++) if (a[j]>a[j+1]) { t =a[j]; a[j]=a[j+1]; a[j+1]=t; }
  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

4.3 do-while 语句do-while 语句与while 语句十分相似,只是do-while 语句先执行循环体语句再进行判断循环条件,而while 语句是先判断循环条件再执行循环体语句。

do-while 语句的一般格式:do{循环体语句;} while(表达式) ;● 表达式:用作循环条件,与在while 语句中的作用一样。

● 循环体语句:被重复执行的语句。

● 注意:在while(表达式)后面一定有分号“;”。

其语义是:先执行循环体语句,再判断表达式的值,如为真(非0)则反复执行循环体语句,如为假(为0)则退出while 循环继续执行do-while 语句的后续语句。

其过程如图4.3所示。

用do-while 语句完成本章任务(1): main() {int i,sum=0;i=1; do { sum=sum+i; i++; } while(i<=100);printf("1+2+...+100=%d",sum);getch();}输出结果:1+2+...+100=5050【例4.8】由键盘输入一个整数n ,反序输出。

如输入:3214665,则输出5664123 分析:①可先取出此数n 的最后一位:n%10输出②再用用此数除以10取整数部分n=n/10判断是不是为0,如果不是0则重复从①开始执行,直到(n=n/10)==0程序如下: main() {long n;printf("Input n: "); scanf("%ld",&n); do{图4.3 do- while 语句执行流printf("%ld",n%10);}while(n/=10);getch();}【例4.9】编程实现猜数游戏,先由计算机随机生成一个1~100之间的数让人猜,如果人猜对了,在屏幕上输出此人猜了多少次猜对此数,以此来反映猜数者“猜”数水平,则结束游戏;否则计算机给出提示,告诉人所猜的数是太大还是太小,最多可以猜10次,如果猜了10次仍未猜中的话,给出失败提示,游戏结束。

分析:本题要完成的主要任务有如下几步,①计算机随机产生一个1~100间的数,C语言提供了随机函数rand(),功能产生0~32767之间的随机数。

可以用rand()%100+1来得到1~100间的任意数。

注意:使用此函数有的编译器需要在程序的开始处添加文件包含:#include <stdlib.h>②用循环语句实现猜数功能,循环体内用if语句判断是否猜对,并对猜对与否处出相应处理。

程序如下:#include <stdlib.h> /*由于要用到函数rando()及randomize()故需要添加此声明*/main(){int i, n, ran, right; /*i用于统计猜数次数,ran用于存放计算机随机产生的数,right用于标识是否猜的正确,如正确为1否则为0*/i=0;right=0;randomize(); /*用在TC编译器中,初始化随机数发生器,如没有此语句会使每次运行时,rand()得到的随机值都一样,从而不能实现随机*/ ran=rand()%100+1; /*在上一条语句的基础上实现随机得到1个1~100之间的数*/do{printf("\nYou have %d chances. input a num: ",10-i);scanf("%d",&n);if(n==ran)right=1;else if(n>ran)printf("\n%d is too big.\n",n);elseprintf("\n%d is too small.\n",n);i++;}while(right!=1&&i<10); /*如没猜对且猜数次数没超过10次则重复进行猜数*/if(right==1)printf("\nCongratulations, num = %d, you are right at %dth time.",ran,i);elseprintf("\nSorry, you have no chanse to guess the num,num = %d.",ran);getch();}4.4用于循环中的break语句和continue语句在第3章学习switch结构时学到了break语句,用于退出switch语句。

在循环语句中如果想要在循环条件仍然满足的情况下提前退出循环语句也可以用break语句。

在循环语句的应用中,有时在某种特殊的情况下想结束某次循环而不是完全退出循环语句时可以使用continue语句来实现。

下面就逐一介绍break 语句与continue语句在循环语句中的应用。

4.4.1break语句break语句格式:break ;break语句适用于学过的任何一种循环语句,一般放在循环体中的某个if语句的分支中。

作用在于一旦执行到break语句则立即结束break所在的循环语句。

也可以起到替代循环条件的作用。

【例4.10】分析如下程序,给出程序执行结果。

main(){int i;for(i=0; ;i++){if(i>=10)break; /*执行到break语句则直接退出整个循环语句*/if(i%2==0)printf("%d ",i);}getch();}本程序中的for语句中如没有break语句就成为死循环,break语句起到了替代for语句中的条件语句的作用,据for语句的执行流程可得到本题的输出结果为:0 2 4 6 8。

【例4.11】从键盘任意输入一个正数n,判断其是不是素数(因子只有1及其本身,其值大于1的自然数)。

分析:可用2~n-1之间的各个自然数去除n,如某个数i整除则说明n除了1及其本身外还有其他的因子i,故可断定n不是素数。

如所有的数都不能整除则可断定n是素数。

经数学方法证明用于除n的数无需2~n-1只要用2~n之间的数去除即可。

同时在C语言中有sqrt()这个函数求一个数的平方根。

程序如下:#include <math.h> /*由于sqrt()的定义在库头文件math.h中因此要声明此文件包含*/main(){int n,i,k; /*n作为要输入的数,i为循环变量,k存放n的平方根*/clrscr();printf("Input n (n>=2): ");scanf("%d",&n);k=sqrt(n); /*把n的平方根存在k变量中*/for(i=2;i<=k;i++){if(n%i==0)break; /*如i取某值时能整除n,则提前结束for循环*/}if(i==k+1 && n>1) /*如i的值已累加到k+1,则说明for循环没有提前结束,同时判断n的值是不是大于1,如同时成立说明是素数*/printf("%d is a prime number.",n);elseprintf("%d is not a prime number.",n);getch();}运行结果:Input n (n>=2):19↙19 is a prime number.4.4.2continue语句continue语句格式:continue ;continue语句与break语句一样也适用于学过的任何一种循环语句,也是一般放在循环体中的某个if 语句的分支中。

作用在于一旦执行到continue语句则立即结束本次循环进入下一次循环。

continue语句与break语句的作用是不同的,continue语句是结束一次循环,而break是结束整个循环。

【例4.12】分析如下程序,给出程序执行结果。

main(){int i;for(i=0;i<10;i++){if(i%2==0) continue ; /*执行到continue语句则跳过其后的循环体语句,直接去执行for语句的表达式3(即:i++),继续进行循环体的下一次循环*/printf("%d ",i) ;}getch();}本程序for语句中如没有continue语句则直接输出:0 1 2 3 4 5 6 7 8 9,而本题中的if语句使得当i能被2整除时则执行continue语句,同时continue语句的作用是跳过其后的语句进行下一次循环,所以导致无法输出能被2整除的数。

故本题输出结果是:1 3 5 7 9。

【例4.13】随机输入多个字符,直到输入回车结束,统计键入空格字符的次数。

程序如下:#include <stdio.h>main(){int count=0;char ch;printf("Input chars:");do{ch=getchar();if (ch!=' ')continue;count++;}while(ch!='\n');printf("The number of spaces is %d.\n",count);getch();}运行结果:Input chars:aa bb cc dd ee ff↙The number of spaces is 5.4.5循环结构的嵌套循环结构与分支结构一样也可能进行嵌套,所谓循环语句的嵌套就是把一个循环语句的整体嵌入到另一个循环语句的循环体中。

循环语句的嵌套可以有多重,一个层循环语句外面包围一层循环称为双重循环,如包围二层循环称作三重循环,……,一个循环的外面包围三层或三层以上的循环称为多重循环。

理论上循环结构的嵌套层数可以无限多,但实际应用中最好使嵌套的层次尽量少,因较多的层次会使程序的执行效率大大降低。

正常情况下:应先执行内层的循环体操作,然后是外层循环。

例如:对于双重循环,内层循环被执行的次数应为:内层次数×外层次数。

三种循环语句for、while、do-while可以互相嵌套,自由组合。

外层循环体中可以包含一个或多个内层循环结构,但要注意的是,各循环必须完整包含,相互之间绝对不允许有交叉现象。

因此每一层循环体都应该用{}括起来。

下面的形式是不允许的:for(; ; ){……do{……}}while();在这个嵌套中for语句与do-while语句出现了交叉。

【例4.14】编程实现在屏幕上输出九九乘法口诀。

相关文档
最新文档