当前位置: 首页 > news >正文

2.3 数组与字符串

在这里插入图片描述

学习目标

  • 理解数组和字符串的概念(存储多个数据的“盒子”)。
  • 掌握数组的声明、初始化和遍历方法。
  • 能用字符串处理简单文本问题(如字符计数、回文判断)。

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 字符串基础

两种表示方式
  1. 字符数组(C风格字符串)
char name[10] = "Alice";  // 最后自动添加 '\0'  
  1. 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 常见错误 & 调试技巧

易错点
  1. 数组越界
int arr[3] = {1, 2, 3};  
cout << arr[3];  // ❌ 索引只能是0、1、2  
  1. 字符数组未预留空间
char str[5] = "Hello";  // ❌ "Hello"需要6个字符(含'\0')  
  1. **混淆 = 和 **==
if (s = "abc") { ... }  // ❌ 应写为 s == "abc"  
调试技巧
  • 打印数组内容:
for (int i=0; i<5; i++) cout << arr[i] << " ";  
  • 使用 getline 读取含空格的字符串:
string input;  
getline(cin, input);  // 可以读取整行(包括空格)  

4 练习与挑战

基础练习

  1. 统计元音字母:输入一个句子,统计元音字母(a、e、i、o、u)的数量。
  2. 反转数组:将数组 {1, 2, 3, 4, 5} 反转为 {5, 4, 3, 2, 1} 并输出。

进阶挑战

  1. “贪吃蛇”地图:用二维数组表示游戏地图(# 代表墙,. 代表空地),并输出地图。
char map[5][5] = {  {'#','#','#','#','#'},  {'#','.','.','.','#'},  {'#','.','@','.','#'},  // @代表食物  {'#','.','.','.','#'},  {'#','#','#','#','#'}  
};  
  1. “单词猜谜”游戏:用字符串存储一个单词(如 “apple”),玩家每次猜一个字母,显示已猜中的位置(如 a _ _ _ _)。

总结

知识点关键内容
数组用索引访问元素,适合存储固定数量的数据。
字符串使用 string 类简化操作(如拼接、长度获取)。
常见问题数组越界、字符数组空间不足、字符串比较错误。
应用场景成绩统计、文本处理、简单游戏开发。

下一部分函数与模块化编程 —— 把代码变成“积木块”!


互动小课堂

活动设计

  1. “储物柜大挑战”
    • 用纸盒模拟数组,每个格子贴上编号(0-4),让学生将写有数字的纸条放入对应格子。
    • 任务:找出最大值、计算总和。
  2. “回文侦探”
    • 分组比赛,看哪组能最快找出教室中的回文词(如“妈妈”、“noon”、“上海自来水来自海上”)。

通过结合动手实践和生活场景,帮助少儿直观理解数组和字符串的抽象概念!

http://www.lryc.cn/news/588886.html

相关文章:

  • QGIS新手教程9:字段计算器进阶用法与批量处理技巧
  • HTTP性能优化实战技术
  • 串口通信性能优化
  • golang语法-----变量、常量
  • Go语言统计字符串中每个字符出现的次数 — 简易频率分析器
  • 解锁Redis:从安装到配置的全攻略
  • DBeaver 传输数据库A数据到数据库B
  • LLM指纹底层技术——特征提取
  • 06-C语言:第06天笔记
  • python的广东省家庭旅游接待信息管理系统
  • 文心一言4.5开源模型测评:ERNIE-4.5-0.3B超轻量模型部署指南
  • NineData 社区版 V4.3.0 正式发布!新增 5 条迁移对比链路,全面支持 MariaDB、GaussDB 等数据库
  • 使用python的pillow模块将图片转化为灰度图,获取值和修改值
  • Redis Desktop Manager(RDM)下载与安装使用教程
  • STM32小实验二--流水灯
  • 【R语言】警告conversion failure on ‘中文字符‘ in ‘mbcsToSbcs‘: for 注 (U+6CE8)
  • 海狸IM - 一个功能完整的开源即时通讯系统
  • DeepSWE:通过强化学习扩展训练开源编码智能体
  • 2025开放原子开源生态大会 | 开源欧拉的AI原生实践与全球协作
  • 基于开源AI大模型、AI智能名片与S2B2C商城小程序源码的用户价值引导与核心用户沉淀策略研究
  • Android target34升级到35中的edge-to-edge适配
  • 【Android】按钮的使用
  • Softhub软件下载站实战开发(十八):软件分类展示
  • 图像修复:深度学习实现老照片划痕修复+老照片上色
  • 三种深度学习模型(LSTM、CNN-LSTM、贝叶斯优化的CNN-LSTM/BO-CNN-LSTM)对北半球光伏数据进行时间序列预测
  • Datawhale AI 夏令营第一期(机器学习方向)Task2 笔记:用户新增预测挑战赛 —— 从业务理解到技术实现
  • 《C++模板高阶机制解析:非类型参数、特化设计与分离编译实践》
  • react的Fiber架构和双向链表区别
  • Redis 数据持久化
  • Cookie全解析:Web开发核心机制