内容正文:
举一反三考点练
《C语言程序设计》数组与结构类型-讲义
1. 掌握数组和数组元素概念;
2. 掌握一维数值型数组的定义、引用、初始化;
3. 掌握二维数值型数组的定义、引用、初始化;
知识点一 数组和数组元素概念
一、数组的概念
数组是一组具有相同数据类型的数据的集合,这些数据在内存中连续存放,可以通过数组名和下标来唯一确定数组中的元素。
数组的特点:
数据类型相同:数组中的所有元素必须是同一类型的数据。
连续存放:数组元素在内存中占据一段连续的存储空间。
有固定长度:数组在定义时需要指定长度,即数组中元素的个数,长度一旦确定,在整个程序运行过程中不可改变。
二、数组元素的概念
数组元素是指数组中的单个数据项,也称为数组的一个成员。
数组元素的表示方法:数组名[下标],其中下标是一个整型表达式,表示元素在数组中的位置。
数组元素的下标从0开始,例如,一个长度为n的数组,其元素的下标范围为0到n-1。
三、数组的定义和初始化
数组的定义格式:
数据类型 数组名[长度];
例如:int arr[10]; 表示定义了一个整型数组arr,长度为10。
数组的初始化:
静态初始化:在定义数组时,直接为数组元素赋初值。
例如:int arr[5] = {1, 2, 3, 4, 5};
动态初始化:在程序运行过程中,通过循环等操作为数组元素赋值。
四、数组的访问
通过数组名和下标来访问数组元素,例如:arr[0]表示访问数组arr的第一个元素。
数组元素的下标不能越界,否则会导致程序运行错误。
五、数组的常见操作
遍历数组:通过循环结构,依次访问数组中的每个元素。
查找数组元素:在数组中查找某个特定的元素,返回其下标或位置。
插入数组元素:在数组的指定位置插入一个新元素,通常需要移动其他元素。
删除数组元素:删除数组中的某个元素,同样需要移动其他元素。
排序数组:将数组中的元素按照一定的顺序进行排列,如冒泡排序、选择排序等。
1. (单项选择题)下列关于C语言数组的说法,错误的是?( )
A. 数组中的所有元素必须是同一类型的数据
B. 数组元素在内存中占据一段连续的存储空间
C. 数组定义时可以不指定长度
D. 数组名表示的是数组首元素的地址
【答案】C
【解析】数组定义时必须指定长度,即数组中元素的个数。
【要点】考查数组定义的基本要求。
1. (单项选择题)以下哪个选项是正确的数组元素访问方式?( )
A. int arr[5]; printf("%d", arr[5]);
B. char ch[3] = {'a', 'b', 'c'}; printf("%c", ch[3]);
C. double d[2] = {1.0, 2.0}; printf("%f", d[1]);
D. float f[4]; printf("%f", f[-1]);
【答案】C
【解析】选项C正确访问了数组d的第二个元素。
【要点】考查数组元素的访问规则。
2. (单项选择题)以下哪个操作不能在数组定义时进行?( )
A. 静态初始化 B. 动态初始化 C. 指定数组长度 D. 改变数组类型
【答案】D
【解析】数组定义时不能改变数组类型,类型在定义时已经确定。
【要点】考查数组定义的操作。
3. (判断题)数组元素的下标可以从1开始。( )
【答案】×
【解析】数组元素的下标从0开始。
【要点】考查数组元素下标的起始值。
1. (判断题)在C语言中,可以通过数组名来获取整个数组的大小。( )
【答案】√
【解析】可以通过sizeof运算符和数组名来获取整个数组的大小,即sizeof(数组名)。
【要点】考查数组大小的获取方法。
2. (填空题)在C语言中,定义一个长度为10的整型数组,其所有元素初始化为0的正确写法是______。
【答案】int arr[10] = {0};
【解析】使用单个元素初始化,并将所有元素初始化为0。
【要点】考查数组的初始化方法。
3. (填空题)在C语言中,访问数组arr的第i个元素的正确写法是______。
【答案】arr[i-1]
【解析】由于数组下标从0开始,第i个元素的实际下标是i-1。
【要点】考查数组元素的访问方法。
· 数组定义与特性:C语言中的数组是一组具有相同数据类型的元素的集合,它们在内存中连续存放。数组在定义时必须指定数据类型和长度,且长度一旦确定,程序运行过程中不可更改。
· 数组元素访问:数组元素通过下标来访问,下标从0开始。正确的访问方式是使用数组名和方括号内的下标,例如array[index],其中index是整数。
· 数组初始化:数组可以在定义时进行初始化,可以静态初始化(指定每个元素的初始值)或动态初始化(指定第一个元素的值,其他元素自动初始化为0)。例如,int arr[5] = {1, 2, 3, 4, 5};或int arr[5] = {0};。
· 数组操作注意事项:数组操作时需要注意下标越界的问题,即下标必须是在0到数组长度减1的范围内。此外,数组名代表数组首元素的地址,不能直接用于获取数组长度,需要借助其他方法(如sizeof运算符)来获取。
知识点二 一维数值型数组的定义、引用、初始化
一、定义
数组是一组具有相同数据类型的元素的集合,每个元素都可以通过索引(或称为下标)来访问。
一维数值型数组的定义格式如下:
数据类型 数组名[常量表达式];
其中,数据类型可以是基本数据类型(如int、float、double等),数组名是用户自定义的标识符,常量表达式表示数组元素的个数,它必须是一个整型常量。
二、引用
数组元素通过索引来引用,索引从0开始,到数组的长度减1结束。
引用一维数值型数组元素的格式如下:
数组名[索引];
其中,索引是一个整型表达式,表示要访问的元素在数组中的位置。
举例:假设有一个整型数组a,包含5个元素,如下所示:
int a[5];
则数组元素的引用方式为:
a[0]; // 引用第一个元素
a[4]; // 引用第五个元素
三、初始化
在定义数组时,可以对其进行初始化,即将初始值赋给数组元素。
一维数值型数组的初始化有以下几种方式:
(1)在定义数组时,将初始值依次赋给数组元素,如下所示:
int a[5] = {1, 2, 3, 4, 5}; // 将1, 2, 3, 4, 5分别赋给a[0], a[1], a[2], a[3], a[4]
(2)如果初始化列表中的元素个数少于数组长度,则未赋初值的元素将被自动初始化为0,如下所示:
int b[5] = {1, 2, 3}; // b[0] = 1, b[1] = 2, b[2] = 3, b[3] = 0, b[4] = 0
(3)如果初始化列表中的元素个数等于数组长度,则可以省略数组长度,如下所示:
int c[] = {1, 2, 3, 4, 5}; // 等价于 int c[5] = {1, 2, 3, 4, 5};
(4)如果要对部分数组元素进行初始化,可以使用指定索引的方式,如下所示:
int d[5] = {[2] = 3, [4] = 5}; // d[0] = 0, d[1] = 0, d[2] = 3, d[3] = 0, d[4] = 5
1. (单项选择题)下列关于一维数值型数组的说法,错误的是?( )
A. 数组元素通过索引访问,索引从1开始
B. 数组定义时,常量表达式的值必须是一个整型常量
C. 数组名表示的是数组的首地址
D. 数组元素的数据类型必须相同
【答案】A
【解析】数组元素通过索引访问,索引从0开始。
【要点】考查一维数值型数组的索引起始值。
1. (单项选择题)以下哪个选项是正确的一维数值型数组初始化方式?( )
A. int a[3] = {1, 2, 3, 4}; B. int b[] = {1, 2, 3}; C. int c[3] = (1, 2, 3); D. int d[3] = {1, 2};
【答案】B
【解析】选项B正确地初始化了一个一维数值型数组,且省略了数组长度。
【要点】考查一维数值型数组的初始化方式。
2. (单项选择题)下列关于一维数值型数组元素的引用,错误的是?( )
A. int a[5]; a[0] = 1; B. int b[5]; b[5] = 2; C. int c[5]; c[4] = 3; D. int d[5]; d[2] = 4;
【答案】B
【解析】数组b的索引范围是0到4,b[5]越界引用。
【要点】考查一维数值型数组元素的引用范围。
3. (判断题)一维数值型数组在定义时,其元素个数可以是变量。( )
【答案】×
【解析】一维数值型数组在定义时,其元素个数必须是整型常量。
【要点】考查一维数值型数组定义时的常量表达式。
1. (判断题)一维数值型数组初始化时,如果初始化列表中的元素个数少于数组长度,则未赋初值的元素将被自动初始化为0。( )
【答案】√
【解析】根据C语言规定,未初始化的数组元素将被自动初始化为0。
【要点】考查一维数值型数组初始化的默认值。
2. (填空题)定义一个包含10个整型元素的数组,并将所有元素初始化为0,正确的定义方式是______。
【答案】int a[10] = {0};
【解析】使用初始化列表将所有元素初始化为0。
【要点】考查一维数值型数组的定义和初始化。
3. (填空题)假设有一个整型数组int arr[5] = {1, 2, 3, 4, 5};,引用第三个元素的正确方式是______。
【答案】arr[2]
【解析】数组索引从0开始,第三个元素的索引为2。
【要点】考查一维数值型数组元素的引用。
· 数组定义:一维数值型数组的定义需要指定数据类型、数组名以及一个表示元素个数的整型常量表达式,格式为 数据类型 数组名[常量表达式];。
· 索引范围:一维数值型数组的元素通过索引访问,索引从0开始,直到数组的长度减1。例如,一个长度为n的数组,其索引范围是0到n-1。
· 初始化规则:一维数值型数组可以在定义时进行初始化,可以使用初始化列表为所有或部分元素赋初值。如果初始化列表中的元素个数少于数组长度,未赋初值的元素将被自动初始化为0。
· 元素引用:一维数值型数组的元素可以通过数组名和索引来引用,格式为 数组名[索引];,索引必须是在定义时指定的数组长度范围内的整数值。
知识点三 二维数值型数组的定义、引用、初始化
一、定义
二维数组是一种特殊的数组,它可以看作是由多个一维数组组成的。在C语言中,二维数组的定义格式如下:
数据类型 数组名[行数][列数];
其中,数据类型表示数组中元素的类型,数组名是用户自定义的标识符,行数和列数分别表示二维数组的行数和列数。
例如,定义一个3行4列的整型二维数组:
int arr[3][4];
二、引用
二维数组的元素可以通过数组名和索引来引用。索引从0开始,第一个索引表示行号,第二个索引表示列号。
引用格式如下:
数组名[行索引][列索引];
例如,引用上面定义的二维数组arr的第2行第3列元素:
arr[1][2];
三、初始化
在定义二维数组时,可以对其进行初始化。初始化的值用花括号{}括起来,按照行优先的顺序依次赋值。
初始化的几种方式:
(1)完全初始化:为二维数组的所有元素赋初值。
例如:int arr[3][4] = {{1, 2, 3, 4}, {5, 6, 7, 8}, {9, 10, 11, 12}};
(2)部分初始化:只对部分元素赋初值,未赋初值的元素自动赋值为0。
例如:int arr[3][4] = {{1, 2}, {3}, {4, 5}};
(3)省略行数:在初始化时可以省略行数,但列数不能省略。
例如:int arr[][4] = {{1, 2, 3, 4}, {5, 6, 7, 8}, {9, 10, 11, 12}};
此时,编译器会根据初始化值的数量自动确定行数。
注意事项:
(1)初始化时,花括号内的值数量不能超过二维数组的总元素数量。
(2)省略行数时,列数必须指定,以便编译器计算行数。
1. (单项选择题)下列关于C语言二维数组的说法,错误的是?( )
A. 二维数组可以看作是由多个一维数组组成的
B. 二维数组的行数和列数在定义时必须指定
C. 二维数组的索引从1开始
D. 二维数组的元素可以通过数组名和索引来引用
【答案】C
【解析】二维数组的索引从0开始,而不是从1开始。
【要点】考查二维数组的索引起始值。
1. (单项选择题)以下哪个选项是正确的二维数组初始化方式?( )
A. int arr[3][4] = {1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12};
B. int arr[3][4] = {{1, 2}, {3, 4}, {5, 6}};
C. int arr[][4] = {1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12};
D. int arr[3][] = {{1, 2, 3, 4}, {5, 6, 7, 8}, {9, 10, 11, 12}};
【答案】C
【解析】选项C正确地省略了行数,但指定了列数,符合二维数组初始化的规则。
【要点】考查二维数组的初始化方式。
2. (单项选择题)下列关于二维数组元素的引用,错误的是?( )
A. arr[0][0] 引用二维数组的第一个元素
B. arr[1][2] 引用二维数组的第三行第三列元素
C. arr[2][3] 引用二维数组的第四行第四列元素
D. arr[3][4] 引用二维数组的第五行第五列元素
【答案】D
【解析】二维数组的索引从0开始,所以arr[3][4]实际上是引用第六行第五列元素,超出了数组范围。
【要点】考查二维数组元素的引用。
3. (判断题)在C语言中,二维数组的行数可以省略,但列数不能省略。( )
【答案】√
【解析】在初始化二维数组时,可以省略行数,但列数必须指定。
【要点】考查二维数组初始化时的行数和列数。
1. (判断题)C语言中,二维数组的每一行元素数量必须相同。( )
【答案】√
【解析】在C语言中,二维数组的每一行元素数量必须相同,这是二维数组的定义要求。
【要点】考查二维数组的定义规则。
2. (填空题)在C语言中,定义一个3行4列的整型二维数组,应使用以下语句:_________。
【答案】int arr[3][4];
【解析】在定义二维数组时,需要指定数据类型。
【要点】考查二维数组的定义格式。
3. (填空题)引用二维数组arr的第2行第3列元素,应使用以下表达式:_________。
【答案】arr[1][2]
【解析】引用二维数组元素时,需要使用数组名和对应的行索引、列索引。
【要点】考查二维数组元素的引用方式。
· 二维数组的结构:二维数组可以看作是由多个一维数组组成的,每个一维数组代表二维数组的一行,而行内的每个元素通过列索引来访问。
· 数组的定义与索引:在定义二维数组时,必须指定列数,行数可以省略(在初始化时),数组的索引从0开始,即第一行和第一列的索引为0。
· 数组的初始化:二维数组可以通过花括号{}进行初始化,初始化时可以省略行数,但列数必须指定。初始化值的数量不能超过数组的总元素数量。
· 数组元素的引用:二维数组的元素通过数组名和两个方括号内的行索引和列索引来引用,例如array[i][j]引用的是第i+1行第j+1列的元素。
原创精品资源学科网独家享有版权,侵权必究!2
学科网(北京)股份有限公司
学科网(北京)股份有限公司
$$