学习目标:
- 理解数组和字符串的概念(存储多个数据的“盒子”)。
- 掌握数组的声明、初始化和遍历方法。
- 能用字符串处理简单文本问题(如字符计数、回文判断)。
1 一维数组
基本概念
- 比喻:
- 数组就像“储物柜”,每个格子有编号(索引),存放不同的物品(数据)。
- 索引从
0
开始(第一个元素是arr[0]
,第二个是arr[1]
)。
声明与初始化
// 声明一个长度为5的整型数组
int scores[5]; // 声明并初始化
int numbers[3] = {10, 20, 30};
示例1:班级平均分计算
int scores[5] = {80, 90, 85, 70, 95};
int sum = 0;
for (int i = 0; i < 5; i++) { sum += scores[i];
}
cout << "平均分:" << sum / 5.0;
运行结果:
平均分:84
示例2:找最大值
int arr[5] = {3, 9, 2, 7, 5};
int max = arr[0];
for (int i = 1; i < 5; i++) { if (arr[i] > max) max = arr[i];
}
cout << "最大值是:" << max;
运行结果:
最大值是:9
2 字符串基础
两种表示方式
- 字符数组(C风格字符串)
char name[10] = "Alice"; // 最后自动添加 '\0'
- string类(更简单)
#include <string>
string city = "Beijing";
常用操作
操作 | 代码示例 |
---|---|
获取长度 | s.length() 或 s.size() |
访问字符 | s[0] (第一个字符) |
字符串拼接 | s1 + s2 (如 “Hello” + “World”) |
示例1:字符计数
string sentence = "I love coding!";
int count = 0;
for (int i = 0; i < sentence.length(); i++) { if (sentence[i] == 'o') count++;
}
cout << "字母o出现了" << count << "次";
运行结果:
字母o出现了2次
示例2:回文判断
string word = "level";
bool isPalindrome = true;
for (int i = 0; i < word.length() / 2; i++) { if (word[i] != word[word.length() - 1 - i]) { isPalindrome = false; break; }
}
cout << (isPalindrome ? "是回文!" : "不是回文!");
运行结果:
是回文!
3 常见错误 & 调试技巧
易错点
- 数组越界
int arr[3] = {1, 2, 3};
cout << arr[3]; // ❌ 索引只能是0、1、2
- 字符数组未预留空间
char str[5] = "Hello"; // ❌ "Hello"需要6个字符(含'\0')
- **混淆
=
和 **==
if (s = "abc") { ... } // ❌ 应写为 s == "abc"
调试技巧
- 打印数组内容:
for (int i=0; i<5; i++) cout << arr[i] << " ";
- 使用
getline
读取含空格的字符串:
string input;
getline(cin, input); // 可以读取整行(包括空格)
4 练习与挑战
基础练习
- 统计元音字母:输入一个句子,统计元音字母(a、e、i、o、u)的数量。
- 反转数组:将数组
{1, 2, 3, 4, 5}
反转为{5, 4, 3, 2, 1}
并输出。
进阶挑战
- “贪吃蛇”地图:用二维数组表示游戏地图(
#
代表墙,.
代表空地),并输出地图。
char map[5][5] = { {'#','#','#','#','#'}, {'#','.','.','.','#'}, {'#','.','@','.','#'}, // @代表食物 {'#','.','.','.','#'}, {'#','#','#','#','#'}
};
- “单词猜谜”游戏:用字符串存储一个单词(如 “apple”),玩家每次猜一个字母,显示已猜中的位置(如
a _ _ _ _
)。
总结
知识点 | 关键内容 |
---|---|
数组 | 用索引访问元素,适合存储固定数量的数据。 |
字符串 | 使用 string 类简化操作(如拼接、长度获取)。 |
常见问题 | 数组越界、字符数组空间不足、字符串比较错误。 |
应用场景 | 成绩统计、文本处理、简单游戏开发。 |
下一部分:函数与模块化编程 —— 把代码变成“积木块”!
互动小课堂
活动设计:
- “储物柜大挑战”:
- 用纸盒模拟数组,每个格子贴上编号(0-4),让学生将写有数字的纸条放入对应格子。
- 任务:找出最大值、计算总和。
- “回文侦探”:
- 分组比赛,看哪组能最快找出教室中的回文词(如“妈妈”、“noon”、“上海自来水来自海上”)。
通过结合动手实践和生活场景,帮助少儿直观理解数组和字符串的抽象概念!