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

  • 购买积分:12 如何计算积分?
  • 作  者:甘勇主编;李晔,卢冰副主编
  • 出 版 社:北京:中国铁道出版社
  • 出版年份:2014
  • ISBN:9787113186043
  • 页数:339 页
图书介绍:本书分为12章,主要内容包括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程序 7

1.3.1 编辑源程序 7

1.3.2 编译、链接和运行 8

1.3.3 程序开发周期 9

1.4 剖析一个简单的程序 9

1.5 简单程序举例 12

习题 14

第2章 简单C程序设计 17

2.1 温度转换 18

2.1.1 内存 18

2.1.2 变量 19

2.1.3 整数类型 19

2.1.4 变量的声明和使用 20

2.1.5 赋值运算 21

2.1.6 格式化输出函数printf() 22

2.2 使用浮点数进行温度转换 24

2.2.1 浮点变量类型 24

2.2.2 浮点数据的输出 25

2.2.3 常量 26

2.3 对任意华氏温度进行温度转换 27

2.3.1 用scanf()读入整型数据 28

2.3.2 用scanf()读入浮点数据 29

2.3.3 格式控制字符串中的普通字符 29

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 伪代码 39

3.1.2 关系运算 39

3.1.3 复合语句 41

3.2 双分支if语句 43

3.2.1 条件表达式 44

3.2.2 嵌套的if……else 45

3.2.3 逻辑运算符和逻辑表达式 46

3.3 判断字母大小写 48

3.3.1 字符类型 48

3.3.2 字符型数据的输入/输出 49

3.3.3 复合赋值语句 50

3.4 多分支if语句 50

3.5 switch语句 52

3.5.1 switch语句的一般形式 52

3.5.2 break在switch中的灵活运用 54

3.5.3 四则运算(加强版) 57

3.5.4 浮点数据 60

3.6 运算符与表达式 61

习题 63

第4章 循环结构 65

4.1 while循环语句 67

4.2 for循环语句 68

4.2.1 for语句的基本格式 68

4.2.2 for语句的注意事项 70

4.2.3 自增自减运算符 71

4.2.4 最大值 74

4.2.5 极限常量 75

4.3 求数列的和 76

4.4 输出阶乘表 80

4.4.1 类型溢出问题 81

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

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

4.5 标记控制的循环 84

4.5.1 再谈while语句 86

4.5.2 字符的分类统计 88

4.5.3 计算n的位数 89

4.5.4 do语句 89

4.6 break和continue 90

4.6.1 循环中的break 90

4.6.2 循环中的continue 92

4.7 多重循环与goto语句 94

4.7.1 多重循环 94

4.7.2 goto语句 96

4.8 多实例测试 97

4.9 表达式的求值顺序与副效应 102

习题 104

第5章 函数 107

5.1 模块化程序设计 108

5.2 函数的基本概念 109

5.2.1 求最大值 109

5.2.2 函数的定义 110

5.2.3 函数的调用 112

5.2.4 函数原型 113

5.2.5 return语句 114

5.2.6 按值传递机制 115

5.3 使用函数编写程序 115

5.3.1 素数表 116

5.3.2 验证哥德巴赫猜想 117

5.3.3 组合数 118

5.4 变量的存储类型 119

5.5 局部变量和外部变量 120

5.5.1 局部变量 121

5.5.2 静态局部变量 122

5.5.3 外部变量 123

5.6 函数的递归调用 124

5.6.1 递归的基本思想 124

5.6.2 最大公约数 125

5.6.3 最近共同祖先 125

习题 127

第6章 数组 129

6.1 一维数组 130

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

6.1.2 一维数组初始化 131

6.1.3 数组元素的查找 134

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

6.1.5 比较交换排序 136

6.2 数组作为函数参数 138

6.3 一维数组应用举例 141

6.3.1 最佳校友奖 141

6.3.2 字母使用频率统计 143

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

6.3.4 二分搜索 147

6.4 二维数组 148

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

6.4.2 二维数组的初始化 148

6.5 二维数组应用举例 149

6.5.1 各门课的平均分 149

6.5.2 随机矩阵的最大值 151

6.5.3 日期计算 153

习题 154

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

7.1 字符型数据 158

7.1.1 字符型数据的存储 158

7.1.2 转义序列 159

7.1.3 字符数据的输入问题 160

7.1.4 处理字符的函数 161

7.2 字符数组与字符串 162

7.2.1 统计空格 163

7.2.2 字符数组的初始化 163

7.2.3 字符串的输入/输出 164

7.3 常用字符串函数 165

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

7.3.2 stdlih.h中的字符串转换函数 167

7.3.3 stdio.h中的字符串函数 168

7.4 字符串应用举例 169

7.4.1 统计单词个数 169

7.4.2 多个二进制数排序 171

7.4.3 最大值(多种进制) 172

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

7.5 字符串数组 174

习题 175

第8章 指针 177

8.1 什么是指针 178

8.1.1 计算机内存的使用 178

8.1.2 指针的概念 179

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

8.2.1 指针变量的声明 180

8.2.2 指针变量的初始化 180

8.2.3 指针和数据类型 181

8.3 指针的基本运算 182

8.4 指针作为函数的参数 183

8.5 指针与const限定符 187

8.6 一维数组与指针 190

8.6.1 指针的算术运算和关系运算 190

8.6.2 指针和数组的关系 193

8.6.3 数组作函数参数的本质 195

8.7 返回值为指针的函数 197

8.8 指针与字符串 198

8.8.1 字符串常量 198

8.8.2 使用指针处理字符串 199

8.8.3 字符数组与字符指针 203

8.9 用指针实现内存动态分配 205

8.9.1 使用malloc()函数为数组分配内存 205

8.9.2 释放动态分配的内存 206

8.9.3 其他动态内存分配函数 206

习题 207

第9章 结构 211

9.1 结构定义 212

9.1.1 使用结构的原因 212

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

9.1.3 使用typedef定义数据类型 215

9.1.4 初始化结构体变量 215

9.1.5 将一个结构作为另一个结构的成员 216

9.1.6 访问结构成员 217

9.2 结构数组与指针 219

9.2.1 结构数组 220

9.2.2 结构指针 222

9.2.3 用指针访问结构数组 223

9.3 结构与函数 224

9.3.1 结构作为函数的参数 225

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

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

9.4 单链表 227

9.4.1 单链表类型定义 228

9.4.2 单链表的操作 228

9.5 联合与枚举 233

9.5.1 联合 233

9.5.2 联合指针 234

9.5.3 联合的初始化 235

9.5.4 联合与结构 235

9.5.5 枚举 236

习题 237

第10章 指针进阶 239

10.1 指针与二维数组 240

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

10.1.2 指向数组的指针 240

10.1.3 二维数组名 242

10.2 指针数组 244

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

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

10.3 带参数的main()函数 249

10.4 指向函数的指针 251

习题 256

第11章 C预处理 257

11.1 预处理器的工作原理 258

11.2 预处理指令 259

11.3 #define预处理指令 259

11.3.1 符号常量 260

11.3.2 带参数的宏 260

11.4 文件包含 263

11.4.1 多文件程序 263

11.4.2 include指令 263

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

11.5 条件编译 265

习题 267

第12章 文件 269

12.1 文件概述 270

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

12.1.2 C文件的分类 271

12.1.3 缓冲文件系统 271

12.1.4 文件指针 272

12.2 文件的打开和关闭 273

12.2.1 文件打开函数fopen() 273

12.2.2 文件关闭函数fclose() 275

12.2.3 输入/输出重定向函数freopen() 275

12.3 文件的读/写操作 276

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

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

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

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

12.4 文件的其他操作 281

12.4.1 文件定位函数 281

12.4.2 文件检测 282

12.5 文件应用实例 283

习题 294

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

13.1 模拟 296

13.1.1 校门外的树 296

13.1.2 约瑟夫问题 297

13.2 随机化算法 301

13.2.1 计算圆周率近似值 301

13.2.2 洗牌发牌模拟 303

13.3 空间换时间 306

13.3.1 筛选法求素数 307

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

13.3.3 分解素因数 310

13.4 递归 313

13.4.1 计算实数的整数幂 314

13.4.2 计算连通区域面积 315

13.5 贪心算法 317

13.5.1 活动安排问题 317

13.5.2 部分背包问题 319

13.6 动态规划算法 321

13.6.1 游戏币问题 321

13.6.2 最长单调序列 323

习题 324

附录 329

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

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

附录C 运算符和结合性 332

附录D C库函数 333

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

参考文献 339