当前课程知识点:C语言程序设计 >  第22讲 编程训练 >  编程训练 >  排除程序错误的常规方法

返回《C语言程序设计》慕课在线视频课程列表

排除程序错误的常规方法在线视频

返回《C语言程序设计》慕课在线视频列表

排除程序错误的常规方法课程教案、知识点、字幕

这一讲简单介绍一下排除程序错误的常规方法

注意 这一讲介绍的方法比较粗略

排查错误更高级的调试技术以后会讲

我们写的程序编译好后没有

错误就可以运行

但是我们经常会遇到程序运行错误

程序的运行错误让人沮丧

掌握基本的排除程序错误的方法能提高编程的效率

维护初学者学习的积极性

排除错误的基本思路是这样的

我们前面讲过程序大的结构可以分为

输入 处理 输出三大块

那么错误有可能由这三方面引起

排错时尽量隔离这三方面

注意“隔离”

缩小可能出错的范围

最终发现并排除错误

排除由输入引起的错误

输入时

由于格式控制不对

可能引起错误

你想输入的值并没有正确的传递给变量

排查的方法是这样

由scanf 输入变量值的语句改为直接给变量赋值

看看程序运行结果对不对

如果程序运行结果是正确的

说明原先的运行错误是由输入引起的

好 我们来看一下这个例子

这是前面讲过的

就是输入三个整数

求出它的最大值

那么我们看下这个程序

注意下这个地方

输入scanf

控制符是这样写的

然后我们运行一下这个程序

那么我们随意输入三个数

那我们看这个结果显然是错的

那么按照我们刚才讲的方法

我们先排除一下是不是因为由输入引起的错误

那么我们这儿就不用scanf

先把它注释掉

然后直接给变量赋值

我们再编译运行一下

这次的运行结果就正确了

所以这表明刚才产生的错误是由输入引起的

好 我们先把直接赋值的语句注释掉

再看之前这个scanf这个输入到底有什么问题

我们先回忆一下

像这样的情况

控制符是这样写的

那么你输入时应该将三个整数用空格隔开

而不应该像之前运行时整数用逗号隔开

那么找到了这个错误

我们再重新编译一下

这次我们三个变量值我们是这样来做的

这次 我们就得到了正确答案

刚才这个看起开比较容易

但实际上

那么你发现是由输入引起的错误时

那么怎样输入才正确就牵扯到两个因素

第一个就是控制符

第二个就是刚才输入时

整数之间没用空格而是加了逗号

排除由输出引起的错误

输出时

由于格式控制不对

你想输出的值并没有正确的输出

排除方法是将printf输出语句改为简单的形式

甚至直接输出一个常量

好 我们来看一个具体程序实例

这个程序是前面讲过的输入圆的半径

求圆的面积的程序

我们运行一下

我们输入的是10

但是输出结果是这样

显然和我们想要的结果不一样

那么这要怎么处理呢

怎么排除由输出引起的错误呢

那么我们把这里改成最简单的形式

这儿不用area这个变量

直接输出一个常量看结果对不对

我们再运行一下

我们看 这个输出结果这依然不对

那么这个就是极有可能错误就是由输出语句引起的

因为我们这儿

最简单的已经给了一个想要输出的常量

我们的目的是输出这个常量

但是这个程序连简单的需求都做不到

很显然这个错误是由输出引起的

当你已经知道在输出这儿有错误时

那么需要怎么改呢 这还是需要一点经验

但至少你已经可以确定这个错误是由输出引起的

那么我们把它改成正确的形式

就是这个地方犯了两个错误

第一个

这个引号的位置不对

不应该放到这个地方

还应该把引号放在这个位置

另外一个这个地方空字符应该是double类型

所以控制符应该是用f

这样结果就正确了

发现问题是一个方面

解决问题是另一个方面

就像刚才你可能感觉输出语句不对

但想要找到具体哪里不对

还是需要前面一点编程的经验和知识

排除处理过程引起的错误

程序的处理过程千差万别

可以使用桌面走查的方式

就是把自己当成计算机

按照程序步骤

在纸上用笔手工计算并写出变量的变化

看看处理结果对不对

我们来看一个具体的例子

这个例子我们前面也讲过

就是有一个函数

是这样

当x>0的时候

输出-1 x=0 时

输出0 x<0时

输出1

编程序

输入x值

要求输出相应的y值

这是由同学写的一个程序

我们运行一下

看这个程序对不对

这个程序显然是错的

我们输入的是0

期望得到的答案应该也是0

但结果是-1

我们使用这个 桌面走查 的这个方法

来看看在处理的过程中到底哪点出了错误

这个桌面走查 就是你手边拿一张纸

拿一只笔

然后模仿计算机把变量的变化按程序的步骤往下走

看看情况

好我们现在先看看

这是桌面走查写的一个粗略的情况

先假定输入的x等于0

好我们按着程序往下看

y等于-1

然后这个地方是判定if 语句判断if(x \ = 0)

那因为刚才输入的x 等于 0

所以这个条件是不满足的

那么这样

整个if后面的语句后面这一块不执行

直接到输出这儿

这个 就输出-1

如果假定输入的x值等于-3

这儿y等于-1

然后这儿因为x不等于0

所以走到下面

if(x > 0 )

因为x 等于 -3

不满足条件

所以就执行else语句

y等于0

所以输出0

我们再看一种情况

假定输入的x值是正数

等于3

这儿y等于-1

因为这x 不等于0

所以进到下面

由于x此时大于0

所以y值就是1

到后面输出的结果就是1

那通过走查的方式

我们把x等于0 小于0 大于0三种情况分别模拟了一遍

那你就发现输出有两种情况都是错的

那你发现错误以后

那也知道处理过程是错误的

程序的前面一部分是输入

这一块是处理

这一块是输出

那么通过刚才桌面走查的方式你也发现

这程这序这么写是不对的

C语言程序设计课程列表:

第0讲 导言

-简单介绍课程性质等

-关于编程训练

第1讲 C程序框架

-C程序框架

-作业

第2讲 C程序编译环境

-C语言的编译环境

-作业

第3讲 顺序程序的几个例子

-顺序程序的几个例子

-作业

第4讲 常见的编译错误

-常见的编译错误

-作业

-编译错误探讨

第5讲 输入输出精要

-输入输出精要

-作业

-输入输出格式探讨

第6讲 选择结构的典型例子

-选择结构的典型例子

-作业

第7讲 选择结构常见错误

-选择结构常见错误

-作业

第8讲 排除程序错误的常规方法

-排除程序错误的常规方法

-排除错误探讨

第9讲 循环结构基础

-循环结构基础

-作业

-循环类型

第10讲 循环结构程序例子

-循环结构程序例子

-作业

-程序结构

第11讲 函数基础

-函数基础

-作业

第12讲 函数举例

-函数举例(上)

-函数举例(下)

第13讲 变量的作用域与生存期

-变量的作用域与生存期

-变量的使用

第14讲 数组基础

-数组基础

-作业

第15讲 数组应用举例

-数组应用举例(上)

-数组应用举例(下)

第16讲 数组参数传递

-数组参数传递(上)

-数组参数传递(下)

-作业

第17讲 指针变量

-指针变量(上)

-指针变量(下)

-作业

第18讲 字符串

-字符串(上)

-字符串(下)

-作业

第19讲 程序调试

-程序调试

-程序调试的重要性

-程序调试讨论

第20讲 结构体及其应用

-结构体及其应用(上)

-结构体及其应用(下)

第21讲 文件

- 文件(上)

-文件(下)

第22讲 编程训练

- 编程训练

排除程序错误的常规方法笔记与讨论

也许你还感兴趣的课程:

© 柠檬大学-慕课导航 课程版权归原始院校所有,
本网站仅通过互联网进行慕课课程索引,不提供在线课程学习和视频,请同学们点击报名到课程提供网站进行学习。