一、知识点
1.二维数组的定义
·类型说明符 数组名[常量表达式][常量表达式](例:float a[3][4],b[5][10]; )
·说明:①可以把二维数组看作是一种特殊的一维数组。
②二维数组在内存中按行存放。
③多维数组定义方式与二维数组类似。
2.二维数组的引用
·引用形式为: 数组名[下标][下标](注:下标可以是整型表达式,但应在已定义的数组大小的范围内。)
3.二维数组的初始化
①分行给二维数组赋初值。
②可以将所有数据写在花括弧内,按数组排列的顺序对各元素赋初值。
③可以对部分元素赋初值,不赋的为0。
④如果对全部元素都赋初值,则定义数组时对第一维的长度可以不指定,但第二维的长度不能省。
4.二维数组的输入与输出
·矩阵与二维数组
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
5.字符数组
·字符串的存储和运算可以用一维字符数组实现。
·一维字符数组的定义、引用、初始化与其他类型的一维数组一样。
·字符串常量用一对双引号括起来的字符序列。
·字符串的有效长度:有效字符的个数。
6.字符串与一维字符数组
·字符串:一个特殊的一维字符数组。
·把字符串放入一维字符数组(存储)。
·对字符串的操作 ===> 对字符数组的操作。
·字符串的存储-数组初始化:①字符串可以存放在一维字符数组中
②字符数组初始化:用字符串常量
③数组长度 >= 字符串的有效长度 + 1
·字符串的存储:①字符串遇 ' ' 结束
②第一个 ' ' 前面的所有字符和 ' ' 一起构成了字符串
③' ' 之后的其他数组元素与该字符串无关
·对字符串的操作:①把字符串放入一维字符数组(存储)
②对字符串的操作 ===> 对字符数组的操作:
·普通字符数组:数组元素的个数是确定的,一般用下标控制循环。
·字符串:没有显式地给出有效字符的个数,只规定在字符串结束符 ' ' 之前的字符都是字符串的有效字符,一般用结束符 ' ' 来控制循环。
·循环条件:s[i] != ' ' 。
·字符串的存储-赋值和输入:
将字符串存入数组,对字符串初始化还可以采用赋值和输入方法:①数组初始化②赋值或者输入' ' 代表空操作,无法输入(输入时,设定一个输入结束 符,将输入结束符转换为字符串结束符 ' ')
二、实验过程中遇到的问题及解决方法:
1.
#include<stdio.h> int main() { int i,j; int a[9][9]; for(i=1;i<9;i++){ for(j=1;j<9;j++){ a[i][j]=i*j; printf("%d*%d=%d ",i,j,a[i][j]); } printf(" "); } return 0; }
在定义数组长度的时候忘记“数组长度 >= 字符串的有效长度 + 1”这一原则,只是输出的程序不完整。(需要加深理解记忆,多加强练习,注重细节)
2.在编写字串符程序时,对其的储存和操作步骤不熟练,总爱漏写结束符' ',致使程序不完整,无法正常运行。(首先进行再次学习、记忆,对不清楚的地方多看多记多练)
三、实验心得体会
最近学习的数组知识分为一维数组和二维数组,其实两个数组都是同一个运用的道理,虽然难度在不断地增加,但是只要上课认真跟着老师的思路学习,课后加强理解学习,也能基本掌握应用。
二维数组的初始化