C语言第二阶段助教小结—函数
数组
chap7.1课前自测正答率
chap7.2-3课前自测正答率
实验4正答率
1、一维数组
数组的定义
类型 数组名[常量表达式]
数组是一组相同类型数据的集合,数组开辟的空间是连续的。数组下标是从0开始,最大下标为数组长度减1,下标不能越界,数组名不能与其他变量名相同,数组名表示该数组所分配连续内存空间中第一个单元的地址,即首地址。数组空间一经分配之后再运行过程中不会改变,因此数组名是一个地址常量,不允许修改。
例:int a[10] 表示在内存中开辟了10个连续的 int大小的空间,总长度为10*sizeof(int),数组下标为0到9。
一维数组的初始化
初始化形式:
类型名 数组名 [数组长度] = {
初值表};
初值表依次存放着数组元素的初值
例1:int a[10]={
1,2,3,4,5,6,7,8,9,10];
数组长度为10,元素依次为1到10
例2:int a[10]={
1};
数组长度为10,a[0]的值为1,其他为0
例3:int a[]={
1,2,3,4,5}
对全部元素赋值时,数组长度可以省略,a[0]为1...a[4]为5
例4:int a[10];
数组中元素的值将由系统随机赋值
例5:static int a[10]
静态数组若未初始化,系统自动给所有元素赋值为0。
pta易错题
分析
- 1-2:类型名指定数组中每个元素的类型。
- 2-1、2-2 数组所占字节数 = 数组长度 * sizeof(数据类型)
- 3-1 数组的下标从0开始,到数组长度减1,否者超过会报数组越界的错误。a[-1]理论上是访问数组首地址的前一个地址,但这样的内存地址未知,所以这是不合法访问。
2、二维数组
二维数组的定义
二维数组的定义形式
类型名 数组名[行长度][列长度]
行小标的合理取值范围是[0,行长度-1],列下标的合理取值范围是[0,列长度-1],注意下标不要越界。
二维数组的初始化
二维数组初始化方法有两种。
1、分行赋初值
一般形式为:
类型名 数组名[行长度][列长度] = {
{
初值表0},{
初值表1},..{
初值表k}};
例1:int a[3][3] = {
{
1,2,3},{
4,5,6},{
7,8,9}};
a数组中各元素为:
1 2 3
4 5 6
7 8 9
例2:int a[3][3] = {
{
1,2},{
4,5,6},{
}};
部分初始化
a数组中各元素为:
1 2 0
4 5 6
0 0 0
例3:int a[][3]={
{
1,2,3},{
4,5,6},{
7,8,9}};
结果同例1,如果对所有行都赋值,可以省略行长度,但列长度不能省略。
2、顺序赋初值
一般形式为:
类型名 数组名[行长度][列长度] = {
初值表};
例1:int a[3][3]={
1,2,3,4,5,6,7,8,9}
a数组中各元素为:
1 2 3
4 5 6
7 8 9
例2:int a[3][3] ={
1}
a数组中各元素的值为
1 0 0
0 0 0
0 0 0
例3:int a[][3]={
1,2,3,4,5,6,7,8,9}
若对全部元素都赋了初值,可以省略行长度。
pta易错题
分析
- 1-1、1-2:类型名指定数组中每个元素的类型。
- 1-5、1-6:int a[行长度][列长度]可以放行长度*列长度个元素。
- 3-1:数组部分初始化时未赋初值的元素都为0,数组未初始化时,数组各元素的值由系统随机赋值,而静态数组在为初始化是,各元素初值为0,部分初始化时,未初始化的元素的值也为0。
3、 一维字符数组
定义字符数组一般形式
char 数组名[数组长度]
一维字符数组用于存放字符型数据,它的定义、初始化和应用于其他数据类型一样。
初始化字符数组
例1:char str[5]={
'H','a','p','p','y'};
下标范围为[0,4]
字符串
字符串常量就是用一对双引号括起来的字符序列,即一串字符,它有一个结束标志‘\0’(ASCII值为0)。
例:字符串“Happy”由六个字符组成,‘H’,‘a’,‘p’,‘p’,‘y’,’\0’。
例:char str[2];
str[0]='a';
str[1]='\0';
等价于char str[2]="a";
'\0’表示字符串出入结束,ASCII值为0,无法输入。
pta易错题
分析
- 1-22、1-23:"a"由‘a’,’\0’组成,“a”是字符串,与字符‘a’不等价。
- 3-24:静态字符数组部分初始化时,其他为赋值的元素均为0,也就是‘\0’,字符串最后以‘\0’结束,C和Ds[6]为’\0’。
总结
从做题情况来看,数组这部分正确率相对较高。数组这部分内容要理解数组在内存中的是如何存储的,数组下标不要越界,字符串与字符数组的区别,编程题要多练。