作业9总结
1.二维数组的定义和引用
(1)二维数组的定义
类型说明符 数组名[常量表达式][常量表达式]
例:float a[3][4],b[5][10];
说明:
① 可以把二维数组看作是一种特殊的一维数组。
a[0] → a[0][0] a[0][1] a[0][2] a[0][3]
a[1] → a[1][0] a[1][1] a[1][2] a[1][3]
a[2] → a[2][0] a[2][1] a[2][2] a[2][3]
② 二维数组在内存中按行存放
a[0][0] ↑ a[0][2] ↑ a[1][0] ↑ a[1][2] ↑ a[2][0] ↑ a[2][2] ↑
a[0][1] a[0][3] a[1][1] a[1][3] a[2][1] a[2][3]
③ 多维数组定义方式与二维数组类似
int x[3][4][2];
float y[4][2][3];
(2)二维数组的引用
引用形式为: 数组名[下标][下标]
注:下标可以是整型表达式,但应在已定义的数组大小的
范围内。
(3)二维数组的初始化
⒈ 分行给二维数组赋初值。如:
int a[3][4]={{1,2,3,4},{5,6,7,8},{9,10,11,12}};
⒉ 可以将所有数据写在花括弧内,按数组排列的顺序对各元素赋初值。
int a[3][4]={1,2,3,4,5,6,7,8,9,10,11,12}
⒊ 可以对部分元素赋初值,不赋的为0。如:
int a[3][4]={{1},{5},{9}}
int a[3][4]={{1},{0,6},{0,0,11}};
⒋ 如果对全部元素都赋初值,则定义数组时对第一维的长度可以不指定,但第二维的长度不能省。
2.矩阵与二维数组
int a[N][N]; N是正整数
a[i][j]:i、j的取值范围[0,N-1]
用二维数组a表示N*N方阵时,对应关系:
a[0][0] a[0][1] a[0][2] 主对角线 i==j
a[1][0] a[1][1] a[1][2] 上三角 i<=j
a[2][0] a[2][1] a[2][2] 下三角 i>=j
付对角线 i+j==N-1
3.字符数组
- 字符串的存储和运算可以用一维字符数组实现
- 一维字符数组的定义、引用、初始化与其他类型的一维数组一样。
char str[80];
定义一个含有80个字符型元素的数组str
char t[5]={'H', 'a', 'p', 'p', 'y'};
初始化数组 t
(1) 一维字符数组
char t[5] = {'H', 'a', 'p', 'p', 'y'};
static char s[6] = {'H', 'a', 'p', 'p', 'y'};
static char s[6]={'H', 'a', 'p', 'p', 'y', 0};
0代表字符'\0',也就是ASCII码为0的字符
static char s[6]={'H', 'a', 'p', 'p', 'y', '\0'};
(2)字符串
字符串常量用一对双引号括起来的字符序列
一个字符串结束符 '\0' 字符串结束符
"Happy" ↓
6个字符 'H' 'a’ 'p’ 'p’ 'y' '\0'
字符串的有效长度:有效字符的个数
(3)字符串与一维字符数组
字符串:一个特殊的一维字符数组
- 把字符串放入一维字符数组(存储)
- 对字符串的操作 ===> 对字符数组的操作
字符串的存储-数组初始化
字符串可以存放在一维字符数组中
static char s[6] = {'H', 'a', 'p', 'p', 'y', '\0'};
(4)字符数组初始化:用字符串常量
static char s[6] = {"Happy"};
static char s[6] = "Happy";
数组长度 >= 字符串的有效长度 + 1
(5)字符串的存储
auto char s[80]= "Happy";
字符串遇 '\0' 结束
第一个 '\0' 前面的所有字符和 '\0' 一起构成了字符串 "Happy”
'\0' 之后的其他数组元素与该字符串无关
(6)对字符串的操作
- 把字符串放入一维字符数组(存储)
- l对字符串的操作 ===> 对字符数组的操作
普通字符数组:数组元素的个数是确定的,一般用下标控制循环
字符串:没有显式地给出有效字符的个数,只规定在字符串结束符 '\0' 之前的字符都是字符串的有效字符,一般用结束符 '\0' 来控制循环
循环条件:s[i] != '\0'
(7)字符串的存储-赋值和输入
- 将字符串存入数组,对字符串初始化还可以采用赋值和输入方法
static char s[6]= "Hello";
s[0]='a'; s[1]='\0';
或者
static char s[6]= "a";
'\0' 代表空操作,无法输入
输入时,设定一个输入结束符
将输入结束符转换为字符串结束符 '\0