"数组"考纲要求

核心考点 - 一维数组

高频考点:一维数组的定义格式、下标引用规则(必考)
  • 掌握一维数组的定义格式:类型名 数组名[常量表达式](如int arr[10];)
  • 掌握一维数组的引用方式:数组名[下标],下标从0开始,不能越界
  • 理解一维数组的内存布局:连续存储,按下标顺序访问
  • 掌握一维数组的初始化方法(全初始化、部分初始化、省略长度初始化)

核心考点 - 二维数组

高频考点:二维数组的定义、行列下标引用(必考)
  • 掌握二维数组的定义格式:类型名 数组名[行常量表达式][列常量表达式](如int arr[3][4];)
  • 掌握二维数组的引用方式:数组名[行下标][列下标],行列下标均从0开始
  • 理解二维数组的存储方式:按行存储,先存第一行,再存第二行
  • 掌握二维数组的初始化方法(按行初始化、整体初始化、部分初始化)

核心考点 - 字符数组

高频考点:字符数组的定义、字符串赋值与引用(了解)
  • 了解字符数组的定义格式:char 数组名[常量表达式](如char str[20];)
  • 了解字符数组的引用方式:单个字符引用str[下标],字符串整体引用
  • 理解字符数组与字符串的区别:字符串以'\0'结尾,字符数组可无结束符
  • 了解字符数组的初始化(单个字符初始化、字符串常量初始化)

高频考点精讲

考点1:一维数组的定义及引用(必考)

考试频次:每次必考 | 分值占比:20-25分

核心要点:一维数组定义时长度必须是常量,引用时下标从0开始,不能越界,是改错题和编程题核心考点。

// 一维数组的正确定义与引用示例
#include <stdio.h>

int main() {
    // 定义:类型 数组名[常量长度],长度不能是变量
    int arr[5]; // 正确:长度5是常量
    // int arr[]; // 错误:未指定长度且未初始化
    // int n=5; int arr[n]; // 错误:长度不能是变量(中职考纲要求)

    // 初始化:三种方式
    int arr1[5] = {1,2,3,4,5}; // 全初始化
    int arr2[5] = {1,2}; // 部分初始化,剩余元素为0
    int arr3[] = {1,2,3}; // 省略长度,长度由初始化元素个数决定(3)

    // 引用:下标从0开始,范围0-4(长度5)
    arr[0] = 10; // 正确:第一个元素
    arr[4] = 50; // 正确:最后一个元素
    // arr[5] = 60; // 错误:下标越界(最大下标4)
    printf("第一个元素:%d\n", arr[0]);
    return 0;
}
解题技巧:改错题中一维数组易错点:①定义时长度用变量 ②下标越界 ③初始化时元素个数超过定义长度 ④引用时下标写成1开始;记住“下标从0开始,长度是常量”核心口诀。

考点2:二维数组的定义及引用(必考)

考试频次:每次必考 | 分值占比:15-20分

核心要点:二维数组按“行优先”存储,引用时必须指定行和列下标,是编程题(矩阵遍历、求和)的核心考点。

// 二维数组的正确定义与引用示例
#include <stdio.h>

int main() {
    // 定义:类型 数组名[行长度][列长度],行列长度均为常量
    int arr[3][4]; // 正确:3行4列,共12个元素
    // int arr[3][]; // 错误:列长度不能省略
    // int arr[][4] = {{1,2},{3,4},{5,6}}; // 正确:行长度可省略,列不能省

    // 初始化:按行初始化(推荐)
    int arr2[3][4] = {
        {1,2,3,4}, // 第一行
        {5,6,7,8}, // 第二行
        {9,10,11,12} // 第三行
    };

    // 引用:行下标0-2,列下标0-3
    arr2[0][0] = 100; // 正确:第一行第一列
    arr2[2][3] = 200; // 正确:第三行第四列
    // arr2[3][4] = 300; // 错误:行下标越界(最大2)、列下标越界(最大3)
    printf("第三行第四列:%d\n", arr2[2][3]);
    return 0;
}
解题技巧:二维数组解题口诀:“行在前列在后,下标都从0开头;定义列长不能省,引用越界准出错”;编程题中遍历二维数组优先用双层for循环(外层行、内层列)。

考点3:字符数组的定义及引用(了解)

考试频次:60%考题涉及 | 分值占比:10-15分

核心要点:字符数组用于存储字符或字符串,字符串以'\0'结尾,是选择题和改错题的常考考点。

// 字符数组的定义与引用示例
#include <stdio.h>

int main() {
    // 定义方式1:存储单个字符
    char ch[5] = {'a','b','c','d','e'}; // 无'\0',是字符数组不是字符串
    // 定义方式2:存储字符串(自动加'\0')
    char str[20] = "Hello World"; // 正确:字符串初始化,末尾自动加'\0'
    // char str[5] = "Hello"; // 错误:"Hello"含6个字符(含'\0'),超出长度5

    // 引用单个字符
    str[0] = 'h'; // 正确:修改第一个字符为小写h
    printf("第一个字符:%c\n", str[0]);

    // 引用整个字符串
    printf("完整字符串:%s\n", str); // 正确:输出Hello World(到'\0'为止)
    return 0;
}
解题技巧:字符数组易错点判断:①字符串初始化时长度要留'\0'位置 ②%c输出单个字符,%s输出整个字符串 ③字符数组赋值不能直接用str = "abc"(需用strcpy函数);记住“字符串末尾藏'\0',长度多留一位数”。

实战解题训练

例题1:一维数组改错题 中等

考点定位:一维数组定义、初始化、引用规范(考试重点题型)

题目:找出以下程序中的错误并改正(考试常考题型,分值20分)

// 错误程序
#include <stdio.h>
int main() {
    int n = 5;
    int arr[n];
    arr[5] = {1,2,3,4,5};
    printf("第三个元素:%d", arr[3]);
    return 0;
}

错误分析与改正

  1. int arr[n]; → int arr[5]; (数组长度必须是常量,不能用变量n)
  2. arr[5] = {1,2,3,4,5}; → int arr[5] = {1,2,3,4,5}; (初始化需在定义时完成,不能单独赋值;且arr[5]是下标越界)
  3. arr[3] → arr[2] (第三个元素下标是2,下标从0开始)
解题技巧:一维数组改错题检查优先级:①长度是否为常量 → ②初始化位置是否正确 → ③下标是否越界 → ④输出格式是否匹配。

例题2:二维数组编程题 较难

考点定位:二维数组定义、遍历、求和(考试压轴题型,分值20分)

题目:编写一个C程序,定义3行4列的二维数组并初始化,计算数组中所有元素的累加和,要求符合程序设计规范。

参考答案

// 程序功能:计算3行4列二维数组所有元素的累加和
#include <stdio.h>

int main() {
    // 定义并初始化3行4列二维数组
    int arr[3][4] = {
        {1,2,3,4},
        {5,6,7,8},
        {9,10,11,12}
    };
    int sum = 0;
    // 双层for循环遍历二维数组
    for (int i = 0; i < 3; i++) { // 外层循环:行
        for (int j = 0; j < 4; j++) { // 内层循环:列
            sum += arr[i][j]; // 累加每个元素
        }
    }
    printf("二维数组累加和:%d\n", sum); // 输出结果:78
    return 0;
}
解题技巧:二维数组编程题得分要点:①数组定义格式正确 ②双层for循环遍历(外层行、内层列) ③下标范围正确(行0到行数-1,列0到列数-1) ④累加变量初始化为0。

例题3:字符数组选择题 简单

考点定位:字符数组定义与引用(考试高频题型)

题目:以下关于字符数组的定义,正确的是?(分值10分)

A. char str[5] = "Hello"; B. char str[] = "Hello"; C. char str[5] = {'H','e','l','l','o','\0'}; D. char str[5]; str = "Hello";

答案:B

解析

  • A错误:"Hello"包含6个字符(含'\0'),超出数组长度5
  • B正确:省略长度,数组长度自动为6(包含'\0')
  • C错误:初始化元素个数(6个)超过数组长度5
  • D错误:字符数组不能直接用赋值号赋值字符串,需用strcpy函数
解题技巧:字符数组选择题快速判断法:①看字符串长度是否留'\0'位置 ②看赋值方式是否正确 ③看初始化元素个数是否超出数组长度。

数组考点闯关游戏(满分100分)

当前关卡: 1/10
得分: 0/100
1关 - 高频考点

C语言中一维数组的定义格式,以下正确的是?

恭喜你完成所有考点关卡!

你的最终得分是: 0/100

得分等级:

你已经掌握了数组的核心考点!