当前位置: 首页 > 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://apolline.dmyyro.cn
http://babysitter.dmyyro.cn
http://bobbed.dmyyro.cn
http://anile.dmyyro.cn
http://alderman.dmyyro.cn
http://bunk.dmyyro.cn
http://anaphase.dmyyro.cn
http://chemoautotrophic.dmyyro.cn
http://adipocellulose.dmyyro.cn
http://agronomics.dmyyro.cn
http://ascidian.dmyyro.cn
http://chile.dmyyro.cn
http://anteport.dmyyro.cn
http://ataraxia.dmyyro.cn
http://castiron.dmyyro.cn
http://allheal.dmyyro.cn
http://bejabbers.dmyyro.cn
http://amide.dmyyro.cn
http://bromegrass.dmyyro.cn
http://allatectomy.dmyyro.cn
http://bobbysocks.dmyyro.cn
http://asti.dmyyro.cn
http://benioff.dmyyro.cn
http://abject.dmyyro.cn
http://arrivisme.dmyyro.cn
http://chemotaxis.dmyyro.cn
http://aphakia.dmyyro.cn
http://ambuscade.dmyyro.cn
http://backen.dmyyro.cn
http://charter.dmyyro.cn
http://www.dtcms.com/a/281274.html

相关文章:

  • Flutter 股票图实现分析与解决方案
  • 深入理解高性能字节池 bytebufferpool
  • 1.easypan-登录注册
  • AbMole小课堂 | Angiotensin II(血管紧张素Ⅱ)在心血管研究中的多元应用
  • 基于51单片机和16X16点阵屏、矩阵按键的小游戏《俄罗斯方块》
  • 清理C盘--办法
  • python的形成性考核管理系统
  • 学习笔记(37):构建一个房价预测模型,并通过可视化全面评估模型效果
  • Java 异常处理详解:从基础语法到最佳实践,打造健壮的 Java 应用
  • Linux进程信号--0、序章
  • Servlet规范 、Tomcat容器、Springmvc框架
  • Quick API:赋能能源行业,化解数据痛点
  • 构建高性能微服务架构:基于Kubernetes与gRPC的深度实践
  • 缓存穿透的“黑暗森林”假说——当攻击者学会隐藏恶意流量
  • MySQL索引与事务详解:用大白话讲透核心概念
  • sundog公司的SilverLining SDK库实现3d动态云层和下雨、下雨、雨夹雪效果
  • React源码4 三大核心模块之一:Schedule,scheduleUpdateOnFiber函数
  • 美设备垄断破冰:新启航 3D 白光干涉仪的纳米级 “逐鹿” 之路
  • 基于cornerstone3D的dicom影像浏览器 第二章,初始化页面结构
  • 航空发动机气膜冷却孔激光频率梳 3D 轮廓检测方法探究
  • 【Qt】QWidget核心属性
  • 【数据结构】单链表练习(有环)
  • MYSQL练习2
  • Java 集合 示例
  • python学智能算法(二十)|SVM基础概念-感知机算法及代码
  • SAP把运费加入到物料成本估算
  • 使用 Aerich 进行 FastAPI 数据库迁移指南
  • redis红锁
  • GitHub 上 Star 数量前 8 的开源 Web 应用项目
  • 如何解决pip安装报错ModuleNotFoundError: No module named ‘pandas’问题