模板 信奥AC之路(第一级)
-
第一课 开发环境与基础输出4 主题|小节
-
第二课 算数运算符6 主题|小节
-
第三课 输入与运算3 主题|小节
-
第四课 数值操作4 主题|小节
-
第五课 表达式与运算符3 主题|小节
-
第六课 三目运算与双分支(缺导语+本课目标)2 主题|小节
-
第七课 多分支结构(缺导语+本课目标)1 主题|小节
-
第八课 多if语句1 主题|小节
-
第九课 三种分支结构的比较1 主题|小节
-
第十课 巩固学习分支结构1 主题|小节
-
第十一课 switch与复合语句3 主题|小节
-
第十二课 while循环2 主题|小节
-
第十三课 while循环的简单条件输出1 主题|小节
-
第十四课 while循环的输入序列处理1 主题|小节
-
第十五课 while循环的复杂条件输出2 主题|小节
-
第十六课 while循环与数据统计1 主题|小节
-
第十七课 for循环结构3 主题|小节
-
第十八课 for循环的输入序列处理)1 主题|小节
-
第十九课 深入探索for循环2 主题|小节
-
第二十课 三种循环的对比2 主题|小节
-
第二十一课 程序调试(一)3 主题|小节
-
第二十二课 调试工具的使用2 主题|小节
-
第二十三课 综合复习2 主题|小节
-
第二十四课 学习评估1 主题|小节
### 21.1.1 语法错误的识别
“小朋友们,写作文时会不会有错别字啊?” 我笑着问道,”比如把’学习’写成’学习’,把’高兴’写成’高心’。编程时也会有类似的错误,我们叫它’语法错误’。”
{.alignnone}
🔬 **实验一:寻找错误**
“让我们来看看下面这段程序中藏着哪些错误:”
“`cpp
#include
using namespace std
int main() {
int age = 12 // 错误1:缺少分号
cout < "我的年龄是:" < age; // 错误2:输出符号写错了
if (age == 12 // 错误3:缺少右括号
{
cout << "我上六年级了!" << endl
} // 错误4:缺少分号
return 0
} // 错误5:缺少分号
“`
"就像找错别字一样,让我们一起来找出所有的错误:" 我拿起红笔,在黑板上标注起来。
1. 第1行错误:
“`cpp
using namespace std // 错误:缺少分号
using namespace std; // 正确:加上分号
“`
2. 第4行错误:
“`cpp
int age = 12 // 错误:缺少分号
int age = 12; // 正确:加上分号
“`
3. 第5行错误:
“`cpp
cout < "我的年龄是:" < age; // 错误:输出符号写错
cout << "我的年龄是:" << age; // 正确:使用<<
“`
4. 第7-10行错误:
“`cpp
if (age == 12 // 错误:结构不完整
{
cout << "我上六年级了!" << endl
}
if (age == 12) { // 正确:括号完整,语句加分号
cout << "我上六年级了!" < 💡 常见语法错误总结:
>
> 1. 忘记写分号(;)
> – 语句结束要加分号
> – 但花括号后不加分号
>
> 2. 括号使用错误
> – 小括号():用于条件判断
> – 大括号{}:用于代码块
> – 括号必须成对出现
>
> 3. 符号写错
> – 输出用< – 输入用>>
> – 判断相等用==
>
> 4. 拼写错误
> – cout不能写成Count
> – endl不能写成end
> – 注意大小写
{.alignnone}
### 21.1.2 运行错误的判断
“小朋友们,” 我拿出一个计算器,”假设我们让计算器算10除以0,会发生什么?”
{.alignnone}
“计算器会显示错误!这就是’运行错误’—程序能编译通过,但运行时会出错。”
🔬 **实验二:发现运行错误**
“`cpp
#include
using namespace std;
int main() {
int a = 10;
int b = 0;
cout << "准备做除法…" << endl;
int c = a / b; // 运行到这里会出错!
cout << "结果是:" << c << endl;
return 0;
}
“`
"这个程序看起来没有语法错误,但运行时会出错,因为任何数都不能除以0!"
我们再看一个常见的运行错误:
🔬 **实验三:输入类型不匹配**
“`cpp
#include
using namespace std;
int main() {
int age;
cout <> age; // 如果输入”abc”而不是数字,会出错
cout << "明年你" << age + 1 << "岁" < 💡 常见运行错误:
>
> 1. 除以零
> 2. 输入类型不匹配
> 3. 使用未赋值的变量
### 21.1.3 逻辑错误的发现
“最难发现的就是逻辑错误了,” 我在黑板上写道,”就像做数学题时,计算步骤都对,但是理解错了题意,所以答案是错的。”
{.alignnone}
🔬 **实验四:找出逻辑错误**
“`cpp
#include
using namespace std;
int main() {
// 目标:计算1到5的和
int sum = 0;
// 错误:i从0开始,到4结束
for(int i = 0; i < 5; i++) {
sum = sum + i; // 0+1+2+3+4=10
}
cout << "1到5的和是:" << sum << endl;
// 输出10,但正确答案应该是15
return 0;
}
“`
让我们一步步分析错误:
1. 程序想要计算:1 + 2 + 3 + 4 + 5 = 15
2. 但实际计算了:0 + 1 + 2 + 3 + 4 = 10
3. 错误原因:
– 循环从0开始而不是1
– 循环到4结束而不是5
🔬 **实验五:修正逻辑错误**
“`cpp
#include
using namespace std;
int main() {
int sum = 0;
// 修正:i从1开始,到5结束
for(int i = 1; i <= 5; i++) {
cout << "正在加上:" << i << endl; // 输出中间步骤
sum = sum + i;
}
cout << "1到5的和是:" << sum < 💡 发现逻辑错误的方法:
>
> 1. 在纸上演算程序的执行过程
> 2. 输出中间计算步骤
> 3. 检查循环的起止条件
> 4. 验证程序是否满足题目要求
### 错误分析口诀
“`
查错口诀:
语法错误编译查,
分号括号细检查。
运行错误要当心,
除零数据需谨慎。
逻辑错误最难找,
输出调试记心头。
改错口诀:
发现错误莫着急,
一步一步找原因。
语法按规范改正它,
运行按逻辑想原委。
逻辑错误最费神,
草稿演算记得清。
“`