2.3循环结构 13 2.3.3FOR循环 for(初始化语句;表达式1;表达式2) 循环体语句 ·执行过程 (1)执行初始化语句: (②)计算表达式1的值,如果是“真”,则执行循环体语句,否则退出循环 (3)执行表达式2,返回第二步. 1初始化语句,表达式1,表达式2均可省略,但分号不能省: 表达式1是循环控制语句,如果省咯的话就枸成死循环 ↑循环体可以是单个语句,也可以是复合语句: ↑初始化语句与表达式2可以是逗号语句; ↑若省略初始化语句和表达式2,只有表达式1,则等同于while循环 ·for循环有时也可以描述为 foΓ(循环变量赋初值;循环条件;循环变量增量) 循环体语句 int i,s=e for(i-1;1<=10;1+) 3 5=5+i; ·循环变量可以在初始化语句中声明,这样,循环变量只在该循环内有效,循环结束后,循环变量即被 释放 1int s=0; for (int i=1;i<=10;i++) 2.3.4循环的非正常终止 break/跳出循环体,但只能跳出一层循环,一般用在循环语句和switch语句中 continue/结束本轮循环,执行下一轮循环, 一般用在循环语句中 goto /跳转语句,不建议使用 凸注记:break和continue通常与if语句配合使用. http://math.ecnu.edu.cn/-jypan
2.3 循环结构 · 13 · 2.3.3 FOR 循环 ✞ ☎ for(初始化语句; 表达式1; 表达式2) { 循环体语句 } ✝ ✆ • 执行过程 (1) 执行初始化语句; (2) 计算表达式 1 的值, 如果是“真”, 则执行循环体语句, 否则退出循环; (3) 执行表达式 2, 返回第二步. † 初始化语句, 表达式 1, 表达式 2 均可省略, 但分号不能省; † 表达式 1 是循环控制语句, 如果省略的话就构成死循环; † 循环体可以是单个语句, 也可以是复合语句; † 初始化语句 与 表达式 2 可以是逗号语句; † 若省略初始化语句 和 表达式 2, 只有表达式 1, 则等同于 while 循环. • for 循环有时也可以描述为 ✞ ☎ for(循环变量赋初值; 循环条件; 循环变量增量) { 循环体语句 } ✝ ✆ ✞ ☎ 1 int i, s=0; 2 for (i=1; i<=10; i++) 3 s = s + i; ✝ ✆ • 循环变量可以在初始化语句中声明, 这样, 循环变量只在该循环内有效, 循环结束后, 循环变量即被 释放. ✞ ☎ 1 int s=0; 2 for (int i=1; i<=10; i++) 3 s = s + i; ✝ ✆ 2.3.4 循环的非正常终止 ✞ ☎ break // 跳出循环体, 但只能跳出一层循环, 一般用在循环语句和 switch 语句中. continue // 结束本轮循环, 执行下一轮循环, 一般用在循环语句中. goto // 跳转语句, 不建议使用. ✝ ✆ b 注记: break 和 continue 通常与 if 语句配合使用. http://math.ecnu.edu.cn/~jypan
第三讲数组 3.1一维数组 数组(ay):具有一定顺序关系的若干相同类型数据的集合,是基本数据类型的推广 ·一维数组的声明: 类型标识符数组名[]1/声明一个长度为n的一维数组(向量) ()类型标识符:数组元素的数据类型: (2)数组名代表的是数组在内存中的首地址: (3)n为数组的长度,可以是一个表达式,但值必须是一个确定的正整数」 ·一维数组的引用: 数组名[k]/注:下标k的取值为日到n-1 ()只能通过循环逐个引用数组元素 (2)数组元素在内存中是按顺序连续存放的,它们在内存中的地址是连续的 白注记:数组的下标不能越界,否则可能会引起严重的后果! ·一维数组的初始化:在声明时可以同时赋初值 1intx[5]=(o,2,4,6,85 ()全部元素都初始化时可以不指定数组长度,系统会根据所给的数据自动确定数组的长度,如 intx「1=f0,2,4,6,8}: (②)可以部分初始化,即只给部分元素赋初值,如intx[5]=(,2,4; ()若数组声明时进行了部分初始化,则没有初始化的元素自动赋值为0: (④声明数组时,若长度中含有变量,则不能初始化! 、 const int n=3; 2 int x[n];/OK 3int y[n]=(1,2,3};//ERROR (⑤)只能对数组元素赋值,不能对数组名赋值! const int n=5; 2 int x[n]; 4X=(1,2,3,4,5;/∥ERR0R 5 for(int i=0;i<n;it+) x[i]=i; 14
第三讲 数组 3.1 一维数组 数组(array): 具有一定顺序关系的若干相同类型数据的集合, 是基本数据类型的推广. • 一维数组的声明: ✞ ☎ 类型标识符 数组名[n] // 声明一个长度为 n 的一维数组(向量) ✝ ✆ (1) 类型标识符: 数组元素的数据类型; (2) 数组名代表的是数组在内存中的首地址; (3) n 为数组的长度, 可以是一个表达式, 但值必须是一个确定的正整数. • 一维数组的引用: ✞ ☎ 数组名[k] // 注: 下标 k 的取值为 0 到 n‐1 ✝ ✆ (1) 只能通过循环逐个引用数组元素; (2) 数组元素在内存中是按顺序连续存放的, 它们在内存中的地址是连续的. b 注记:数组的下标不能越界, 否则可能会引起严重的后果! • 一维数组的初始化: 在声明时可以同时赋初值. ✞ ☎ 1 int x[5]={0,2,4,6,8}; ✝ ✆ (1) 全部元素都初始化时可以不指定数组长度, 系统会根据所给的数据自动确定数组的长度, 如 int x[]={0,2,4,6,8}; (2) 可以部分初始化, 即只给部分元素赋初值, 如 int x[5]={0,2,4}; (3) 若数组声明时进行了部分初始化, 则没有初始化的元素自动赋值为 0; (4) 声明数组时, 若长度中含有变量, 则不能初始化! ✞ ☎ 1 const int n=3; 2 int x[n]; // OK 3 int y[n]={1,2,3}; // ERROR ✝ ✆ (5) 只能对数组元素赋值, 不能对数组名赋值! ✞ ☎ 1 const int n=5; 2 int x[n]; 3 4 x={1,2,3,4,5}; // ERROR 5 for(int i=0; i<n; i++) 6 x[i]=i; ✝ ✆ 14