🌟《专治粗心的10道训练题》
🧩 第1关:数组下标陷阱
1、🎯 题目
输入 n 个数,求它们的和
2、❌ 常见错误代码
int sum = 0; for(int i = 1; i <= n; i++) { sum += a[i]; }3、💥 问题在哪?
👉 数组是从0开始
👉 你访问了不存在的 a[n]
4、✅ 正确代码
int sum = 0; for(int i = 0; i < n; i++) { sum += a[i]; }5、🧠 本质漏洞
👉 数组范围不准确
🧩 第2关:最大值初始化
1、🎯 题目
找出数组最大值
2、❌ 错误
int maxn; for(int i = 0; i < n; i++) { if(a[i] > maxn) maxn = a[i]; }3、💥 问题
👉 maxn 是垃圾值!
4、✅ 正确
int maxn = a[0]; for(int i = 1; i < n; i++) { if(a[i] > maxn) maxn = a[i]; }5、🧠 本质
👉 未设置“初始值”
🧩 第3关:= 和 == 混乱
1、🎯 题目
统计等于5的个数
2、❌ 错误
if(a[i] = 5)3、💥 问题
👉 这是赋值,不是判断!
4、✅ 正确
if(a[i] == 5)5、🧠 本质
👉 运算符“=” 与 “ == ” 混淆
🧩 第4关:循环少一步
1、🎯 题目
输出1到n
2、❌ 错误
for(int i = 1; i < n; i++)3、💥 问题
👉 少输出 n
4、✅ 正确
for(int i = 1; i <= n; i++)5、🧠 本质
👉 边界不清晰,“<” 与“ <=” 未掌握。
🧩 第5关:忘记清零
1、🎯 题目
统计偶数个数
2、❌ 错误
int cnt; for(int i = 0; i < n; i++) { if(a[i] % 2 == 0) cnt++; }3、💥 问题
👉 cnt 没初始化!
4、✅ 正确
int cnt = 0;5、🧠 本质
👉 变量生命周期缺乏,计数器每次重新开始使用,都需要清零。
🧩 第6关:字符串长度误判
1、🎯 题目
输出字符串长度
2、❌ 错误
for(int i = 0; s[i] != '\0'; i++) len++;但没初始化 len!
3、✅ 正确
int len = 0; for(int i = 0; s[i] != '\0'; i++) len++;4、🧠 本质
👉 忘记初始化
🧩 第7关:数组越界(最危险)
1、🎯 题目
访问最后一个元素
2、❌ 错误
cout << a[n];3、💥 问题
👉 最后一个是 a[n-1]
4、✅ 正确
cout << a[n-1];5、🧠 本质
👉 下标范围不清
🧩 第8关:if少大括号
1、🎯 题目
如果是偶数就计数并输出
2、❌ 错误
if(a[i] % 2 == 0) cnt++; cout << a[i];3、💥 问题
👉 只有一行属于 if!
4、✅ 正确
if(a[i] % 2 == 0) { cnt++; cout << a[i]; }5、🧠 本质
👉 语法结构要养成提前加大括号的习惯。
🧩 第9关:死循环陷阱
1、🎯 题目
输出1到n
2、❌ 错误
int i = 1; while(i <= n) { cout << i; }3、💥 问题
👉 i 没变!
4、✅ 正确
int i = 1; while(i <= n) { cout << i; i++; }5、🧠 本质
👉 循环三要素要完整
🧩 第10关:输入输出顺序
1、🎯 题目
输入两个数,输出和
2、❌ 错误
int a, b; cout << a + b; cin >> a >> b;3、💥 问题
👉 顺序错误
4、✅ 正确
int a, b; cin >> a >> b; cout << a + b;5🧠 本质
👉 程序执行顺序不清,要画流程图
🎯 总结口诀
数组从0要记牢 变量初始化不能少 判断必须用双等号 循环边界想周到 大括号别乱跑 顺序执行最重要!