内容正文:
专题六 一维数组
【考纲要求】
知识要点
考试条目
5.数组
(1)掌握一维数组的定义及引用;
【课时安排】
2课时
【知识梳理】
一维数组
C语言中的一维数组是相同数据类型元素的集合,这些元素在内存中按顺序连续存储。它是编程中最基础且重要的数据结构之一,适用于存储和处理大量同类型数据。
一、一维数组的定义
语法:
数据类型 数组名[数组长度];
数据类型:数组元素的类型(如 int, float, char 等)。
数组长度:整型常量。
示例:
int scores[5]; // 定义一个包含5个整数的数组
float prices[10]; // 定义一个包含10个浮点数的数组
二、一维数组的初始化
初始化可以在定义时直接赋值:
// 完全初始化
int arr[5] = {1, 2, 3, 4, 5};
// 自动推断长度为3
int arr2[] = {1, 2, 3};
// 部分初始化,剩余元素默认0
int arr3[5] = {1, 2};
三、访问数组元素
索引从0开始:第一个元素是 arr[0],最后一个元素是 arr[长度-1]。
操作示例:
int arr[3] = {10, 20, 30};
arr[1] = 100; // 修改第二个元素为100
printf("%d", arr[0]); // 输出第一个元素:10
四、内存中的存储方式
数组元素在内存中连续存储。
假设 int arr[3] 的地址从 0x1000 开始,则:
arr[0] 在 0x1000(占4字节)
arr[1] 在 0x1004
arr[2] 在 0x1008
五、一维数组的常见操作
1. 遍历数组
int arr[5] = {1, 2, 3, 4, 5};
for (int i = 0; i < 5; i++) {
printf("%d ", arr[i]); // 输出:1 2 3 4 5
}
2. 输入数组元素
int arr[5];
for (int i = 0; i < 5; i++) {
scanf("%d", &arr[i]);
}
3. 查找最大值
int max = arr[0];
for (int i = 1; i < 5; i++) {
if (arr[i] > max) {
max = arr[i];
}
}
4. 冒泡排序
for (int i = 0; i < n-1; i++) {
for (int j = 0; j < n-i-1; j++) {
if (arr[j] > arr[j+1]) {
int temp = arr[j];
arr[j] = arr[j+1];
arr[j+1] = temp;
}
}
}
六、数组作为函数参数
数组名表示数组的首地址,传递时会退化为指针:
void printArray(int arr[], int size) { // 等价于 int *arr
for (int i = 0; i < size; i++) {
printf("%d ", arr[i]);
}
}
int main() {
int arr[3] = {1, 2, 3};
printArray(arr, 3); // 输出:1 2 3
return 0;
}
七、常见错误
1.数组越界访问
int arr[3] = {1, 2, 3};
printf("%d", arr[3]); // 错误!有效索引是0~2
2.用变量定义数组长度:
int size = 5;
int arr[size]; // C89报错,C99允许
3.直接赋值数组:
int a[3] = {1, 2, 3};
int b[3];
b = a; // 错误!需逐个元素复制
【限时练习】
1. 以下定义一维数组的语句中,正确的是( )
A. int a (5);
B. int n=5,a[n];
C. int a[ ];
D. #define N 5 int a[N];
【答案】D
2.int a [5]={1,3,5,7,9};,则语句 printf ("% d",a [3]); 的输出结果是( )
A. 3
B. 5
C. 7
D. 9
【答案】C
3. 有数组定义 int a [10];,则对数组元素的正确引用是( )
A. a [10]
B. a[3.5]
C. a(5)
D. a[10-10]
【答案】D
4. 以下程序段的输出结果是( )
int a[]={1,2,3,4,5};
printf("%d",a[3]);
A. 1
B. 2
C. 3
D. 4
【答案】D
5.以下程序的功能是( )
int a[10],i;
for(i=0;i<10;i++)
a[i]=i*2;
A. 将数组元素初始化为 0 到 9
B. 将数组元素初始化为 0 到 18 的偶数
C. 将数组元素初始化为 1 到 10
D. 将数组元素初始化为 1 到 20 的偶数
【答案】B
6.若有定义 int a [5]={1,3,5,7,9};,则 a [1]+a [3] 的值为( )
A. 8
B. 10
C. 12
D. 14
【答案】B
7.以下程序段的输出结果是( )
int a[]={1,2,3,4,5};
int *p=a;
printf("%d",*(p+4));
A. 1
B. 3
C. 4
D. 5
【答案】D
8.数组名代表数组首元素的地址。( )
【答案】√
9.定义数组时,数组长度可以是变量。( )
【答案】×
10.组元素的下标从 1 开始。( )
【答案】×
11.通过指针可以访问数组元素。( )
【答案】√
12.编写一个程序,计算数组中所有偶数下标的元素之和(下标从 0 开始)。
输入:数组 {3, 7, 2, 9, 4, 6}
输出:3 + 2 + 4 = 9。
【答案】
#include <stdio.h>
int main() {
int arr[] = {3, 7, 2, 9, 4, 6};
int size = sizeof(arr) / sizeof(arr[0]);
int sum = 0;
for (int i = 0; i < size; i += 2) {
sum += arr[i];
}
printf("偶数下标元素之和为: %d", sum);
return 0;
}
【内容小结】
学科网(北京)股份有限公司
$$