图书目录

目 录 

第1章C语言概述1

1.1计算机编程语言与国家信息化战略1

1.2旅行到计算边缘: 从高级语言到晶体管2

1.3计算机编程语言概述3

1.3.1多视角解析: 什么是编程3

1.3.2创世纪: 机器指令与机器语言5

1.3.3第一次符号化: 汇编语言5

1.3.4面向用户: 更加友好的高级语言6

1.3.5变成机器码的两种方式: 编译与解释7

1.4C语言的过去、现在和未来8

1.4.1C语言的产生背景8

1.4.2C语言的发展8

1.4.3C语言的应用场景9

1.5C语言的特点与语法构成9

1.5.1C语言的特点9

1.5.2语法的构成要素10

1.5.3C语言的结构11

1.5.4走进一个完整的C语言程序11

1.6C语言的学习方法12

1.6.1语法学习: 规则的重要性13

1.6.2算法学习13

1.6.3代码的跟踪与调试14

1.7编程规范: 高颜值C语言程序15

1.8IDE的使用16

1.9本章小结18

1.10课后习题19

1.10.1单选题19

1.10.2填空题19

1.10.3简答题19

1.10.4论述题19第2章程序设计基础知识21

2.1标识符与关键字21

2.1.1追根溯源: 变量在计算机内部到底是什么22

2.1.2取一个好名字: 标识符命名与华夏姓氏22

2.1.3关键字23

2.2变量与常量23

2.2.1变量24

2.2.2常量25

2.2.3注释26

2.2.4数据类型和存储方式27

2.2.5类型转换31

2.3运算符与表达式34

2.3.1一切都是运算34

2.3.2算术运算符34

2.3.3赋值运算符35

2.3.4关系运算符36

2.3.5逻辑运算符38

2.3.6位运算符41

2.3.7复合运算符43

2.3.8运算符的优先级44

2.4输入与输出46

2.4.1printf()函数46

2.4.2scanf()函数50

2.5编程规范: 优秀程序员眼中的命名法51

2.6本章小结53

2.7课后习题54

2.7.1单选题54

2.7.2程序填空题55

2.7.3编程题56

第3章控制流程58

3.1选择大于努力58

3.2案例: 猜数游戏59

3.3算法与流程59

3.3.1算法的概念60

3.3.2算法的描述60

3.3.3程序结构与流程图60

3.4选择结构62

3.4.1if语句62

3.4.2ifelse语句63

3.4.3ifelse嵌套64

3.4.4else与if匹配问题66

3.4.5switch语句68

3.4.6选择结构实例71

3.5循环结构73

3.5.1while语句74

3.5.2dowhile语句77

3.5.3for语句77

3.5.4跳转语句79

3.5.5嵌套循环85

3.5.6循环结构实例88

3.6常见错误与排错90

3.6.1C程序常见错误90

3.6.2C程序常用的排错方法92

3.7本章小结96

3.8课后习题96

3.8.1单选题96

3.8.2程序填空题99

3.8.3编程题101

第4章函数102

4.1分而治之(复用)102

4.2案例: 用函数优化猜数游戏104

4.3函数的声明和定义107

4.3.1函数的声明108

4.3.2函数的定义108

4.4函数的参数和返回值109

4.4.1形式参数和实际参数110

4.4.2函数的返回值113

4.5函数的调用116

4.5.1函数调用的基本概念119

4.5.2函数调用的类型119

4.5.3函数的递归调用120

4.6变量作用域123

4.6.1局部变量和全局变量123

4.6.2动态存储与静态存储126

4.6.3用extern声明外部变量128

4.7本章小结130

4.8课后习题130

4.8.1单选题130

4.8.2程序填空题131

4.8.3编程题133

第5章数组134

5.1数组产生的背景134

5.2人以群分、物以类聚134

5.3一维数组 136

5.3.1一维数组的声明与初始化136

5.3.2数组的元素访问与修改139

5.3.3一维数组的常见操作141

5.4二维数组 143

5.4.1二维数组的声明与初始化143

5.4.2二维数组的元素访问与修改144

5.4.3二维数组的常见操作145

5.5多维数组145

5.5.1多维数组的声明与初始化145

5.5.2多维数组的元素访问与修改147

5.5.3多维数组的常见操作149

5.6数组与函数149

5.6.1数组作为函数调用参数149

5.6.2数组作为函数返回值150

5.7一维数组的应用举例 151

5.7.1数组在排序算法中的应用151

5.7.2数组在搜索算法中的应用152

5.7.3数组在统计分析中的应用153

5.7.4数组在加密/解密中的应用154

5.8多维数组的应用155

5.8.1多维数组在图像处理中的应用155

5.8.2多维数组在矩阵运算中的应用156

5.8.3多维数组在游戏开发中的应用157

5.9数组的扩展知识158

5.9.1数组的局部性原理与缓存优化158

5.9.2数组的相关数据结构159

5.9.3数组的性能分析与优化技巧159

5.10课程思政参考案例159

5.11本章小结160

5.12课后习题161

5.12.1单选题161

5.12.2程序填空题162

5.12.3编程题165

第6章指针166

6.1指针与国家信息安全: 程序员的责任与使命166

6.2案例引入: 快速排序167

6.3指针的概念167

6.3.1地址、变量和指针168

6.3.2指针变量的定义和引用168

6.4指针与数组170

6.4.1指针与一维数组170

6.4.2指针与二维数组173

6.4.3指针数组177

6.5指向指针的指针179

6.6指针与函数180

6.6.1指针变量作为函数参数180

6.6.2函数的返回值为指针182

6.6.3指向函数的指针183

6.7内存管理184

6.7.1C语言内存区域划分184

6.7.2动态内存分配函数185

6.8案例实现: 快速排序187

6.9本章小结188

6.10课后习题189

6.10.1单选题189

6.10.2程序填空题190

6.10.3编程题192

第7章字符串193

7.1千里之堤,毁于蚁穴193

7.2案例: 恺撒密码194

7.3走进字符串196

7.3.1字符与字符串196

7.3.2用数组实现的字符串197

7.3.3字符串指针198

7.3.4字符串的输入/输出201

7.4字符串处理函数204

7.4.1计算字符串长度函数strlen()204

7.4.2字符串连接函数strcat()205

7.4.3字符串比较函数strcmp()205

7.4.4字符串复制函数strcpy()206

7.5向函数传递字符串206

7.5.1字符串指针作为函数参数206

7.5.2字符数组作为函数参数207

7.6本章小结208

7.7课后习题208

7.7.1单选题208

7.7.2程序填空题210

7.7.3编程题212

第8章结构体与共用体213

8.1课程思政: “共用体”与“人类命运共同体”的联系和区别213

8.2结构体的基础213

8.2.1结构体类型的概念213

8.2.2结构体变量的定义214

8.2.3结构体变量的引用216

8.2.4结构体变量的初始化218

8.3结构体数组218

8.3.1结构体数组的定义218

8.3.2初始化结构体数组218

8.4结构体指针219

8.4.1指向结构体变量的指针219

8.4.2指向结构体数组的指针219

8.4.3结构体作为函数参数220

8.5结构体的嵌套221

8.6共用体222

8.6.1共用体的概念222

8.6.2共用体变量的引用222

8.6.3共用体变量的初始化222

8.6.4共用体类型的数据特点223

8.7线性表的链式存储结构223

8.7.1线性表链式存储结构定义223

8.7.2线性表链式存储结构的代码描述224

8.7.3单链表的读取224

8.8综合项目: 学生成绩管理225

8.9本章小结 227

8.10课后习题227

8.10.1单选题227

8.10.2程序填空题229

8.10.3编程题231

第9章文件236

9.1文件与隐私保护236

9.2文件的概念与分类237

9.2.1文本文件与二进制文件237

9.2.2文件的存储结构239

9.3文件指针与文件操作函数239

9.3.1文件指针的定义239

9.3.2文件操作函数介绍240

9.4文件的打开与关闭241

9.4.1fopen()函数241

9.4.2fclose()函数242

9.4.3打开文件的错误异常处理242

9.5读取文本文件243

9.5.1按字符读取函数fgetc()243

9.5.2按字符串读取函数fgets()244

9.5.3按格式读取函数fscanf()245

9.6写入文本文件247

9.6.1按字符写入函数fputc()247

9.6.2按字符串写入函数fputs()248

9.6.3按格式化方式写入函数fprintf()249

9.7文本文件操作案例251

9.7.1文本文件复制251

9.7.2文本文件统计253

9.8写入二进制文件255

9.8.1fwrite()函数255

9.8.2二进制文件的顺序写入255

9.8.3二进制文件的随机写入256

9.9读取二进制文件257

9.9.1fread()函数257

9.9.2二进制文件的顺序读取258

9.9.3二进制文件的随机读取259

9.10二进制文件操作案例260

9.10.1二进制文件加密算法260

9.10.2结构体数据存取图片文件的复制263

9.11文件操作函数小结264

9.12综合应用项目264

9.12.1日志文件信息工具264

9.12.2学生信息管理系统267

9.13本章小结272

9.14课后习题273

9.14.1单选题273

9.14.2程序填空题274

9.14.3编程题276

第10章预处理278

10.1推动创新与变革的驱动力278

10.2案例引入: 通用日志库279

10.3宏定义279

10.3.1不带参数的宏定义279

10.3.2带参数的宏定义281

10.4#include指令283

10.5条件编译285

10.5.1#if命令285

10.5.2#ifdef及ifndef命令286

10.5.3#undef命令287

10.5.4#line命令288

10.5.5#pragma命令289

10.6案例实现: 通用日志库289

10.7本章小结291

10.8课后习题291

10.8.1单选题291

10.8.2填空题294

10.8.3编程题295

第11章火车订票系统296

11.1设计目的296

11.2需求分析296

11.3总体设计297

11.4详细设计与实现298

11.4.1系统架构298

11.4.2预处理和数据结构299

11.4.3主函数300

11.4.4框架模块300

11.4.5添加模块303

11.4.6查找模块304

11.4.7显示模块306

11.4.8修改模块307

11.4.9订票模块308

11.4.10退票模块310

11.4.11保存模块312

11.5本章小结314

11.6课后习题315

第12章贪吃蛇游戏开发316

12.1游戏开发背景知识316

12.2需求分析317

12.3设计思路318

12.4数据结构319

12.5代码结构与函数分工319

12.6主函数320

12.7图形渲染320

12.7.1光标位置控制320

12.7.2游戏地图320

12.7.3蛇的初始化321

12.8蛇的移动算法323

12.9碰撞检测324

12.10随机数的产生与食物325

12.11本章小结326

12.12课后习题327

12.12.1简答题327

12.12.2论述题327