《程序设计基础教程 C语言描述》PDF下载

  • 购买积分:12 如何计算积分?
  • 作  者:丁海军,金永霞,景雪莲等编著
  • 出 版 社:北京:清华大学出版社
  • 出版年份:2013
  • ISBN:9787302331483
  • 页数:327 页
图书介绍:本书以C语言作为程序设计语言,介绍程序设计的概念和一些重要的程序设计算法。教材体系编排新颖,内容丰富。通过将重要的C语言语法集中介绍,读者对C语言可以快速入门。教材对重要的C语言语法进行重点介绍,忽略掉那些对初学者不太重要的语言特性。教材介绍了大量的基础算法,例题丰富,具有趣味性。本书可以作为理工科大学生程序设计或者C语言课程教材,也可作为大学生程序设计竞赛的基础训练教程。

第1章 计算机工作的基本原理 1

1.1计算的基本概念 1

1.1.1什么是计算 1

1.1.2什么是可计算性 1

1.2数制系统 2

1.2.1数的进位制 2

1.2.2不同进制数字转换 4

1.3整数的二进制原码、反码和补码 7

1.3.1原码 8

1.3.2反码 8

1.3.3补码 8

1.3.4利用补码作加、减法运算 9

1.4浮点数的编码 10

1.5计算机工作原理 10

1.5.1内存储器 11

1.5.2运算器 12

1.5.3控制器 12

1.5.4指令系统 12

1.5.5一个简单的模型计算机 14

习题 15

第2章C语言程序设计基础 16

2.1C语言程序概述 16

2.1.1 C语言程序入门例子 16

2.1.2 C语言程序组成特点 18

2.2标识符与关键字 19

2.2.1标识符命名规则 19

2.2.2关键字 20

2.3数据类型 20

2.3.1基本数据类型 21

2.3.2数据类型修饰符(*) 22

2.4常量 23

2.4.1字面常量 23

2.4.2符号常量 23

2.5变量 24

2.5.1变量定义语句 24

2.5.2变量定义语句的工作过程(*) 24

2.6简单输入输出 25

2.6.1简单输出函数 25

2.6.2简单输入函数 27

2.7运算符和表达式 28

2.7.1赋值运算符 28

2.7.2算术运算符 30

2.7.3增量运算符 31

2.7.4关系运算符 32

2.7.5逻辑运算符 33

2.7.6复合赋值运算符 34

2.7.7表达式的数据类型及类型转换 35

2.7.8表达式求值过程(*) 36

2.7.9逗号表达式(*) 37

2.8格式化输入输出函数高级用法(*) 38

2.8.1格式化输出 38

2.8.2格式化输入 40

2.9关于数据类型的高级问题(*) 41

2.9.1类型长度运算符 41

2.9.2类型重定义 42

习题 42

第3章 程序基本结构 45

3.1程序语句 45

3.1.1语句概述 45

3.1.2结构化程序设计 46

3.2顺序结构 47

3.3选择结构 48

3.3.1选择结构的基本语法格式 48

3.3.2选择结构举例 50

3.3.3选择结构的嵌套 51

3.3.4条件运算符 54

3.3.5多分支选择结构 55

3.3.6浮点数的相等性比较 60

3.4循环结构 60

3.4.1 for循环结构 61

3.4.2 while循环结构 62

3.4.3 do.while循环结构 63

3.4.4循环辅助语句 63

3.4.5三种基本循环结构的比较 64

3.4.6循环嵌套 67

3.4.7 goto语句(*) 69

3.5函数的定义与使用 69

3.5.1函数定义 71

3.5.2函数调用 72

3.5.3形式参数与实际参数 72

3.5.4函数原型说明 73

3.5.5函数应用举例 74

3.6数据存储特性(*) 77

3.6.1变量作用域 77

3.6.2静态变量 79

3.6.3变量的生存期 80

3.7预处理指令 82

3.7.1文件包含指令 82

3.7.2宏定义指令 82

3.8综合编程实例 84

习题 89

第4章 程序设计基本方法 96

4.1算法与程序设计方法学 96

4.1.1算法的概念 96

4.1.2算法设计原则 99

4.1.3几种基本的算法设计方法和策略 100

4.1.4编程解决问题的一般步骤 100

4.2穷举法程序设计 100

4.3穷举法求解逻辑推理问题 103

4.4整数相关算法 107

4.4.1素数 107

4.4.2最大公约数和最小公倍数 109

4.4.3歌德巴赫猜想(*) 111

4.4.4穷举法求解整数相关问题实例 112

4.5递推与迭代算法Ⅰ 116

4.5.1斐波那契级数 117

4.5.2整数拆分 118

4.5.3非线性方程求根 119

习题 122

第5章 数组 125

5.1一维数组 125

5.1.1定义格式 125

5.1.2一维数组的使用 127

5.2二维及多维数组 130

5.2.1定义格式 130

5.2.2二维数组初始化 130

5.2.3二维数组的使用 131

5.3数组与函数 134

5.3.1数组元素作函数参数 134

5.3.2一维数组名作为函数参数 135

5.3.3多维数组作函数参数 140

5.4程序阅读与理解 142

5.5排序算法程序设计 145

5.5.1插入排序 145

5.5.2选择排序 148

5.5.3冒泡排序 150

5.6查找算法程序设计 151

5.6.1顺序查找算法 151

5.6.2二分查找算法 152

5.7集合运算程序设计 154

5.7.1集合的表示 154

5.7.2求两个集合的并集算法 154

5.7.3求两个集合的交集算法 157

5.8矩阵程序设计 158

5.8.1矩阵乘法 158

5.8.2矩阵鞍点 158

5.8.3螺旋矩阵 161

5.8.4魔方矩阵 164

5.9递推与迭代算法Ⅱ 166

5.9.1沙漠储油点 166

5.9.2约瑟夫环 168

习题 170

第6章 指针 178

6.1指针的概念 178

6.1.1指针和内存地址 178

6.1.2指针变量的定义 179

6.1.3变量地址与间接寻址 180

6.2指针的运算 182

6.2.1指针赋值运算 182

6.2.2指针加、减运算 183

6.2.3指针比较运算 185

6.3指针与数组的关系 185

6.3.1指针与一维数组 185

6.3.2指针与多维数组(*) 187

6.3.3指针数组 191

6.4多级指针 192

6.4.1多级指针概念 192

6.4.2多级指针的间接访问 193

6.5动态存储分配 194

6.5.1 malloc函数与free函数 195

6.5.2动态内存分配实现可变长一维数组 195

6.5.3动态内存分配实现可变长二维数组 197

6.6指针作为函数参数 200

6.6.1函数传值调用 200

6.6.2函数传地址调用 201

6.7函数返回值为指针 205

6.8指向函数的指针 207

6.8.1问题的提出 207

6.8.2指向函数的指针 208

6.9 void型指针(*) 211

6.9.1 void指针概念 211

6.9.2用void指针实现通用排序程序 212

习题 215

第7章 字符串 218

7.1字符数据 218

7.1.1字符常量 218

7.1.2转义字符 218

7.1.3字符型变量 219

7.2字符串 219

7.2.1字符串概念及字符串常量 219

7.2.2字符串的存储 220

7.2.3字符串的结束标志 220

7.2.4字符串的表示 220

7.3字符串数组 224

7.3.1字符型二维数组表示字符串数组 224

7.3.2字符型指针数组表示字符串数组 225

7.4字符串的输入和输出 226

7.4.1字符串输入 226

7.4.2字符串输出 227

7.5处理字符串的基本库函数 228

7.5.1求字符串长度 228

7.5.2字符串拷贝 230

7.5.3字符串比较 230

7.5.4字符串连接 231

7.5.5从字符串中查找字符 232

7.5.6在字符串中查找子串 232

7.5.7整数与字符串互相转换 233

7.6字符串基本运算的编程实现 233

7.7应用举例 236

7.7.1字符串插入 236

7.7.2字符串逆置 238

7.7.3数制转换 239

7.7.4单词分离 241

7.8大整数的数学运算(*) 243

7.8.1大整数的表示 243

7.8.2大整数的算术运算 244

7.8.3大整数应用 249

习题 250

第8章 文件系统 253

8.1文件系统的使用方式 254

8.2文件打开和关闭 255

8.2.1文件打开 255

8.2.2文件关闭 256

8.2.3使用文件的一般模式 256

8.3文件读写 256

8.3.1字符读写函数 257

8.3.2字符串读写函数 258

8.3.3二进制读写函数 258

8.3.4格式化读写函数fscanf和fprintf 259

8.4标准流 261

8.5文件定位操作 261

8.6命令行参数 262

习题 264

第9章 结构体、链表 266

9.1结构体 266

9.1.1问题提出 266

9.1.2结构体类型声明及变量定义 266

9.2结构体变量的使用 270

9.2.1结构体作为整体使用 270

9.2.2使用结构体成员 270

9.3结构体与函数 273

9.4联合体 274

9.4.1联合体类型声明、变量定义及成员引用 274

9.4.2联合体变量的特点 275

9.5枚举类型 276

9.6链表 277

9.6.1链表概念 278

9.6.2链表的基本运算 280

9.6.3单链表的插入排序 285

9.6.4链表的逆置(*) 289

9.6.5其他类型链表(*) 290

习题 291

第10章 位处理 293

10.1整数的计算机表示 293

10.2位运算符 294

10.2.1位逻辑运算 294

10.2.2移位运算 296

10.2.3位运算赋值运算符 296

10.3位域 297

10.3.1位域的定义 298

10.3.2位域的使用 299

10.4位运算的应用(*) 299

10.4.1利用位运算实现整数值交换 299

10.4.2二进制GCD算法 300

10.4.3均匀二分查找 301

习题 302

第11章 函数递归调用及应用 304

11.1函数递归调用 304

11.1.1函数调用原理 304

11.1.2递归调用 305

11.2函数递归调用的应用 309

11.2.1算法设计的分治法策略(汉诺塔问题) 309

11.2.2算法设计的回溯法策略(八皇后问题) 311

习题 315

附录A ASCII码表 316

附录B C语言保留字(关键字) 318

附录C C语言运算符优先级 320

附录D C语言主要标准库函数 322

参考文献 327