书籍详情

C语言程序设计:程序思维与代码调试

C语言程序设计:程序思维与代码调试

作者:周幸妮

出版社:电子工业出版社

出版时间:2019-07-01

ISBN:9787121370984

定价:¥89.00

购买这本书可以去
内容简介
  本书站在程序设计的角度,从程序和算法、数据、程序语句、指针、结构体、函数和文件等基本的C语言要素讲起,全面介绍C语言程序设计的方方面面,引导学习者以“程序的思维”看问题,即如何从一个问题入手,算法应该如何设计、程序如何实现的角度去看程序设计问题,让初学者容易理解并掌握程序设计的基本思想与方法。通过对实际问题、解决方法或存在问题的讨论,引入新概念,深入浅出,让学习的过程变得有趣且容易。本书图文、表格并茂,便于直观理解。
作者简介
  周幸妮,西安电子科技大学计算机学院教授,长期从事程序设计、数据结构等课程的教学工作,著有C语言、数据结构与算法等方面的多部教材。
目录
第1章 程序概论\t1
1.1 流程的概念\t1
1.1.1 关于流程\t1
1.1.2 流程的表达方式\t3
1.1.3 流程的基本逻辑结构\t4
1.2 程序的概念\t8
1.2.1 自动化流程\t9
1.2.2 程序的概念\t9
1.2.3 程序的执行特点\t12
1.2.4 计算机工作流程\t12
1.3 程序的构成\t13
1.3.1 计算机解题流程之数据\t14
1.3.2 计算机解题流程之处理\t15
1.3.3 计算机解题流程之结果\t15
1.4 程序的开发过程\t17
1.4.1 问题引例\t17
1.4.2 程序开发基本步骤\t18
1.4.3 计算机解题实例\t19
1.4.4 程序开发流程\t24
1.5 C语言程序简介\t25
1.5.1 C程序样例\t25
1.5.2 C程序框架结构\t28
1.5.3 代码格式要求\t29
1.6 本章小结\t30
习题\t31
第2章 算法\t32
2.1 算法的概念\t32
2.2 算法的表示\t35
2.3 算法的可行性\t39
2.4 算法的通用性\t42
2.5 算法的全面性\t44
2.6 算法设计过程与算法特性\t49
2.6 本章小结\t52
习题\t52
第3章 基本数据\t54
3.1 常量与变量\t54
3.1.1 常量\t54
3.1.2 变量\t56
3.2 数据类型\t62
3.2.1 计算机中的信息表示\t62
3.2.2 计算机中的信息处理问题
讨论\t63
3.2.3 C语言的基本数据类型\t66
3.3 整数存储规则\t67
3.3.1 有符号整数\t68
3.3.2 无符号整数\t68
3.3.3 字符类型数据\t69
3.4 实数存储规则\t70
3.5 运算符与表达式\t74
3.6 数值处理\t76
3.6.1 算术运算符和算术表达式\t76
3.6.2 数据运算中的出界问题\t80
3.7 逻辑判断处理\t81
3.7.1 关系运算\t81
3.7.2 逻辑运算\t82
3.8 数据类型转换\t86
3.8.1 强制类型转换\t88
3.8.2 自动类型转换\t89
3.9 其他运算\t90
3.9.1 条件表达式\t90
3.9.2 sizeof运算符\t91
3.9.3 赋值运算符与表达式\t92
3.9.4 复合赋值运算符\t92
3.9.5 逗号运算符和逗号表达式\t92
3.10 本章小结\t93
习题\t94
第4章 输入/输出\t95
4.1 输入/输出的概念\t95
4.1.1 标准输入/输出\t95
4.1.2 C标准库函数\t96
4.1.3 头文件\t96
4.2 数据的输出\t97
4.2.1 字符输出函数\t97
4.2.2 字符串输出函数\t98
4.2.3 格式输出函数\t99
4.3 数据的输入\t102
4.3.1 字符输入函数\t103
4.3.2 字符串输入函数\t104
4.3.3 格式输入函数\t105
4.4 数据输入的常见问题\t109
4.5 本章小结\t112
习题\t113
第5章 程序语句\t115
5.1 顺序结构\t115
5.2 双分支选择结构\t117
5.2.1 双分支选择结构的语法规则\t117
5.2.2 复合语句的作用\t118
5.2.3 if语句实例\t119
5.2.4 嵌套的if-else语句\t121
5.3 多分支选择结构\t124
5.3.1 多分支问题的引入\t124
5.3.2 多分支结构语法规则\t125
5.3.3 多分支结构实例\t128
5.3.4 各种分支结构语句的比较\t134
5.4 循环问题的引入\t134
5.4.1 循环中的要素分析\t134
5.4.2 循环三要素\t136
5.4.3 循环语句\t137
5.5 当型循环结构\t137
5.5.1 当型循环语法规则\t137
5.5.2 循环要素必要性验证\t138
5.5.3 当型循环实例\t142
5.5.4 循环控制方式\t146
5.6 直到型循环结构\t146
5.6.1 直到型循环语法规则\t146
5.6.2 do-while的适用场合\t150
5.6.3 do-while语句实例\t150
5.7 当型循环的另一种形式\t151
5.7.1 for语句语法规则\t151
5.7.2 for语句实例\t152
5.8 无限循环\t154
5.8.1 实际问题中的无限制循环\t154
5.8.2 无限循环的while语句表达\t154
5.8.3 无限循环的for语句表达\t155
5.9 中断循环\t157
5.9.1 实际问题中的循环中断\t157
5.9.2 跳出循环的break语句\t158
5.9.3 在循环内跳转的continue
语句\t161
5.10 自由跳转机制\t164
5.10.1 自由跳转的概念\t164
5.10.2 无条件转移语句规则\t164
5.10.3 无条件转移语句实例\t164
5.10.4 goto语句的特点\t166
5.11 本章小结\t167
习题\t168
第6章 数组\t172
6.1 数组的概念\t172
6.1.1 一组同类型数据的处理
问题\t172
6.1.2 一组同类型数据所需要的
表达方式\t175
6.2 数组的存储\t176
6.2.1 数组的定义\t176
6.2.2 数组的初始化\t178
6.2.3 数组的空间分配\t179
6.2.4 数组的空间查看\t180
6.3 一维数组的操作\t183
6.4 二维数组的操作\t196
6.5 字符数组的操作\t205
6.6 本章小结\t214
习题\t215
第7章 指针\t217
7.1 指针的概念\t217
7.1.1 名称引用和地址引用\t217
7.1.2 存储空间的管理\t219
7.1.3 指针的概念\t223
7.2 指针的运算\t224
7.2.1 指针运算符\t224
7.2.2 指针运算种类\t224
7.2.3 指针运算基本规则\t224
7.2.4 指针偏移的意义\t227
7.2.5 空指针的概念\t230
7.3 指针与数组\t230
7.3.1 指针与一维数组\t230
7.3.2 指针与二维数组\t234
7.4 指针与多组字符串问题\t238
7.4.1 一维指针数组与指向指针的
指针\t240
7.5 本章小结\t241
习题\t242
第8章 复合类型数据\t244
8.1 结构体的概念\t244
8.1.1 问题引入\t244
8.1.2 综合数据表的存储方案\t245
8.2 结构体的存储\t246
8.2.1 结构体类型定义\t246
8.2.2 结构体变量定义\t248
8.2.3 结构体初始化\t248
8.2.4 结构体变量空间分配\t249
8.2.5 结构体成员引用\t253
8.3 结构体应用实例\t254
8.4 共用体\t264
8.4.1 问题引入\t264
8.4.2 共用体的空间存储描述\t264
8.5 枚举\t269
8.5.1 问题引入\t269
8.5.2 枚举的概念及定义形式\t270
8.5.3 枚举实例\t271
8.5.4 枚举的使用规则\t272
8.6 声明新的类型名\t273
8.6.1 问题引入\t273
8.6.2 typedef声明形式及使用\t275
8.7 本章小结\t275
习题\t276
第9章 函数\t278
9.1 函数的概念\t278
9.1.1 问题的提出\t278
9.1.2 模块的概念\t279
9.2 函数形式设计\t281
9.2.1 模块间信息交流方法\t281
9.2.2 函数形式设计\t282
9.3 函数间信息交流机制设计\t285
9.3.1 函数间信息交流特点分析\t285
9.3.2 函数间信息交流之处理数据
的提交与接收\t287
9.3.3 函数结果的获取方式\t288
9.4 函数总体设计\t289
9.4.1 函数设计要素\t289
9.4.2 函数间信息传递归结\t289
9.4.3 函数的调用\t290
9.5 函数设计实例\t292
9.5.1 传值调用\t292
9.5.2 传址调用\t298
9.5.3 函数综合实例\t306
9.5.4 main函数的参数\t316
9.6 作用域\t319
9.6.1 问题引入\t319
9.6.2 模块的屏蔽机制\t321
9.6.3 内存分区与存储分类\t322
9.6.4 屏蔽机制1――变量的有效期
和作用范围\t323
9.6.5 屏蔽机制2――函数的有效
范围\t330
9.6.6 屏蔽机制3――共享数据的
使用限制\t332
9.7 递归\t333
9.7.1 引例\t333
9.7.2 递归概念\t336
9.7.3 递归实例\t337
9.8 本章小结\t339
习题\t340
第10章 编译预处理――编译前的
工作\t343
10.1 问题的引入\t343
10.2 宏定义\t344
10.2.1 简单的宏定义\t344
10.2.2 带参数的宏定义\t346
10.2.3 宏定义的副作用\t348
10.3 文件包含\t348
10.4 条件编译\t350
10.5 本章小结\t353
习题\t354
第11章 文件――外存数据的操纵\t356
11.1 问题的引入\t356
11.2 文件的概念\t357
11.3 文件的操作流程\t358
11.4 内存和外存的数据交流\t359
11.5 程序对文件的操作\t361
11.5.1 打开文件\t361
11.5.2 文件的读写\t362
11.5.3 关闭文件\t366
11.5.4 随机读取文件内容\t367
11.6 关于文件读写函数的讨论\t368
11.7 程序调试与输入输出重定向\t372
11.8 本章小结\t374
习题\t375
第12章 程序的运行\t377
12.1 程序运行环境\t377
12.1.1 集成环境主界面\t379
12.1.2 建立项目\t380
12.1.3 新建源文件\t382
12.1.4 编辑源文件\t382
12.1.5 编译源文件\t384
12.1.6 链接程序\t385
12.1.7 运行程序\t386
12.2 程序测试\t387
12.2.1 引子\t387
12.2.2 程序测试方法与实例\t388
12.3 程序调试概念\t392
12.3.1 bug与debug\t392
12.3.2 bug无处不在\t393
12.3.3 软件调试的困难\t393
12.4 软件调试的方法论\t394
12.4.1 引例\t394
12.4.2 软件调试的基本过程\t395
12.4.3 程序错误的查找方法讨论\t395
12.4.4 跟踪方法方案探索\t397
12.5 程序调试工具\t399
12.5.1 IDE中调试器的功能\t399
12.5.2 调试命令\t401
12.6 调试实例\t405
12.6.1 基本调试步骤示例\t405
12.6.2 调试查找程序错误示例\t407
12.6.3 调用栈的使用示例\t416
12.6.4 数据断点使用示例\t418
12.7 本章小结\t420
习题\t421
附录A 运算符的优先级和结合性\t425
附录B ASCII码表\t426
附录C C语言常用库函数\t427
附录D 常用转义字符表\t432
附录E 位运算简介\t433
附录F 在工程中加入多个文件\t435
附录G 编程范式\t441
附录H 空类型void问题\t449
参考文献\t450
猜您喜欢

读书导航