把字母和单词分开装
这一课只练一件事:分清 和 ,再按 逐个访问字符。完成四个小任务:选出 char c = 'A' 和 string s = "Ada",走一遍 s[0] 到 s[n - 1],再统计指定字符。这里不会在浏览器里运行 C++。
任务 1:分清字符和字符串
一个字母用 装,写成 char c = 'A'。一个单词用 装,写成 string s = "Ada"。单引号和双引号不是一回事。点不认识的词可看基础解释。
必会:能写出字符常量与字符串常量的区别。姓名、单词不是 char。这里不会在浏览器里运行 C++,只练习选择。
一个字母怎么存?单个字符 · 必会
一个不含空格的单词怎么存?一串字符 · 必会
任务 2:从 s[0] 走到最后一个
最小示例:单词 "Ada"。 n = s.size() 是 3,所以最后一个字符是 s[n - 1],也就是 s[2]。按顺序点三格。这里不会在浏览器里运行 C++。
必会:能说明最后一个字符的下标。边界:s[n] 越界,不要去碰不存在的位置。
- string s = "Ada";
- int n = s.size(); // 3 个字符:下标 0、1、2
- // s[0] 是 'A',s[1] 是 'd',s[2] 是 'a'
- // s[3] 越界,不要写
下标走完了,现在亲手把这个写法敲出来。 从 0 开始,最后一个字符的下标比长度小 1,写 s[n] 会越界。下面是只读脚手架,只留一空给你敲键盘。
- string s = "Ada";
- int n = s.size(); // 3 个字符:下标 0、1、2
- // s[0] 是 'A',s[1] 是 'd',s[2] 是 'a'
- char last = ; // 记下最后一个字符
char last = s[n - 1]; // 最后一个字符,n 变了也对
任务 3:遍历并统计字符
建议掌握:用 s.size() 当长度,循环写成 for (int i = 0; i < n; i++),条件是 i < n。统计某个字符时,比较的是 s[i] == 'a'。判断数字字符可以用 :c >= '0' && c <= '9'。
必会 / 建议掌握 / 拓展:必会是区分 char 与 string 并且不越界。建议掌握是遍历统计和数字判断。wchar 与完整 Unicode 是拓展,现在不用当硬门槛。
- int n = s.size(); int cnt = 0;
- for (int i = 0; i < n; i++)
- if (s[i] == 'a') cnt++;
- // wchar / 完整 Unicode 是拓展:现在先会 char 和 string
先选出建议掌握的统计顺序:
再选出判断数字字符的写法:
任务 4:随机小测,看看你是否真的懂了
每次从本课题库抽出三道不同的选择题。题目与解析已通过校验,答完后看解析,不要只看分数;拿不准就回到对应任务再看一遍。