C++ 基础语法速查手册
小学生编程学习必备 · 翻开就能查 · 一看就会用
💡 核心概念
cout 是 C++ 的输出语句,用来在屏幕上显示文字、数字或变量内容。想象它是一张小喇叭 📢,把程序想告诉你的信息"播报"出来!
#include <iostream> using namespace std; int main() { // 输出文字 cout << "Hello, 世界!" << endl; // 输出数字和文字混合 cout << "我今年" << 10 << "岁啦!" << endl; // 输出变量 int age = 12; cout << "虚岁是:" << age << endl; return 0; }
| 语法 | 说明 | 示例 |
|---|---|---|
cout << "文字"; |
输出字符串 | cout << "你好"; |
cout << 变量; |
输出变量值 | cout << age; |
cout << endl; |
换行 | 输出后光标移到下一行 |
<< |
插入运算符 | 连接要输出的内容 |
忘记写 << 连接符
cout << "年龄" age; → 应该写成 cout << "年龄" << age;
文字没有用双引号包裹
cout << Hello; → 应该写成 cout << "Hello";
忘记写 endl 导致内容挤在一行
多行输出记得每行末尾加 << endl
💡 核心概念
变量是用来存放数据的"小盒子",每个盒子有一个名字,可以装不同类型的数据。就像贴标签的收纳盒 🎁!
| 类型 | 英文名 | 装什么 | 示例 |
|---|---|---|---|
int |
integer | 整数 | 年龄、分数、人数 |
double |
double | 小数 | 身高、体重、价格 |
char |
character | 单个字符 | 'A'、'男'、'5' |
bool |
boolean | 真假 | true(真)、false(假) |
string |
string | 一串文字 | "小明"、"北京" |
#include <iostream> #include <string> using namespace std; int main() { int age = 10; // 整数:年龄 double height = 1.45; // 小数:身高(米) char grade = 'A'; // 字符:成绩等级 bool isStudent = true; // 布尔:是否是学生 string name = "小明"; // 字符串:姓名 cout << "姓名:" << name << endl; cout << "年龄:" << age << "岁" << endl; cout << "身高:" << height << "米" << endl; cout << "成绩等级:" << grade << endl; cout << "是学生吗:" << isStudent << endl; // 输出 1 表示 true return 0; }
可以这样做
只能用字母、数字、下划线;不能以数字开头;区分大小写(Age 和 age 是不同的变量)
不可以这样做
不能用关键字(如 int、return、cout);不能用特殊符号(@、#、$ 等)
💡 核心概念
cin 用来接收用户从键盘输入的数据,存到变量里。就像程序的小耳朵 👂,在认真听用户输入什么内容!
#include <iostream> #include <string> using namespace std; int main() { string name; int score; cout << "请输入你的名字:"; cin >> name; // 等待用户输入名字 cout << "请输入你的分数:"; cin >> score; // 等待用户输入分数 cout << "你好," << name << "!" << endl; cout << "你考了" << score << "分,真棒!" << endl; return 0; }
一次输入多个值
cin >> a >> b; 可以连续输入,中间用空格或回车分隔
💡 核心概念
C++ 可以进行各种数学运算,和计算器一样方便!但要注意:整数除以整数,结果还是整数,小数部分会被直接丢掉!
| 运算符 | 名称 | 作用 | 示例 | 结果 |
|---|---|---|---|---|
+ |
加 | 两数相加 | 5 + 3 |
8 |
- |
减 | 两数相减 | 5 - 3 |
2 |
* |
乘 | 两数相乘 | 5 * 3 |
15 |
/ |
除 | 两数相除 | 17 / 5 |
3(整数) |
% |
取余 | 求余数 | 17 % 5 |
2 |
++ |
自增 | 加1 | a++ |
a+1 |
#include <iostream> using namespace std; int main() { int a = 17, b = 5; cout << "加法:" << a + b << endl; // 22 cout << "减法:" << a - b << endl; // 12 cout << "乘法:" << a * b << endl; // 85 cout << "除法:" << a / b << endl; // 3(整数除法) cout << "余数:" << a % b << endl; // 2 double c = 17.0 / 5; // 3.4(小数除法) cout << "小数除法:" << c << endl; return 0; }
取余 % 的妙用
判断奇偶:n % 2 == 0 是偶数;获取个位数:num % 10
💡 核心概念
根据条件是否成立,让程序走不同的路。就像红绿灯 🚦,红灯停、绿灯行!
| 运算符 | 含义 | 示例 | 结果 |
|---|---|---|---|
== |
等于 | 5 == 5 |
true |
!= |
不等于 | 5 != 3 |
true |
> |
大于 | 5 > 3 |
true |
< |
小于 | 5 < 3 |
false |
>= |
大于等于 | 5 >= 5 |
true |
<= |
小于等于 | 5 <= 3 |
false |
#include <iostream> using namespace std; int main() { int score; cout << "请输入分数:"; cin >> score; if (score >= 90) { cout << "优秀!🌟" << endl; } else if (score >= 80) { cout << "良好!👍" << endl; } else if (score >= 60) { cout << "及格!✅" << endl; } else { cout << "不及格,继续加油!💪" << endl; } return 0; }
常见错误:== 和 = 的区别
== 是比较(是否相等),= 是赋值。写 if (a = 5) 会永远为真!
💡 核心概念
for 循环让程序重复执行一段代码。就像勤劳的小蜜蜂 🐝,飞到每一朵花上采蜜,直到全部采完!
for (初始化; 条件; 更新) { // 循环体:要重复执行的代码 } // 执行流程: // ① 初始化 → ② 判断条件 → ③ 条件成立执行循环体 → ④ 更新 → 回到② // ↓ 条件不成立 // 退出循环
#include <iostream> using namespace std; int main() { // 数1到5 for (int i = 1; i <= 5; i++) { cout << i << " "; } cout << endl; // 输出:1 2 3 4 5 // 倒计时 for (int i = 5; i >= 1; i--) { cout << i << "... "; } cout << "发射!🚀" << endl; // 计算 1+2+3+...+10 int sum = 0; for (int i = 1; i <= 10; i++) { sum = sum + i; // 累加 } cout << "1到10的和:" << sum << endl; // 55 return 0; }
循环控制
break 立即跳出整个循环;continue 跳过当前这次,继续下一次
💡 核心概念
while 循环会在条件为真时重复执行代码。就像妈妈说的 "作业写完才能玩" —— 只要没写完(条件成立),就得一直写!
while (条件) { // 循环体:条件成立时执行的代码 // 记得更新条件,否则会死循环! } // 执行流程:先判断条件 → 条件成立执行循环体 → 回到判断 // ↓ 条件不成立 // 退出循环
#include <iostream> using namespace std; int main() { // 示例1:数到5 int i = 1; while (i <= 5) { cout << i << " "; i++; // 重要!更新条件变量 } cout << endl; // 输出:1 2 3 4 5 // 示例2:用户输入密码(直到正确为止) int password = 0; while (password != 1234) { cout << "请输入密码:"; cin >> password; if (password != 1234) { cout << "密码错误,请重试!" << endl; } } cout << "密码正确,欢迎!" << endl; return 0; }
何时用 while?
当你不知道要循环多少次时(比如等待用户输入正确、游戏直到通关),用 while 最合适!
💡 核心概念
do-while 循环至少执行一次,然后再判断条件。就像试吃 —— 先吃一口(执行),再决定要不要继续吃(判断)!
do { // 循环体:至少执行一次 } while (条件); // 注意这里有分号! // 执行流程:先执行循环体 → 判断条件 → 成立则继续 // ↓ 不成立 // 退出循环
#include <iostream> using namespace std; int main() { // 示例1:数到5 int i = 1; do { cout << i << " "; i++; } while (i <= 5); cout << endl; // 输出:1 2 3 4 5 // 示例2:菜单选择(至少显示一次菜单) int choice; do { cout << "===== 游戏菜单 =====" << endl; cout << "1. 开始游戏" << endl; cout << "2. 查看说明" << endl; cout << "3. 退出" << endl; cout << "请选择(1-3):"; cin >> choice; if (choice == 1) { cout << "游戏开始!" << endl; } else if (choice == 2) { cout << "游戏说明..." << endl; } } while (choice != 3); cout << "再见!" << endl; return 0; }
while vs do-while 关键区别
while:先判断,可能一次都不执行
do-while:后判断,至少执行一次!
| 循环类型 | 特点 | 适用场景 |
|---|---|---|
for |
初始化、条件、更新写在一起 | 知道循环次数(如遍历数组) |
while |
先判断,可能一次都不执行 | 不知道循环次数(如等待输入) |
do-while |
先执行,至少执行一次 | 菜单、至少执行一次的场景 |
💡 核心概念
string 用于存储和处理一串文字。需要包含 #include <string> 头文件才能使用!
| 操作 | 语法 | 示例 | 结果 |
|---|---|---|---|
| 获取长度 | s.length() |
"Hello".length() |
5 |
| 拼接 | s1 + s2 |
"Hello" + "World" |
"HelloWorld" |
| 访问字符 | s[下标] |
"Hello"[0] |
'H' |
| 输入(含空格) | getline(cin, s) |
- | 读取一行 |
#include <iostream> #include <string> using namespace std; int main() { string name = "小明"; string hobby = "喜欢编程"; // 拼接 cout << name + "," + hobby + "���" << endl; // 长度 cout << "名字长度:" << name.length() << endl; // 遍历字符 string word = "HELLO"; for (int i = 0; i < word.length(); i++) { cout << word[i] << " "; } return 0; }
重要区别
cin >> s 遇到空格就停止;getline(cin, s) 可以读取整行(包含空格)
💡 核心概念
数组是一组相同类型数据的集合,排成一排。就像教室里的座位排 🪑,每个座位有自己的编号(下标),从 0 开始!
// 定义并初始化 int scores[5] = {85, 92, 78, 96, 88}; int nums[] = {1, 2, 3, 4, 5}; // 自动计算大小为5 // 访问元素 scores[0]; // 第1个元素:85 scores[2]; // 第3个元素:78 // 遍历数组 for (int i = 0; i < 5; i++) { cout << scores[i] << " "; }
#include <iostream> using namespace std; int main() { int scores[5] = {85, 92, 78, 96, 88}; // 计算平均分 int sum = 0; for (int i = 0; i < 5; i++) { sum += scores[i]; } cout << "平均分:" << sum / 5.0 << endl; // 找最高分 int maxScore = scores[0]; for (int i = 1; i < 5; i++) { if (scores[i] > maxScore) { maxScore = scores[i]; } } cout << "最高分:" << maxScore << endl; return 0; }
常见错误:数组越界
scores[5] 有5个元素,有效下标是 0~4。访问 scores[5] 会导致错误!
💡 核心概念
二维数组就像一张表格 📋,有行和列。可以用来存储矩阵、棋盘、学生成绩表等二维数据。想象成一个班级座位表,每个人都有「行号」和「列号」!
// 定义二维数组:类型 数组名[行数][列数] int matrix[3][4]; // 3行4列的矩阵 // 定义时初始化 int scores[3][4] = { {85, 92, 78, 90}, // 第1行 {88, 76, 95, 82}, // 第2行 {90, 85, 88, 91} // 第3行 }; // 访问元素:数组名[行][列] scores[0][0]; // 第1行第1列:85 scores[1][2]; // 第2行第3列:95
#include <iostream> using namespace std; int main() { // 3个学生,每人4门课成绩 int scores[3][4] = { {85, 92, 78, 90}, {88, 76, 95, 82}, {90, 85, 88, 91} }; // 计算每个学生的平均分 for (int i = 0; i < 3; i++) { int sum = 0; for (int j = 0; j < 4; j++) { sum += scores[i][j]; } cout << "学生" << (i + 1) << "平均分:" << sum / 4.0 << endl; } // 打印成绩表 cout << "\n成绩表:" << endl; for (int i = 0; i < 3; i++) { for (int j = 0; j < 4; j++) { cout << scores[i][j] << "\t"; } cout << endl; } return 0; }
#include <iostream> using namespace std; int main() { // 生成乘法表 int table[9][9]; for (int i = 0; i < 9; i++) { for (int j = 0; j < 9; j++) { table[i][j] = (i + 1) * (j + 1); } } // 打印乘法表(只打印下三角) for (int i = 0; i < 9; i++) { for (int j = 0; j <= i; j++) { cout << (j + 1) << "x" << (i + 1) << "=" << table[i][j] << "\t"; } cout << endl; } return 0; }
二维数组小技巧
• 外层循环控制「行」,内层循环控制「列」
• 初始化时可省略第一维大小:int a[][3] = {{1,2,3}, {4,5,6}};
• 常用于:地图、棋盘、图片像素、表格数据
💡 核心概念
结构体可以把多个不同类型的数据打包在一起。就像学生档案袋 📁,里面装着姓名、年龄、成绩等资料!
// 定义结构体 struct Student { string name; // 姓名 int age; // 年龄 double score; // 成绩 bool isMale; // 是否为男生 }; // 创建变量并初始化 Student stu1 = {"小明", 12, 95.5, true}; // 访问成员 cout << stu1.name; // 输出:小明 stu1.score = 99; // 修改成绩
#include <iostream> #include <string> using namespace std; struct Student { string name; int age; double score; }; int main() { // 定义学生 Student stu1 = {"小明", 12, 95.5}; Student stu2 = {"小红", 11, 98.0}; // 输出信息 cout << stu1.name << " " << stu1.age << "岁 " << stu1.score << "分" << endl; // 结构体数组 Student class3[3] = { {"小明", 12, 95.5}, {"小红", 11, 98.0}, {"小刚", 12, 88.5} }; return 0; }
使用场景
存储复杂数据(学生、商品、游戏角色)、函数返回多个值、组织相关数据使代码更清晰
💡 核心概念
函数是把一段常用代码打包起来,给它起个名字。就像乐高积木 🔧,可以重复使用,组合起来搭建复杂作品!
| 类型 | 声明 | 说明 |
|---|---|---|
| 无参数无返回 | void fn() |
只做事情,不返回结果 |
| 有参数无返回 | void fn(int a) |
接收数据,处理但不返回 |
| 无参数有返回 | int fn() |
返回一个整数结果 |
| 有参数有返回 | int fn(int a, int b) |
接收数据,处理后返回结果 |
#include <iostream> using namespace std; // 函数声明 void sayHello(); int add(int a, int b); int maxOfTwo(int a, int b); int main() { sayHello(); int sum = add(10, 20); cout << "10 + 20 = " << sum << endl; cout << "max(7, 3) = " << maxOfTwo(7, 3) << endl; return 0; } // 函数定义 void sayHello() { cout << "你好!欢迎来到C++世界!" << endl; } int add(int a, int b) { return a + b; } int maxOfTwo(int a, int b) { if (a > b) return a; else return b; }
函数的好处
代码复用(写一次用多次)、结构清晰(拆成小模块)、易于维护(修改一处处处生效)
💡 核心概念
注释是写给程序员看的说明文字,程序运行时会被完全忽略。
//是单行注释,/* */是多行注释。// 注释内容/* 注释内容 */好习惯
"代码写给别人看,顺便让机器执行。" 好的注释能让你一个月后还能看懂自己的代码!