🔤 字符串大闯关

C5-3 字符串模拟与输出调试 · 5关挑战 · 成为字符串小达人

⭐ 趣味性 ★★★★★

🔤 第1关:字符串函数知多少

想求字符串 s="programming" 的长度,应该用哪个函数?
A. s.length()
B. s.size()
C. s.len()
D. s.count()
提示:在 C++ 的 string 里,求长度和求容量用的是同一个名字——"大小"。回想代码填空第1关填的是什么?

🔍 第2关:重叠还是不重叠

字符串 "ababa" 中,子串 "aba" 出现了几次(允许重叠)?
A. 1次
B. 2次
C. 3次
D. 4次
提示:允许重叠时从每个位置都检查一遍。位置0是 aba✓,位置1是 bab✗,位置2是 aba✓。数一下打勾的有几个?

🔧 第3关:编译错误找一找

编译时报错 error: expected '}' at end of input,最可能是哪里写错了?
A. 少写了一个分号 ;
B. 少写了一个右大括号 }
C. 变量名拼错了
D. 没有引入头文件
提示:报错信息里"expected '}'"就是"期望一个右大括号}"。编译器在文件最后一行还在等它。

🎉 第4关:开心消消乐

在消消乐里,消掉连续3个相同字符后,为什么要 break 从头重新扫描?
A. 因为程序写快了会出错
B. 因为消掉后左右拼接可能形成新的三连
C. 因为不 break 就会无限循环
D. 只是习惯,没有特别原因
提示:比如"aabbba",消掉中间的 bbb 后,左右的 a 会拼到一起,可能又形成新的可消除组合,所以必须从头再扫一遍。

🐛 第5关:输出调试法

程序编译通过了,但运行结果不对。最好的调试方法是?
A. 把代码全删掉重写
B. 用 cout 打印中间变量,看哪一步跑偏
C. 多运行几次碰碰运气
D. 换一台电脑运行
提示:编译通过但结果错 = 逻辑错误。在关键位置加 cout 打印 i、cnt 等中间变量,一步步定位 bug 在哪。记住:一次只改一个地方!
🎉🏆🎉

恭喜通关全部5关!

你已经掌握了 C5-3 字符串模拟与输出调试的核心知识!
字符串函数、有重叠/无重叠计数、消消乐、编译错误、输出调试——全都会了!

去"代码填空"和"OJ练习"继续巩固吧,💪