《C语言课件 第十四章 常见错误和程序调试》由会员分享,可在线阅读,更多相关《C语言课件 第十四章 常见错误和程序调试(36页珍藏版)》请在人人文库网上搜索。

1、第十四章常见的错误和程序的调试,第十四章常见的错误和程序的调试,第14.1常见的错误分析14.2程序的调试,真的掌握c,很难很好地使用c,“灵活”是好的c编译器对语法的检查不像其他高级语言那么严格(这是为了给程序员留下“灵活”的馀地)。 因此,程序设计者本身往往必须保证程序的正确性。 调试c程序比调试PASCAL和FORTRAN程序更难。 需要积累经验,提高程序设计和调试程序的水平。 c语言的语法规定和其他高级语言不同,学习了其他高级语言的读者按照使用其他高级语言的习惯写c程序也是错误的原因之一。 14.1常见错误分析,列举初学者学习c语言使用时容易犯的错误,起到注意的作用。 (1)忘记了变量。

2、的定义。 例如: main() x=3; y=6; printf(%dn,x y ),(2)输入输出数据的类型与使用的格式指定符不一致。 例如,假设a定义为整数,b定义为实数。 a=3; b=4.5; 在编译printf(%f%dn,a,b )时不会显示错误消息,但执行结果不是预期的。 (3)没有注意int型数据的数值范围。 在通常的微计算机中使用的c编译系统向一个整数数据分配2个字节。 因此,整数的范围为215215-1,即-3276832767。 常见的是PS;PS=89101; 得到printf(%d,num )是因为23565,89101超过了32767。 因为2字节不能容纳89101。

3、,所以截断高位。 (4)输入变量时忘记使用地址符号。 例如应该写为scanf(%d%d,a,b) scanf(%d%d ),输入时数据的组织不符合要求。 使用scanf函数输入数据时,请注意输入数据的组织方法。 (6)错误地将“=”作为“相等”的比较子。 (7)句子后面去除了分号。 (8)在不应该加分的地方加了分号。 例如if(ab ); printf(aislarger than bn) (9)对于应该有括号的复合句,忘记加括号。 (10 )括号不符。 (11 )使用标识符时,忘记了大小写的差异。 示例:主() inta、b、c; a=2; b=3; C=A B; 编译printf(%d %。

4、d=%、a、b、c )时发生错误。 编译器把a和a当作两个不同的变量名称,同样b和b,c和c分别表示两个不同的变量。 (12 )在引用数组元素时误用了括号。 例如,主() int I,a(10) for(i=0; i10; i ) scanf(%d,c语言中数组的定义和引用必须用括号括起来。 (13 )在定义数组时,将定义的“要素数”误认为“可使用的最大下标值”。 主() int a10=1,2,3,4,5,6,7,8,9,10; PS; for(i=1; i=10; I )在i ) printf(%d,ai) a10中,超出了a阵列的范围。 (14 )二维或多维数组的定义和参照方法有误。 主。

5、() int 5,4; 误以为printf(%d,a12,2 ),(15 )数组名表示数组中的所有要素。 例如,主() int a4=1、3、5、7; 将printf(%d%d%d%dn,a )、(16 )字符数组和字符指针的差异混淆。 主() char str 4; str=计算机和c; printf(%sn,str )编译错误。 str是数组名称,表示数组的起始地址。 因为在编译时为str数组分配了内存单元,所以程序运行时str是常数,不能再分配。 (17 )在引用指针变量之前没有给出确定的值。 main() char*p; 在scanf(%s,p ),(18) switch语句的各分支上。

6、写入break语句。 例如交换机(score ) case5:打印(ery good )! ); case4:打印机(good! ); case3:打印(通过! ); 情况2 :打印失败! ); 默认:打印(数据错误! ); 上述switch语句的作用是:我想根据score打印评论。 但是,score的值为5时,输出为ery Good! 好! 传球! 失败! 数据错误! (19 )混淆文字和字符串的表现形式。 char sex; sex=M; sex是字符变量,只能保持一个字符。字符常数的格式用单引号括起来,必须更改为sex=m。“m”是用双引号括起来的字符串,包含m和0两个字符,不能存储在字。

7、符变量sex中。 (20 )使用自加( )和自减(- )运算符时的错误。 例如:主() intp,a5=1,3,5,7,9; p=a; 先执行printf(%d,*p) p,p的作用是先使用p的原始值,使用后给p加1。 因为p的原始值指向数组a中的第0个元素a0,*p是第0个元素a0的值1。 结论:首先输出a0的值,然后在p上加1。 *( p )的情况下,首先将p朝向a1,然后输出a1的值。 (21 )虽然习惯于用以往的方法声明函数形式参数,但是将函数的形式参数和函数中的局部变量混合起来进行定义。 例如: max(x,y) int x,y,=xy? x,y; return (); (22 )被。

8、调用函数在语句被调用之前没有定义,并且在被调用之前没有描述。 将max函数的声明添加到main函数中。 将max函数的定义位置移动到main函数之前。 (23 )形状参数值的变化误会影响实际参数值。 (24 )函数的实参与形参类型不一致。 (25 )不同种类的指针混合存在。 主() int I=3,*p1; 浮点a=15、*p2; p1=p2也想指定I,但p2是指向实数型变量的指针,不能指定整数型变量。 指定到不同类型的指针必须进行强制类型转换。 (26 )没有注意函数参数的评价顺序。 例如i=3; printf(%d,%d,%dn,I,I ); 很多人认为输出必然是三、四、五。 在turbo。

9、 c和其他c系统中,输出为5、5,4,混淆(27 )数组名称和指针变量的差异。 主() int I,a5; for(i=0; i5; I )通过改变i ) scanf(%d,a) a,将指针向下移动,指向要输入数据的数组元素。 该错误是因为不知道数组名表示数组的开头地址,所以不能变更其值,如果a错误,则应该用指针变量指示各数组元素。 (28 )把结构类型和结构变量的差异混淆,代入一种结构类型。 结构工作器长int num; char name20; char sex; int age; workernum=187045;strcpy(workername,张fun ) workersex=m;。

10、 工作器age=18; 因为这是错误的,可以分配给变量,但不能分配给类型。 上面只定义了“结构工作器”类型,没有定义变量。 (29 )使用文件时忘记打开,打开方法不符合使用状况。 例如,对该文件的读写是以只读方式打开的,但是尝试向该文件输出数据。 例如,if(fp=fopen(test,r ) )=null ) printf (cannotopenthisfilen ); exit(0) ch=fgetc(fp) while(ch!=#) ch=ch 4; 对用fputc(ch,fp) ch=fget(fp) r”方式(只读方式)打开的文件进行读取和写入操作显然不行。 另外,也有容易忘记关闭文。

11、件的程序,使用的文件会自动关闭,但可能会丢失数据。 因此,文件不见了就必须关闭。 以上只是列举了初学者常见的错误,其中很多错误都不熟悉c语法。 如果c语言的使用变多,熟练的话,就会自然地减少犯这些错误。 深入使用c语言会产生更深、更隐藏的错误。 程序错误有三种情况:语法错误。 逻辑错误。 执行错误。 程序既没有语法错误也没有逻辑错误,但是在运行时会发生错误,有时会停止执行。 例如int a、b、c; 输入扫描(% d % d,a和b的值,输出b/a的值。 程序是没错的。 但是,输入a的值为0时,会发生错误。 因此,程序应该能够适应不同的数据,或者应该具有能经得起各种数据的“考验”的“壮健性”。。

12、 程序调试是指程序的调试和调试。 调试器通常应该(1)首先进行手动检查,即静态检查。 (2)手动(静态)检查无误后,才能调整机器。 (3)修改语法错误(包括“错误”和“警告”)后,程序通过链路获得可执行的目标程序。14.2程序调试,(4)执行结果错误,大多是逻辑错误。 为了发现这样的错误,经常需要慎重地检查和分析。 将程序与流程图(或伪代码)进行良好对照,如果流程图正确,可以采用程序写错而容易发现的方法。 如果没有发现错误,可以采取“阶段性检查”的方法。 也可以使用第9章中说明的“条件编译”命令进行程序调试(在程序调试阶段,需要编译并执行一些printf函数语句)。 如果程序没有发现问题,则检查流程图是否有错误,即算法是否有问题,如果有问题,在修正程序之后再修正。 某些系统提供调试(debug )工具,以跟踪流程并提供适当的信息。 更好的使用方法请参见手册。 总之,程序的调整要做得细致,要善于动脑筋,积累经验。 升机调试器的目的不是“验证程序的正确性”,而是“掌握调试的方法和技术。

c语言调试时出现的三种错误,C语言课件 第十四章 常见错误和程序调试相关推荐

  1. Eclipse远程调试Java代码的三种方法

    Eclipse远程调试Java代码的三种方法, 第1种方法是用来调试已经启动的Java程序,Eclipse可以随时连接到远程Java程序进行调试, 第2种方法可以调试Java程序启动过程,但是Ecli ...

  2. java 三种错误类型 区别_请列举至少三种在java语言中发生“严重错误”的情况...

    [简答题]自已编写一个自定义非整数异常类,来处理一个异常 [填空题]捕获异常时,可以把catch捕获的异常对象( ),使上层try-catch结构继续处理该异常事件;也可以把异常对象转换为其它异常对象 ...

  3. eclipse 远程调试java_Eclipse远程调试Java代码的三种方法

    Eclipse远程调试Java代码的三种方法, 第1种方法是用来调试已经启动的Java程序,Eclipse可以随时连接到远程Java程序进行调试, 第2种方法可以调试Java程序启动过程,但是Ecli ...

  4. c语言数组最大可定义多少位_C语言求数组的最大值三种方法

    /* 黄哥Python培训 黄哥所写*/#include int maxValue(int* arr, int n);int maxRecursionValue(int* arr, int n);in ...

  5. 计算机组成原理 王道考研2021 第一章:计算机组成原理概述 -- 计算机的工作过程(从源程序到可执行文件)、计算机的层次结构、计算机软件的分类、三种级别的语言

    1. 计算机的工作过程 计算机的工作过程分为以下三个步骤: 把程序和数据装入主存储器. 将源程序转换成可执行文件. 从可执行文件的首地址开始逐条执行指令. 1.1 从源程序到可执行文件 预处理阶段:预 ...

  6. c语言常见错误分析和程序调试,C语言中常见错误分析及程序调试

    总结分析了C语言中常见错误及程序调试的相关技巧,以提高初学者的编程能力. 2 8 2月 0年l 0 电脑学习 第6 期 C语言中常见错误分析及程序调试 陈伟' 陈东淼 摘要:总结分析了 C语言中常见错 ...

  7. R语言实战笔记--第十四章 主成分和因子分析

    R语言实战笔记–第十四章 主成分和因子分析 标签(空格分隔): R语言 主成分分析 因子分析 原理及区别 主成分分析与因子分析很接近,其目的均是为了降维,以更简洁的数据去解释结果,但这两种方法其实是相 ...

  8. 第十四章 使用SQL Shell界面(三)

    文章目录 第十四章 使用SQL Shell界面(三) SQL元数据.查询计划和性能指标 显示元数据 SHOW STATEMENT EXPLAIN and Show Plan SQL Shell Per ...

  9. R语言学习笔记——高级篇:第十四章-主成分分析和因子分析

    R语言 R语言学习笔记--高级篇:第十四章-主成分分析和因子分析 文章目录 R语言 前言 一.R中的主成分和因子分析 二.主成分分析 2.1.判断主成分的个数 2.2.提取主成分 2.3.主成分旋转 ...

最新文章

  1. 用自然语言指导强化学习agent打游戏,这是斯坦福的最新研究
  2. POJ 3034 Whac-a-Mole [DP]
  3. redhat安装wine教程_Ubuntu怎么下载应用并安装应用
  4. python正则表达式提取电话号码_Python学习笔模式匹配与正则表达式之电话号码和Email地址提取程序...
  5. 工作289:父子组件传值控制弹窗关闭
  6. git 常用操作,撤销修改
  7. opengl学习笔记(三)
  8. Deep Retinex Decomposition for Low-Light Enhancement
  9. extjs 调用金税COM接口
  10. maven报错:Failure to transfer xxx.jar from xxx was cached in the local repository.
  11. 最小的 中文 linux,麻雀虽小五脏俱全 最小Linux系统试用
  12. Chartboost ANE 使用教程(Chartboost ANE Tutorial)
  13. 程序分析-Joern工具工作流程分析
  14. Content has been consumed
  15. Web(ics-07)
  16. Part 2 如何进行埋点(内附埋点文档模板)
  17. 详解:S锁(读锁)和X锁(写锁)
  18. titan rtx和rtx 3090 哪个强
  19. 解决Keil5中MDK与C51共存没有STC芯片型号
  20. FreeSWITCH安装教程

热门文章

  1. of介词短语作定语_of介词短语作表语
  2. 什么是代理ip,代理ip的用途有哪些?
  3. 【ACWing】587. 吃蛋糕
  4. 【Simulink】数字控制振荡器 NCO ( N umerically CONtrolled Oscillator )
  5. 栈的应用 括号匹配 c++
  6. 计算机网络-基本概念
  7. veins车载通信仿真框架(3)--OMNET++基础
  8. Audio Codec介绍
  9. win10环境 pip 安装theano(gpu) python3.6
  10. java号码分身_电话号码分身问题