当前位置:主页 > 书籍配套资源 > C语言配套资源
《C语言解惑》配套软件

《C语言解惑》配套软件

  • 更新:2022-04-06
  • 大小:1.6 MB
  • 类别:C语言
  • 作者:刘振安、刘燕君
  • 出版:机械工业出版社
  • 格式:PDF

  • 资源介绍
  • 相关推荐

本书分为上下两篇,上篇介绍了C语言程序设计中经常遇到的典型错误,其中不乏编程高手也经常会出现的错误。下篇主要从程序的质量出发,针对能够运行但质量不佳的程序或者设计方法,提出改进的建议。使读者完成从会编程到编出好程序的转变。

封面图

目录

  • 前言
  • 第一篇C语言编程中的对与错
  • 第1章初涉C语言者的困惑2
  • 1.1中文字符以假乱真2
  • 1.2象形字体扰乱视听3
  • 1.3都是注释惹的祸4
  • 1.4千万不要忘记我4
  • 1.5别把分号放错地方4
  • 1.6少了花括号就是行不通6
  • 1.7scanf要“&”不要“\n”6
  • 1.8老大就是要在最前面6
  • 1.9记住我就会受益无穷7
  • 第2章用好printf和scanf一对活宝9
  • 2.1printf输出的小奥妙9
  • 2.2printf输出整数或字符11
  • 2.3输入的格式配对错误12
  • 2.4空格让scanf莫名其妙14
  • 2.5回车键打乱scanf的阵脚15
  • 2.6字符输入要搞特殊化15
  • 2.7别混淆字符数组和字符17
  • 2.8一维数组更要特殊对待19
  • 2.9输出值的操作符20
  • 2.10 引入指针更方便23
  • 2.11 指针的困惑24
  • 第3章基本数据类型26
  • 3.1混合运算要小心26
  • 3.2数据类型的后缀符号28
  • 3.3基本数据的初始化28
  • 3.4注意编译系统的差别29
  • 3.5不要用错等于运算符30
  • 3.6不要用错逗号运算符31
  • 第4章程序控制语句34
  • 4.1控制流程运算容易出现的问题34
  • 4.1.1写错关系运算符34
  • 4.1.2混淆表达式和关系表达式的值36
  • 4.1.3混淆逻辑表达式和逻辑表达式的值37
  • 4.1.4混淆逻辑运算符和位运算符38
  • 4.2程序控制语句容易出现的问题39
  • 4.2.1条件分支语句的错误39
  • 4.2.2控制重复的分支语句44
  • 4.2.3运算符优先级错误53
  • 4.2.4求值顺序55
  • 第5章数组与指针是重点58
  • 5.1一维数组越界和初始化错误58
  • 5.1.1一维数组越界错误58
  • 5.1.2一维数组初始化错误60
  • 5.2数组赋值错误61
  • 5.3指针地址的有效性64
  • 5.4配合使用一维数组与指针69
  • 5.4.1使用一维数组名简化操作69
  • 5.4.2使用指针操作一维数组71
  • 5.4.3使用一维字符数组78
  • 5.4.4不要忘记指针初始化79
  • 5.5多维数组与指针81
  • 5.5.1数组操作及越界和初始化错误81
  • 5.5.2二维数组与指针85
  • 5.5.3二维数组与指向一维数组的指针89
  • 第6章函数是核心91
  • 6.1函数的声明与定义91
  • 6.2函数变量的作用域93
  • 6.3函数变量类型的匹配95
  • 6.4函数的返回路径95
  • 6.5函数参数的设计及传递96
  • 6.6传递指针不一定改变原来参数的值98
  • 6.7函数的返回值99
  • 6.7.1无返回值的void类型函数100
  • 6.7.2函数返回值问题102
  • 第7章宏与const106
  • 7.1用const代替无参数的宏定义106
  • 7.2有参数的宏定义109
  • 第8章库函数112
  • 8.1引用的库函数与头文件不匹配112
  • 8.2与库函数的参数类型不匹配113
  • 8.3对库函数的作用理解不对114
  • 8.4充分利用库函数printf的功能118
  • 8.4.1printf的函数原型119
  • 8.4.2printf函数的格式控制符120
  • 第9章结构134
  • 9.1结构定义和赋值错误134
  • 9.2结构作为函数参数及函数的返回值140
  • 9.3使用结构数组和指针容易出现的错误145
  • 9.4其他注意事项147
  • 第10章联合与枚举148
  • 10.1联合148
  • 10.2枚举153
  • 第11章状态机159
  • 第二篇C语言编程中的好与坏
  • 第12章注意编译系统的差别170
  • 12.1打开所有编译开关170
  • 12.2克服依靠编译系统产生的错误170
  • 第13章测试与调试程序174
  • 13.1预防措施174
  • 13.1.1书写格式和注意事项174
  • 13.1.2命名注意事项176
  • 13.1.3程序注释178
  • 13.2使用条件编译180
  • 13.3消灭警告信息183
  • 13.4使用简单的输出信息调试程序185
  • 13.5编写error函数194
  • 13.6使用集成环境提供的调试手段197
  • 13.6.1一个简单的实例197
  • 13.6.2编译程序198
  • 13.6.3排错199
  • 13.6.4基本调试命令简介200
  • 13.6.5程序与汇编调试窗口203
  • 13.7调试程序实例204
  • 13.8软件测试206
  • 13.8.1模块测试209
  • 13.8.2组装测试211
  • 13.8.3确认测试211
  • 13.9程序的测试与调试212
  • 13.10 测试用例设计技术214
  • 13.10.1逻辑覆盖法215
  • 13.10.2等价划分法218
  • 13.10.3边值分析法219
  • 13.10.4因果图法219
  • 13.10.5错误猜测法220
  • 第14章正确使用变量、常量和指针221
  • 14.1基本数据类型的变量初始化221
  • 14.2不要混淆字符和字符串222
  • 14.3指针的初始化224
  • 14.4指针相等228
  • 14.5使用const232
  • 14.5.1左值和右值232
  • 14.5.2推荐使用const定义常量234
  • 14.5.3对函数传递参数使用const限定符236
  • 14.5.4对指针使用const限定符237
  • 14.6使用volatile变量240
  • 14.7变量的存储地址分配242
  • 第15章正确使用宏246
  • 15.1不要使用不存在的运算符246
  • 15.2正确使用定义的宏247
  • 15.3正确定义宏的参数248
  • 15.4使用宏定义函数250
  • 第16章控制语句252
  • 16.1运算顺序错误252
  • 16.2采用更明确的条件254
  • 16.3设计存在的问题256
  • 16.3.1没有涵盖全部条件256
  • 16.3.2条件超出范围261
  • 16.3.3减少循环次数264
  • 16.4正确选择运算符273
  • 16.5优先级和求值顺序错误277
  • 第17章位运算285
  • 17.1位运算典型错误285
  • 17.2位运算典型实例290
  • 第18章再论数组与指针295
  • 18.1一维数值数组和指针295
  • 18.1.1使用数组偏移量造成数组越界295
  • 18.1.2使用数组名进行错误运算296
  • 18.1.3错误使用数组下标和指向数组指针的下标298
  • 18.1.4小结299
  • 18.2一维字符数组和指针301
  • 18.2.1字符数组的偏移量301
  • 18.2.2字符数组不对称编程综合实例303
  • 18.3动态内存307
  • 18.3.1非数组的指针307
  • 18.3.2NULL指针309
  • 18.4二维数组和指针310
  • 18.4.1二维数组的界限310
  • 18.4.2二维数组的一维特性312
  • 18.4.3指向二维数组的指针314
  • 18.5数组和指针应用实例318
  • 第19章再论函数325
  • 19.1函数变量的作用域325
  • 19.1.1块结构之间的变量屏蔽规则325
  • 19.1.2程序和文件内的变量328
  • 19.1.3多文件变量作用域331
  • 19.2函数的参数337
  • 19.2.1完璧归赵338
  • 19.2.2多余的参数340
  • 19.2.3传递的参数与函数参数
  • 匹配问题342
  • 19.2.4等效替换参数345
  • 19.3函数的类型和返回值347
  • 19.3.1函数的类型力求简单347
  • 19.3.2实参要与函数形参的类型匹配349
  • 19.3.3正确设计函数的返回方式351
  • 19.3.4正确设计和使用函数指针356
  • 19.3.5如何解读函数声明361
  • 第20章再论库函数365
  • 20.1getchar函数的返回类型不是字符365
  • 20.2setbuf函数与其他函数的配合368
  • 20.3错误使用errno函数377
  • 20.4模拟设计printf函数379
  • 20.4.1具有可变参数的函数379
  • 20.4.2设计简单的打印函数382
  • 20.4.3利用宏改进打印函数387
  • 20.5scanf和sscanf函数392
  • 20.5.1sscanf函数的使用方法394
  • 20.5.2sscanf函数用法举例395
  • 20.6探讨printf函数398
  • 第21章再论结构400
  • 21.1同类型结构变量之间的整体赋值400
  • 21.2使用键盘赋值405
  • 21.2.1为结构变量赋值405
  • 21.2.2为结构指针变量赋值407
  • 21.2.3为链表赋值411
  • 21.2.4为结构数组的变量赋值412
  • 21.2.5为含有指针域的结构数组赋值413
  • 21.3使用结构作为函数的参数417
  • 21.3.1结构变量的传数值与传地址值417
  • 21.3.2结构数组传地址值418
  • 21.4结构函数的返回值421
  • 21.5修改传递的结构参数的值430
  • 21.6优先使用结构指针传递参数435
  • 第22章使用文件常见错误分析439
  • 22.1文件的打开与关闭439
  • 22.2文件的读写450
  • 22.3其他读写函数464
  • 22.4文件的定位467
  • 22.5操作出错检测及错误标志的复位469
  • 22.6文件的内存分配470
  • 22.7小结470
  • 第23章多文件编程472
  • 23.1多文件编程错误浅析472
  • 23.2单文件结构475
  • 23.3一个源文件和一个头文件475
  • 23.4多文件结构477
  • 第24章发布C程序483
  • 24.1两种版本的异同483
  • 24.2两种版本的设置484
  • 第25章典型问题486
  • 25.1计算机解题具有多解的特点486
  • 25.2应对算法进行优化487
  • 25.3优化时要避免出现新的错误488
  • 25.4扩展程序要注意是否满足全部条件494
  • 25.5注意函数设计的多样化和效率496
  • 25.6使用多文件编程502
  • 25.7使用状态机设计程序507
  • 附录AC语言操作符的优先级513
  • 附录B简化优先级记忆口诀515
  • 附录C7位ASCII代码表517
  • 主要参考文献518

资源下载

资源下载地址1:https://pan.baidu.com/s/18N7abddv0Xabzn4r1UpjxQ

相关资源

网友留言