Skip to content

考点拆分 02 · 数组 · 字符串 · 指针(约 35 分)

来源:2024 回忆版
系统笔记:1.6 数组 1.8 指针 2.4 串、数组和广义表


必背清单

  • [ ] 下标从 0int a[5] 合法 a[0]..a[4]
  • [ ] 二维数组 行优先 存储
  • [ ] strlen 不含 '\0'sizeof("abcd")=5
  • [ ] strcmp 等在 string.h
  • [ ] 指针作输出:*z = x + y
  • [ ] strcpy 返回目标地址,可嵌套 strlen(strcpy(...))

2024 真题回放

位置答案考点
单选 2Astrcmp → string.h
单选 14D"abcd" 长度 4
判断 2×下标从 0
判断 7行优先
判断 8串是字符线性表
填空 1*z = x + y指针输出参数
填空 22strcpy 后 strlen("Hi")
填空 3顺序/链式串存储
计算 37 / abdefgh过滤字符
应用 13×3 矩阵二维按行赋值
应用 2最高分一维找 max

手撕模板

指针返回两数和

c
void add(int x, int y, int *z) {
    *z = x + y;
}

过滤字符

c
// 把 s 中 != ch 的拷到 t
int j = 0;
for (int i = 0; s[i]; i++)
    if (s[i] != ch) t[j++] = s[i];
t[j] = '\0';

二维按行填数

c
int num = start;
for (int i = 0; i < n; i++)
    for (int j = 0; j < m; j++)
        a[i][j] = num++;

同型自测

  1. char s[]="abc"; printf("%d %d", strlen(s), sizeof(s));
  2. int a[2][3]=&#123;&#123;1,2,3},{4,5,6&#125;&#125;; printf("%d", *(*(a+1)+1));
  3. 写出:输入 n 个数,输出最小值(n≤100)
答案
  1. 3 4
  2. 5(第 2 行第 2 列)
  3. 先读 n,再循环读并维护 min

返回:_索引 · 全卷

仅供个人学习 · 考生回忆版 · 非考试院原卷