笔记
参考课程 PPT,考察基础语法。
一些偷鸡的方法
字符串处理
使用 strtok() 分词:
Tip
这个方法还是蛮好用的,在 24 智工 C 语言和 25 网安 C 语言期末考试都可以使用。
token = strtok(sentence, " ");
while (token != NULL) {
// 处理逻辑
token = strtok(NULL, " ");
}常见算法
使用 qsort() 排序:
Warning
这个函数经常被反制,比如让你输出某一种排序的某一个中间状态。
int cmp(const void *a, const void *b) {
int x = *(const int *)a;
int y = *(const int *)b;
return x - y; // 升序
}
int main() {
int arr[] = {5, 2, 8, 1, 9};
qsort(arr, sizeof(arr) / sizeof(arr[0], sizeof(int), cmp);
return 0;
}一些没考但是讲过,我觉得很好玩的算法
全排列算法:next_permutation
int next_permutation(int a[], int n) {
if (n <= 1) return 0;
// 1) 从右往左找第一个 a[i] < a[i+1] 的位置 i(pivot)
int i = n - 2;
while (i >= 0 && a[i] >= a[i + 1]) i--;
// 若没找到,说明是最后一个排列(整体非递增)
if (i < 0) {
reverse(a, 0, n - 1); // 回到最小排列
return false;
}
// 从右往左找第一个 a[j] > a[i] 的位置 j(右侧最小的大于 pivot 的数)
int j = n - 1;
while (a[j] <= a[i]) j--;
// 交换 pivot 和 a[j]
swap(&a[i], &a[j]);
// 4) 反转 i+1..n-1 后缀(变成最小的升序后缀)
reverse(a, i + 1, n - 1);
return true;
}真题
理论
忘光了,记得有个写错了的是数组指针指针数组。
可以看看这个视频:顺时针螺旋移动法|彻底弄懂复杂C/C++嵌套声明 const常量声明

实验
模板题
- 链表翻转
代码题
- 矩阵乘法
- 冒泡排序前K步
- 循环数组
- 计算当月天数
- 汉诺塔的前K步
- 带通配符的括号匹配
- 区间内的回文素数
- 最长最短单词
NOTE
提前一个半小时出考场,感恩题量和弱样例。