學習目標:
- 理解數組和字符串的概念(存儲多個數據的“盒子”)。
- 掌握數組的聲明、初始化和遍歷方法。
- 能用字符串處理簡單文本問題(如字符計數、回文判斷)。
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”、“上海自來水來自海上”)。
通過結合動手實踐和生活場景,幫助少兒直觀理解數組和字符串的抽象概念!