二级C等考上机辅导
看完你能独立拆解六类字符串题并写出机考得分代码
按 空格/→ 演示下一步
全部页面点击任意一页,跳回舞台从这页播放
二级C等考上机辅导
看完你能独立拆解六类字符串题并写出机考得分代码
为什么要学字符串处理
你在网站注册账号时,系统要检查用户名合不合法、密码够不够强、手机号格式对不对——这些背后都是字符串处理在干活。二级C的上机考题,几乎年年都会在这块出题。
每个字符像包裹,按规则逐个扫描、判断、归类
字符串的基本概念
上页我们谈了为什么要处理字符串——但'一串字符'在内存里到底长什么样?程序怎么知道它在哪里开始、到哪里截止?这一页我们把它拆开来看清楚。
每格存一个字符,最末格亮起'结束灯',扫描到此停步
字符串连接的实现
手写 my_strcat:用指针把 src 的内容追加到 dest 的 '\0' 之后,再逐拍展示复制过程。
四行核心逻辑:存起点 → 找 '\0' → 边拷边走 → 返回原地址,这正是标准库 strcat 的真实做法。
删除指定字符的思路
用两个指针分别演示原地删除与新字符串两种写法,直观看清写指针什么时候才动。
两种解法核心都是「读指针 i 扫源串,不是目标字符时写指针 j 才前进」,差别只在结果写回原串还是新串。
基础操作自测
手动实现字符串A+B连接时,从A的'\0'处开始依次写入B的每个字符,写完后新串末尾的'\0'从哪来?
字符查找的本质
你在一本书里找某个字——从第一页开始翻,对上就停。这「从头到尾逐个比」就是字符串查找的骨架。
逐页翻=遍历;遇关键字=命中;翻完不见=失败
统计字符出现次数
一段把单字符与子串统计合二为一的 C 程序。
逐位指针比对完成单字符统计;strstr 滑动找子串,p += len 跳过整段以避免重叠——这就是单/多字符统计的关键分界。
大小写不敏感查找
用 tolower 实现大小写不敏感查找,重点是参数必须强转 unsigned char。
`(unsigned char)` 是避免 UB 的关键——signed char 上 >127 的字节会被解释为负数,传给 tolower 触发未定义行为。
典型考题解析
一道真题从文字变成能跑的代码,要走完下面这五步。
查找统计自测
用"遍历计数"思路统计字符串s中某字符出现次数时,循环终止条件与计数动作最准确的是?
什么是字符移位
前面几页我们都在字符串里做查找、统计——字符原地不动,我们来回走。现在反过来:让字符串本身挪一挪、滚一滚。
12 点过后是 1 点,数字到尽头自动绕回起点,不会消失
左移位的实现
对比两种左移实现:逐字符前移 vs 缓冲区法,看它们如何把 "abcdef" 变成 "cdef"。
方法一用循环逐个往前挪;方法二先把后半段存进 buf 再覆盖回原串。两种都要补 '\0'。
右移位的实现
右移位必须从串尾倒着往前搬字符,否则会把还没读到的源字符覆盖掉。
右移就是逐个把字符向右挪 n 位;循环必须从 len-1 倒着走到 n,否则 s[i-n] 还没读就被前面那次赋值覆盖了。
回文字符串的判定
对称性、中心扩展法、双指针法
回文判断代码实现
输入一行文本,程序筛出字母数字、忽略大小写,再用首尾指针判断它是否为回文。
高亮处先去除换行,只保留 ASCII 字母数字并统一大小写;随后首尾比较,一旦不对称就输出 No,全部对称才输出 Yes。
移位与回文自测
字符串“ABCDEF”右移2位后,结果是?
字符与数字的关系
你有没有想过:'5' - '0' 为什么能算出整数 5?因为字符在内存里就是按整数存的。ASCII 表里数字字符码值连续,这就是字符与数字关系的核心。
102 与 108 相差 6 号;'2' 和 '8' 的码差也是 6
数字字符串转整数
用 C 实现 atoi:跳过空白、识别符号、逐位累加,并在累加前预判溢出,是机考常考题型。
L10 跳过空白;L14 用三目运算识别单符号位;L21 在乘 10 之前用 (INT_MAX-d)/10 预判溢出,比「乘完再判断」更稳妥。
整数转数字字符串
手写 my_itoa:把整数逐位拆成字符,展示『逆序存 + 反转』的经典套路。
高亮展示核心四步:取模 + '0' 把数字变字符、除 10 推进、补符号、双指针反转。整体思路是『逆序存,最后反转』。
字符串与数字的转换对比
用atoi和sprintf双向对照,重点看边界情况的处理
atoi从左到右扫描,遇非数字停止;转换失败返回0,无法区分真零和失败。sprintf按格式符把整数完整写入字符串,无截断、无歧义。
转换类题目自测
对字符串s[]="309"循环三次执行 `n=n*10+s[i]-'0'` 后,n的值是?
六类题型的共同规律
- ✓几乎所有操作都可归结为一次完整的遍历
- ✓下标与长度关系决定边界,越界往往只差一
- ✓先列正常、极值和缺失场景,再编码更稳妥
- ✓把状态和变化规律理清,能减少重复与遗漏
字符串处理方法图谱
六类题型对应六种核心思路,先看分支、再看每类下的代表解法。
课后思考
先自己想,再看参考答案。三题分别对应回顾、应用、迁移。
参考答案下标本质是相对数组起点的偏移量。a[i] 与 *(a+i) 完全等价,编译器最终都翻译成指针算术,运行时没有区别。
参考答案能用。遍历框架一字不改,只把判断条件从'等于指定字符'换成'等于前一个字符'——这就是六类题的共同规律。
参考答案不能直接套。按字节遍历会把一个汉字从中间劈开,输出乱码。需按字符宽度遍历,或换用宽字符库。