C语言第二阶段小结——数组

前言

    • 数组
    • 1、一维数组
      • 数组的定义
      • 一维数组的初始化
      • pta易错题
    • 2、二维数组
      • 二维数组的定义
      • 二维数组的初始化
      • pta易错题
    • 3、 一维字符数组
      • 字符串
      • pta易错题
    • 总结

C语言第二阶段助教小结—函数

数组

chap7.1课前自测正答率
C语言第二阶段小结——数组_第1张图片
chap7.2-3课前自测正答率
C语言第二阶段小结——数组_第2张图片
C语言第二阶段小结——数组_第3张图片
实验4正答率
C语言第二阶段小结——数组_第4张图片
C语言第二阶段小结——数组_第5张图片

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易错题

C语言第二阶段小结——数组_第6张图片
C语言第二阶段小结——数组_第7张图片
C语言第二阶段小结——数组_第8张图片

分析

  • 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易错题

C语言第二阶段小结——数组_第9张图片
C语言第二阶段小结——数组_第10张图片

C语言第二阶段小结——数组_第11张图片
C语言第二阶段小结——数组_第12张图片
分析

  • 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易错题

C语言第二阶段小结——数组_第13张图片

C语言第二阶段小结——数组_第14张图片
分析

  • 1-22、1-23:"a"由‘a’,’\0’组成,“a”是字符串,与字符‘a’不等价。
  • 3-24:静态字符数组部分初始化时,其他为赋值的元素均为0,也就是‘\0’,字符串最后以‘\0’结束,C和Ds[6]为’\0’。

总结

从做题情况来看,数组这部分正确率相对较高。数组这部分内容要理解数组在内存中的是如何存储的,数组下标不要越界,字符串与字符数组的区别,编程题要多练。

你可能感兴趣的:(助教小结)