《C语言程序设计》PDF下载

  • 购买积分:13 如何计算积分?
  • 作  者:甘勇,李晔,卢冰编著
  • 出 版 社:北京:中国铁道出版社
  • 出版年份:2015
  • ISBN:9787113207076
  • 页数:351 页
图书介绍:本书以程序设计过程为主线,以问题和案例引入内容,围绕问题的解决来讲解C语言及程序设计。全书共分13章,主要内容包括:引言、简单C语言程序设计、分支结构、循环结构、函数、数组、字符数组与字符串、指针、结构、指针进阶、C预处理、文件及计算思维与常用算法。本书内容详尽,适合作为高等学校各专业C语言程序设计课程的教材,也可作为从事计算机相关工作人员的参考书。

第1章 引言 1

1.1 计算机与程序设计语言 2

1.1.1 程序存储思想 2

1.1.2 程序设计语言的发展 3

1.2 C语言的发展简史 4

1.2.1 C语言的起源 4

1.2.2 C语言的发展 5

1.2.3 C语言的特点 6

1.3 第一个C程序 6

1.3.1 编辑源程序 7

1.3.2 编译、链接和运行 7

1.3.3 程序开发周期 8

1.4 剖析一个简单的程序 9

1.5 简单程序举例 12

习题 14

第2章 简单C程序设计 17

2.1 内存与变量 18

2.1.1 内存 18

2.1.2 变量 18

2.1.3 整数类型 19

2.1.4 变量的声明和使用 20

2.1.5 赋值运算 21

2.2 格式化输入输出函数 22

2.2.1 格式化输出函数Printf() 22

2.2.2 格式化输入函数scanf() 24

2.3 浮点类型 26

2.3.1 浮点类型 26

2.3.2 浮点数据的输出 27

2.3.3 浮点数据的输入 27

2.3.4 常量 28

2.4 基本运算符 30

2.4.1 算术运算 30

2.4.2 类型转换 32

2.5 计算两点间的距离 33

2.5.1 常用数学函数 34

2.5.2 计算整数的位数 35

习题 35

第3章 分支结构 37

3.1 if控制语句 38

3.1.1 if...else语句 38

3.1.2 伪代码 39

3.1.3 缺省else子句的if语句 40

3.1.4 关系运算 41

3.1.5 复合语句 42

3.1.6 条件表达式 44

3.2 逻辑运算 45

3.2.1 逻辑运算符的运算规则 45

3.2.2 逻辑运算符的优先级和结合性 46

3.2.3 判断闰年 47

3.3 判断字母大小写 49

3.3.1 字符类型 49

3.3.2 字符型数据的输入输出 50

3.3.3 复合赋值语句 51

3.4 用嵌套的if语句实现多分支结构 51

3.5 用switch语句实现多分支结构 53

3.5.1 switch语句的一般形式 53

3.5.2 break在switch中的灵活运用 55

3.5.3 四则运算(加强版) 57

3.5.4 浮点数据 60

3.6 运算符与表达式 62

习题 63

第4章 循环结构 65

4.1 循环控制原理 66

4.2 while循环语句 67

4.3 for循环语句 68

4.3.1 for语句的基本格式 68

4.3.2 for语句的注意事项 70

4.3.3 自增自减运算符 71

4.3.4 最大值 74

4.3.5 极限常量 75

4.4 求数列的和 76

4.5 输出阶乘表 80

4.5.1 类型溢出问题 81

4.5.2 逗号运算符及其表达式 82

4.5.3 计算数列a,aa,aaa,…的前n项和 83

4.6 标记控制的循环 85

4.6.1 再谈while语句 86

4.6.2 字符的分类统计 88

4.6.3 计算n的位数 89

4.6.4 do语句 90

4.7 循环中的break和continue 90

4.7.1 循环中的break 90

4.7.2 循环中的continue 92

4.8 多重循环与goto语句 94

4.8.1 多重循环 94

4.8.2 goto语句 97

4.9 多实例测试 98

4.10 表达式的求值顺序与副效应 103

习题 104

第5章 函数 109

5.1 模块化程序设计 110

5.2 函数的基本概念 111

5.2.1 求最大值 111

5.2.2 函数的定义 112

5.2.3 函数原型 114

5.2.4 return语句 115

5.2.5 函数的调用 116

5.2.6 按值传递机制 117

5.3 使用函数编写程序 118

5.3.1 素数表 118

5.3.2 验证哥德巴赫猜想 119

5.3.3 组合数 120

5.4 变量的存储类型 121

5.5 局部变量和外部变量 123

5.5.1 局部变量 123

5.5.2 静态局部变量 124

5.5.3 外部变量 125

5.6 函数的递归调用 126

5.6.1 递归的基本思想 126

5.6.2 最大公约数 127

5.6.3 最近共同祖先 128

习题 129

第6章 数组 131

6.1 一维数组 132

6.1.1 一维数组的定义和引用 132

6.1.2 一维数组初始化 133

6.1.3 数组元素的查找 136

6.1.4 在有序序列里插入新元素 137

6.1.5 比较交换排序 138

6.2 数组作为函数参数 140

6.3 一维数组应用举例 144

6.3.1 去重处理 144

6.3.2 字母使用频率统计 146

6.3.3 集合的合并——利用有序关系简化问题 147

6.3.4 二分搜索 150

6.4 二维数组 151

6.4.1 二维数组的定义和引用 151

6.4.2 二维数组的初始化 151

6.4.3 杨辉三角 152

6.4.4 二维数组做函数参数 154

6.5 二维数组应用举例 156

6.5.1 图像转换 156

6.5.2 判断偶数矩阵 157

6.5.3 日期计算 159

习题 160

第7章 字符数组与字符串 163

7.1 字符型数据 164

7.1.1 字符型数据的存储 164

7.1.2 转义序列 165

7.1.3 字符数据的输入问题 166

7.1.4 处理字符的函数 167

7.2 字符数组与字符串 168

7.2.1 统计空格 169

7.2.2 字符数组的初始化 169

7.2.3 字符串的输入输出 170

7.2.4 统计单词个数 171

7.3 常用字符串函数 172

7.3.1 string.h中的字符串处理函数 172

7.3.2 stdio.h中的字符串函数 175

7.4 字符串应用举例 177

7.4.1 DNA序列的编码 177

7.4.2 多个二进制数排序 178

7.4.3 最大值(多种进制) 180

7.4.4 将一个十进制整数转换为二进制输出 181

7.5 字符串数组 182

7.5.1 字符串排序 182

7.5.2 前缀判断 184

习题 186

第8章 指针 187

8.1 什么是指针 188

8.1.1 计算机内存的使用 188

8.1.2 指针的概念 189

8.2 指针变量的声明和初始化 190

8.2.1 指针变量的声明 190

8.2.2 指针变量的初始化 190

8.2.3 指针和数据类型 191

8.3 指针的基本运算 192

8.4 指针作为函数的参数 193

8.5 一维数组与指针 198

8.5.1 指针的算术运算和关系运算 198

8.5.2 指针和数组的关系 200

8.5.3 数组作函数参数的本质 203

8.6 指针与const限定符 204

8.7 指针与字符串 207

8.7.1 字符串常量 207

8.7.2 使用指针处理字符串 208

8.7.3 字符数组与字符指针 212

8.8 用指针实现内存动态分配 213

8.8.1 使用malloc()函数为数组分配内存 214

8.8.2 释放动态分配的内存 214

8.8.3 其他动态内存分配函数 215

习题 216

第9章 结构 219

9.1 结构定义 220

9.1.1 使用结构的原因 220

9.1.2 定义结构类型和结构变量 221

9.1.3 初始化结构变量 222

9.1.4 将一个结构作为另一个结构的成员 223

9.1.5 访问结构成员 223

9.1.6 使用typedef定义数据类型 224

9.2 结构数组与指针 227

9.2.1 结构数组 227

9.2.2 结构指针 229

9.2.3 用指针访问结构数组 230

9.3 结构与函数 232

9.3.1 结构作为函数的参数 232

9.3.2 结构指针作为函数参数 233

9.3.3 结构作为函数的返回值 234

9.3.4 结构应用举例 235

9.4 联合与枚举 237

9.4.1 联合 237

9.4.2 联合指针 239

9.4.3 联合的初始化 239

9.4.4 联合与结构 239

9.4.5 枚举 240

9.5 单链表 243

9.5.1 单链表类型定义 243

9.5.2 单链表的操作 244

习题 250

第10章 指针进阶 253

10.1 指针与二维数组 254

10.1.1 用一级指针访问二维数组 254

10.1.2 指向数组的指针 254

10.1.3 二维数组名 255

10.2 指针数组 257

10.2.1 动态申请和释放二维数组 258

10.2.2 用指针数组处理多个字符串 259

10.3 带参数的main()函数 263

10.4 指向函数的指针 265

习题 270

第11章 C预处理 271

11.1 预处理器的工作原理 272

11.2 预处理指令 273

11.3 #define预处理指令 273

11.3.1 符号常量 274

11.3.2 带参数的宏 274

11.4 文件包含 277

11.4.1 多文件程序 277

11.4.2 include指令 277

11.4.3 文件之间如何共享信息 277

11.5 条件编译 279

习题 281

第12章 文件 283

12.1 文件概述 284

12.1.1 一个简单的文件操作程序 284

12.1.2 C文件的分类 285

12.1.3 缓冲文件系统 285

12.1.4 文件指针 286

12.2 文件的打开和关闭 287

12.2.1 文件打开函数fopen() 287

12.2.2 文件关闭函数fclose() 289

1 2.2.3 输入输出重定向函数freopen() 289

12.3 文件的读写操作 290

12.3.1 字符读写函数fgetc()和fputc() 290

12.3.2 字符串读写函数fgets()和fputs() 292

12.3.3 格式化文件读写函数fscanf()和fprintf() 293

12.3.4 数据块读写函数fread()和fwrite() 294

12.4 文件的其他操作 295

12.4.1 文件定位函数 295

12.4.2 文件检测 296

12.5 文件应用实例 297

习题 307

第13章 计算思维与常用算法 309

13.1 模拟 310

13.1.1 校门外的树 310

13.1.2 约瑟夫问题 311

13.2 随机化算法 315

13.2.1 计算圆周率近似值 315

13.2.2 洗牌发牌模拟 317

13.3 空间换时间 320

13.3.1 筛选法求素数 320

13.3.2 验证哥德巴赫猜想(加强版) 322

13.3.3 分解素因数 324

13.4 递归 327

13.4.1 计算实数的整数幂 328

13.4.2 计算连通区域面积 328

13.5 贪心算法 330

13.5.1 活动安排问题 331

13.5.2 最优装载问题 333

13.6 动态规划算法 334

13.6.1 游戏币问题 335

13.6.2 最长单调序列 336

习题 338

附录 341

附录A 常用字符与ASCII代码对照表 342

附录B C语言中的关键字 343

附录C 运算符和结合性 344

附录D C库函数 345

附录E C99相对于C89的新特性(部分) 350

参考文献 351