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.pswp.cn/bicheng/89110.shtml
繁體地址,請注明出處:http://hk.pswp.cn/bicheng/89110.shtml
英文地址,請注明出處:http://en.pswp.cn/bicheng/89110.shtml

如若內容造成侵權/違法違規/事實不符,請聯系多彩編程網進行投訴反饋email:809451989@qq.com,一經查實,立即刪除!

相關文章

C# 網口demo

bool _testStatus false; private void btnOpsStart_Click(object sender, EventArgs e) {int delay Convert.ToInt32(txtdelay.Text.Trim());txtView.Clear();txtView.AppendText("******************************************開始烤機*******************************…

MATLAB 安裝 ACADO 的完整步驟

? MATLAB 安裝 ACADO 的完整步驟 &#x1f4e6; 一、準備工作 1. 下載 ACADO Toolkit 官方地址&#xff1a;https://github.com/acado/acado 2. 解壓 ACADO 到你指定的路徑&#xff0c;例如&#xff1a; D:\user\acado-master建議路徑中 不要包含中文或空格。 &#x1f9f…

[逆向工程]160個CrackMe入門實戰之Afkayas.1.Exe解析(二)

[逆向工程]160個CrackMe入門實戰之Afkayas.1.Exe解析&#xff08;二&#xff09; 一、前言 在逆向工程的學習路徑上&#xff0c;CrackMe程序是初學者最好的練手材料。今天我們要分析的是160個CrackMe系列的第二題——Afkayas.1.Exe。這個程序由Afkayas編寫&#xff0c;難度為★…

本地電腦安裝Dify|內網穿透到公網

1.安裝Docker Docker: Accelerated Container Application Development 2.添加 PATH 3.安裝Dify https://github.com/langgenius/dify.git 把.env.example文件名改為.env 4.更換鏡像源 {"builder": {"gc": {"defaultKeepStorage": "20G…

數據結構自學Day6 棧與隊列

1. 棧其實棧與隊列仍然屬于線性表&#xff08;有n個元素構成的集合&#xff0c;邏輯結構呈現線形&#xff09;線形表&#xff1a;順序表&#xff0c;鏈表&#xff0c;棧&#xff0c;隊列&#xff0c;串&#xff08;字符串&#xff09;棧&#xff08;Stack&#xff09;是一種線性…

Java 異常處理詳解:從基礎語法到最佳實踐,打造健壯的 Java 應用

作為一名 Java 開發工程師&#xff0c;你一定遇到過運行時錯誤、空指針異常、文件找不到等問題。Java 提供了強大的異常處理機制&#xff0c;幫助我們優雅地捕獲和處理這些錯誤。本文將帶你全面掌握&#xff1a;Java 異常體系結構try-catch-finally 的使用throw 與 throws 的區…

Fiddler弱網測試實戰指南

Fiddler是一個常用的網絡抓包工具&#xff0c;它也可以用來模擬弱網環境進行測試。 在測試時需要用到弱網測試&#xff0c;也就是在信號差、網絡慢的情況下進行測試。比如&#xff0c;用戶在地鐵、電梯、地下車庫等場景經常會遇到會話中斷、超時等情況&#xff0c;這種就屬于弱…

解決Vue頁面黑底紅字遮罩層報錯:Unknown promise rejection reason (webpack-internal)

vue前端頁面彈出黑底紅色報錯遮罩層報錯&#xff1a;具體報錯信息&#xff1a;Uncaught runtime errors: ERROR Unknown promise rejection reasonat handleError (webpack-internal:///./node_modules/webpack-dev-server/client/overlay.js:299:58)at eval (webpack-internal…

構建 Go 可執行文件鏡像 | 探索輕量級 Docker 基礎鏡像(我應該選擇哪個 Docker 鏡像?)

文章目錄構建 Go 可執行文件鏡像典型用途探索輕量級 Docker 基礎鏡像構建 Go 可執行文件鏡像 golang:1.23.0-bullseye 是官方 Go 鏡像的一個 “build-stage” 版,用來構建 Go 可執行文件&#xff0c;而不是把它當成最終運行鏡像。 dockerhub官方&#xff1a;https://hub.dock…

鏈表算法之【回文鏈表】

目錄 LeetCode-234題 LeetCode-234題 給定一個單鏈表的頭節點head&#xff0c;判斷該鏈表是否為回文鏈表&#xff0c;是返回true&#xff0c;否則返回false class Solution {/*** 這里的解題思路為&#xff1a;* (1)、找中間節點* (2)、反轉鏈表* (3)、遍歷比較節點值是否相…

Playwright Python 教程:網頁自動化

1. 常用工具簡介及對比主流網頁自動化工具對比工具支持語言瀏覽器支持特點適用場景PlaywrightPython, JS, .NETChromium, Firefox, WebKit跨瀏覽器、速度快、API簡潔自動化測試、爬蟲、網頁操作Selenium多語言所有主流瀏覽器歷史悠久、社區大傳統自動化測試、兼容性測試Puppete…

動態數組:ArrayList的實現原理

動態數組&#xff1a;ArrayList的實現原理 大家好&#xff01;今天我們來聊聊Java集合框架中一個非常重要的數據結構——ArrayList。就像我們日常生活中使用的伸縮收納盒一樣&#xff0c;ArrayList可以根據需要自動調整大小&#xff0c;既方便又高效。那么它是如何實現這種&quo…

MIPI DSI(五) DBI 和 DPI 格式

關于 DBI 和 DPI 這兩種格式的詳細協議內容&#xff0c;請參考《MIPI Alliance Standard for Display Bus Interface&#xff08;V2.0&#xff09; .pdf》和《MIPI Alliance Standard for Display Pixel Interface&#xff08;DPI- 2&#xff09; .pdf》這兩份文檔。首先先了解…

FRP Ubuntu 服務端 + MacOS 客戶端配置

一、服務端配置 1、下載frp并解壓 # 創建目錄并進入 mkdir -p /opt/frp && cd /opt/frp # 下載最新版&#xff08;替換URL為GitHub發布頁最新版本&#xff09; wget https://github.com/fatedier/frp/releases/download/v0.59.0/frp_0.59.0_linux_amd64.tar.gz # 解壓 …

Video Python(Pyav)解碼二

在 PyAV 中&#xff0c;input_container.decode() 和 input_container.demux() 是兩種處理視頻流數據的不同方法&#xff0c;它們分別適用于不同的場景。下面通過代碼示例和對比來詳細說明它們的用法和區別。1. input_container.decode()功能直接解碼&#xff1a;從容器中讀取數…

閑庭信步使用圖像驗證平臺加速FPGA的開發:第十六課——圖像五行緩存的FPGA實現

&#xff08;本系列只需要modelsim即可完成數字圖像的處理&#xff0c;每個工程都搭建了全自動化的仿真環境&#xff0c;只需要雙擊top_tb.bat文件就可以完成整個的仿真&#xff0c;大大降低了初學者的門檻&#xff01;&#xff01;&#xff01;&#xff01;如需要該系列的工程…

頭文件與源文件及區別

使用場景上的區別頭文件&#xff1a;變量的聲明&#xff0c;函數的聲明&#xff0c;宏的定義&#xff0c;類的定義等。 源文件&#xff1a;變量的定義。函數的定義實現&#xff0c;類成員函數的定義實現等。這樣方便于我們去管理、規劃&#xff0c;更重要的是避免了重定義的問題…

圖機器學習(4)——圖機器學習與嵌入算法

圖機器學習&#xff08;4&#xff09;——圖機器學習與嵌入算法0. 前言1. 圖機器學習1.1 機器學習基本原理1.2 圖機器學習的獨特優勢2. 廣義圖嵌入問題3. 圖嵌入算法分類小結0. 前言 機器學習是人工智能的一個重要分支&#xff0c;它致力于讓系統能夠從數據中自主學習并持續優…

網絡基礎10--ACL與包過濾

一、ACL 定義與核心功能ACL&#xff08;訪問控制列表&#xff09;是通過規則匹配實現數據包過濾或分類的核心技術&#xff0c;廣泛應用于包過濾、NAT、QoS、路由策略等場景。其核心由規則條目組成&#xff0c;每條規則包含匹配條件&#xff08;如源 / 目 IP、端口、協議&#x…

Web安全 - 基于 SM2/SM4 的前后端國產加解密方案詳解

文章目錄概述一、背景與法規要求二、算法選型三、核心流程四、前端實現要點&#xff08;偽代碼&#xff09;五、后端實現要點(偽代碼)六、公鑰存儲策略七、全流程示例圖八、總結與最佳實踐推薦概述 隨著信息安全法規日益嚴格&#xff0c;如《網絡安全法》《數據安全法》和等保…