C语言编程从入门到精通

978-7-115-65129-7
作者: 王长青
译者:
编辑: 张涛
分类: C语言

图书目录:

目录

第 1 章 C 语言开发基础 1

1.1 C 语言介绍 1

1.1.1 C 语言的发展历程 1

1.1.2 C 语言的优点 2

1.2 搭建开发环境 2

1.2.1 安装轻量级开发工具Dev-C++ 2

1.2.2 安装 Visual Studio 3

1.3 分析 C 语言程序的结构 4

1.3.1 认识 C 语言程序 5

1.3.2 分析 C 语言程序的具体组成 5

1.3.3 使用 Visual Studio 开发 C 语言程序 6

1.3.4 使用 Dev-C++运行 C 语言程序 8

1.4 技术解惑 8

1.4.1 学习 C 语言有用吗 8

1.4.2 怎样学好 C 语言 9

1.5 常见面试题解析 9

1.6 课后练习 9

第 2 章 C 语言基础语法 10

2.1 标识符和关键字 10

2.2 数据类型 11

2.3 常量和变量 11

2.3.1 常量 12

2.3.2 变量 12

2.4 整型数据 14

2.4.1 整型常量 14

2.4.2 整型变量 16

2.5 实型数据 18

2.5.1 实型常量 18

2.5.2 实型变量 18

2.5.3 实型常量的类型 20

2.6 字符型数据 20

2.6.1 字符常量 20

2.6.2 字符串常量 22

2.6.3 字符变量 22

2.7 整型、实型和字符型数据间的转换 24

2.7.1 自动转换 24

2.7.2 强制转换 25

2.8 技术解惑 25

2.8.1 无符号整型变量和有符号整型变量的定义 25

2.8.2 字符变量的含义 26

2.8.3 如何理解字符型数据的取值范围 26

2.8.4 怎样将带小数点的字符型数据转换成浮点型数据 26

2.8.5 变量的深入分析 27

2.9 常见面试题解析 27

2.10 课后练习 28

第 3 章 运算符和表达式 29

3.1 运算符的种类 29

3.2 算术运算符和算术表达式 30

3.2.1 单目运算符 30

3.2.2 双目运算符 31

3.3 赋值运算符和赋值表达式 31

3.3.1 基本赋值运算符 32

3.3.2 复合赋值运算符 32

3.3.3 赋值表达式 33

3.4 关系运算符和关系表达式 34

3.4.1 关系运算符 34

3.4.2 关系表达式 34

3.5 逻辑运算符和逻辑表达式 35

3.5.1 逻辑运算符 35

3.5.2 逻辑表达式 35

3.6 逗号运算符和逗号表达式 37

3.6.1 逗号运算符 37

3.6.2 逗号表达式 37

3.7 求字节数的运算符 38

3.8 运算符的优先级 39

3.9 技术解惑 39

3.9.1 少数运算符在规定表达式中的求值顺序 39

3.9.2 在 C 语言中是否可以进行混合运算 40

3.9.3 在一个逻辑条件语句中常数项永远在左侧 40

3.9.4 赋值处理的自动类型转换 40

3.10 常见面试题解析 41

3.11 课后练习 42

第 4 章 输入和输出 43

4.1 初步认识 C 语句 43

4.1.1 C 语句简介 43

4.1.2 赋值语句 44

4.2 数据的输入和输出 45

4.2.1 putchar 函数 45

4.2.2 getchar 函数 46

4.2.3 printf 函数 47

4.2.4 scanf 函数 50

4.2.5 puts 函数 53

4.2.6 C11 标准函数 gets_s 54

4.3 技术解惑 54

4.3.1 scanf 函数和gets_s 函数的区别 54

4.3.2 C 语言的输入和输出问题 55

4.4 常见面试题解析 55

4.5 课后练习 56

第 5 章 流程控制 57

5.1 顺序结构 57

5.2 选择结构 58

5.2.1 单分支结构 58

5.2.2 双分支结构 59

5.2.3 多分支结构 61

5.2.4 条件运算符和条件表达式 63

5.3 循环结构 64

5.3.1 for 语句 64

5.3.2 while 语句 65

5.3.3 do while 语句 ..................... 67

5.3.4 goto 语句 67

5.3.5 break 语句和 continue语句 68

5.3.6 死循环/退出程序 69

5.4 技术解惑 70

5.5 常见面试题解析 71

5.6 课后练习 72

第 6 章 数组和字符串 73

6.1 一维数组 73

6.1.1 定义一维数组 73

6.1.2 引用一维数组的元素 73

6.1.3 初始化一维数组 74

6.2 多维数组 75

6.2.1 二维数组的用法 75

6.2.2 多维数组的用法 78

6.3 字符数组与字符串 80

6.3.1 字符数组 80

6.3.2 字符串与字符数组 80

6.3.3 字符数组的输入和输出 81

6.4 字符串处理函数 83

6.4.1 返回字符串长度的函数 83

6.4.2 字符串大小写转换函数 83

6.4.3 字符串复制函数 84

6.4.4 字符串比较函数 85

6.4.5 字符串连接函数 86

6.4.6 将字符串转换成数值的函数 87

6.5 字符处理函数 88

6.5.1 字符检测函数 88

6.5.2 字符大小写转换函数 89

6.6 技术解惑 90

6.6.1 C 语言对数组的处理非常有效吗 90

6.6.2 初始化一维数组的注意事项 90

6.7 常见面试题解析 91

6.8 课后练习 92

第 7 章 函数 93

7.1 函数的基础知识 93

7.1.1 函数的分类 93

7.1.2 函数的定义 94

7.2 函数声明和函数原型 95

7.2.1 函数声明 96

7.2.2 函数原型 96

7.3 函数的参数 96

7.3.1 形参和实参 97

7.3.2 以数组名作为函数的参数 97

7.3.3 以数组作为函数的参数 99

7.4 函数的返回值 100

7.5 函数的调用 102

7.5.1 函数调用的格式 102

7.5.2 函数调用的方式 102

7.5.3 被调函数的声明方式 103

7.6 函数的嵌套调用和递归调用 104

7.6.1 函数的嵌套调用 104

7.6.2 函数的递归调用 106

7.7 变量的作用域和存储类型 108

7.7.1 变量的作用域 108

7.7.2 变量的存储类型 111

7.8 内部函数和外部函数 114

7.8.1 内部函数 114

7.8.2 外部函数 115

7.9 库函数 116

7.10 技术解惑 117

7.10.1 确保函数的声明和定义是静态的 117

7.10.2 说明函数的时机 117

7.10.3 如果一个函数没有返回值,是否需要加上 return 语句 118

7.10.4 exit 函数和return语句的差异 118

7.11 常见面试题解析 118

7.12 课后练习 119

第 8 章 指针 121

8.1 基本概念 121

8.2 变量的指针和指向变量的指针变量 122

8.2.1 声明指针变量 122

8.2.2 指针变量的初始化 122

8.2.3 指针变量的引用 123

8.2.4 关于指针运算符的说明 124

8.2.5 指针变量的运算 125

8.2.6 以指针变量作为函数参数 126

8.2.7 void 类型的指针 128

8.3 指针和数组 129

8.3.1 数组元素的指针 130

8.3.2 指向一维数组元素的指针变量 131

8.3.3 通过指针引用数组元素 131

8.3.4 以数组名作为函数参数 134

8.4 指针和多维数组 136

8.4.1 多维数组的地址 136

8.4.2 指向多维数组的指针变量 138

8.5 指针和字符串 140

8.5.1 用指针访问字符串 140

8.5.2 以字符串指针作为函数参数 141

8.5.3 字符指针变量与字符数组的区别 142

8.6 指针数组和多级指针 143

8.6.1 指针数组 143

8.6.2 多级指针的定义和应用 144

8.6.3 指向指针的指针变量 146

8.6.4 main 函数的参数 146

8.7 指针函数和函数指针 147

8.7.1 指针函数 147

8.7.2 函数指针 147

8.8 技术解惑 150

8.8.1 初始化指针时的注意事项 150

8.8.2 为指针赋值时的注意事项 151

8.8.3 当指针用于数组时的注意事项 151

8.8.4 使用指针时的常见错误 152

8.9 常见面试题解析 152

8.10 课后练习 154

第 9 章 结构体、共用体和枚举 155

9.1 结构体 155

9.1.1 定义结构体 155

9.1.2 定义结构体变量 156

9.1.3 引用结构体变量 157

9.1.4 初始化结构体变量 158

9.2 结构体数组 159

9.2.1 定义结构体数组 160

9.2.2 初始化结构体数组 161

9.2.3 引用结构体数组 162

9.3 结构体指针变量 163

9.3.1 定义结构体指针变量 163

9.3.2 初始化结构体指针变量 164

9.3.3 引用结构体指针变量 164

9.3.4 指向结构体变量的指针 165

9.3.5 指向结构体数组的指针变量 166

9.4 在函数中使用结构体 166

9.4.1 将结构体变量的值传递给另一个函数 166

9.4.2 函数返回结构体类型的值 167

9.5 共用体 168

9.5.1 定义共用体和共用体变量 169

9.5.2 引用共用体变量 169

9.6 枚举 171

9.6.1 定义枚举类型 171

9.6.2 定义枚举变量 172

9.6.3 引用枚举变量 172

9.7 使用 typedef 定义类型 173

9.7.1 类型定义符typedef的基础知识 173

9.7.2 使用 typedef 175

9.8 技术解惑 175

9.8.1 可以省略结构名吗 175

9.8.2 是否可以定义一种通用数据类型以存储任意类型的数据 175

9.8.3 结构体和共用体的区别 176

9.8.4 定义结构体的问题 177

9.9 常见面试题解析 177

9.10 课后练习 178

第 10 章 链表 179

10.1 动态内存分配 179

10.1.1 动态内存分配的作用 179

10.1.2 实现动态内存分配及管理的方法 179

10.2 使用链表 182

10.2.1 链表简介 182

10.2.2 单向链表 184

10.2.3 创建链表 186

10.2.4 删除链表 186

10.2.5 在链表中插入节点 186

10.2.6 在链表中删除节点 187

10.2.7 双向链表 188

10.2.8 循环链表 188

10.3 技术解惑 188

10.4 常见面试题解析 189

10.5 课后练习 190

第 11 章 位运算 191

11.1 位运算符和位运算 191

11.1.1 按位与运算符 191

11.1.2 按位或运算符 192

11.1.3 按位异或运算符 193

11.1.4 取反运算符 193

11.1.5 左移运算符 194

11.1.6 右移运算符 194

11.1.7 位运算的应用实例 194

11.2 位域 196

11.2.1 位域的定义和位域变量的说明 196

11.2.2 位域的使用 197

11.3 技术解惑 197

11.3.1 从某个数中取出指定的某些位 197

11.3.2 位域的内存对齐原则 198

11.4 常见面试题解析 198

11.5 课后练习 199

第 12 章 预处理 200

12.1 预处理基础 200

12.2 宏定义 200

12.2.1 不带参数的宏定义 200

12.2.2 带参数的宏定义 202

12.2.3 字符串化运算符 204

12.2.4 并接运算符 205

12.3 文件包含 205

12.4 条件编译 207

12.4.1 #ifdef #else…#endif命令 207

12.4.2 #if defined #else …#endif 命令 208

12.4.3 #ifndef #else…#endif命令 208

12.4.4 #if !defined #else …#endif 命令 208

12.4.5 #ifdef #elif…#elif …#else #endif 命令........ 208

12.5 技术解惑 210

12.5.1 其他预编译指令 210

12.5.2 带参宏和函数的不同 211

12.5.3 预处理的本质 211

12.5.4 多行预处理指令的写法 211

12.6 常见面试题解析 211

12.7 课后练习 212

第 13 章 文件操作 213

13.1 文件基础 213

13.1.1 文件介绍 213

13.1.2 文本文件 213

13.1.3 文件指针 214

13.2 文件的打开与关闭 214

13.2.1 打开文件 214

13.2.2 关闭文件 216

13.3 文件读写函数 217

13.3.1 字符读写函数 218

13.3.2 字符串读写函数 219

13.3.3 格式化读写函数 221

13.3.4 数据块读写函数 222

13.3.5 其他读写函数 223

13.4 文件的随机读写 224

13.4.1 fseek 函数 225

13.4.2 rewind 函数 226

13.4.3 ftell 函数 226

13.5 文件管理函数 227

13.5.1 删除文件 227

13.5.2 重命名文件 228

13.5.3 复制文件 228

13.6 文件读写状态检测函数 230

13.6.1 feof 函数 230

13.6.2 ferror 函数 230

13.6.3 clearerr 函数 230

13.7 Win32 API 中的文件操作函数 231

13.7.1 创建和打开文件 231

13.7.2 读取、写入和删除文件 232

13.8 技术解惑 233

13.8.1 文件指针是文件内部的位置指针吗 233

13.8.2 fseek 函数的换行问题 233

13.8.3 gets 函数的溢出问题 233

13.8.4 feof 函数会多读一个数据吗 233

13.9 常见面试题解析 234

13.10 课后练习 235

第 14 章 错误处理和程序调试 236

14.1 常见错误分析 236

14.1.1 语法错误 236

14.1.2 逻辑错误(语义错误) 237

14.1.3 内存错误 240

14.2 错误的检出与分离 245

14.3 调试时的注意事项 246

14.3.1 上机前要先熟悉程序的运行环境 246

14.3.2 在编程时要为调试做好准备 246

14.4 技术解惑 247

14.5 常见面试题解析 248

14.6 课后练习 248

第 15 章 内存管理 249

15.1 C 语言中的内存模型 249

15.2 栈和堆 250

15.2.1 栈操作 250

15.2.2 堆操作 250

15.3 动态管理 251

15.3.1 使用函数 malloc 动态分配内存空间 251

15.3.2 使用函数 calloc 分配内存空间并初始化 252

15.3.3 使用函数realloc重新分配内存空间 253

15.3.4 使用函数 free 释放内存空间 254

15.4 常见面试题解析 255

15.5 课后练习 256

第 16 章 学生成绩管理系统 257

16.1 系统总体描述 257

16.1.1 项目开发的目标 257

16.1.2 项目的意义 257

16.1.3 系统功能描述 257

16.2 系统总体设计 258

16.2.1 功能模块设计 258

16.2.2 数据结构设计 260

16.2.3 构成函数介绍 260

16.3 系统的具体实现 262

16.3.1 预处理 262

16.3.2 主函数 262

16.3.3 系统主菜单函数 263

16.3.4 表格显示记录 264

16.3.5 记录查找定位 264

16.3.6 格式化输入数据 265

16.3.7 增加学生记录 265

16.3.8 查询学生记录 266

16.3.9 删除学生记录 267

16.3.10 修改学生记录 268

16.3.11 插入学生记录 269

16.3.12 统计学生记录 270

16.3.13 排序处理 270

16.3.14 存储学生记录 271

第 17 章 人工智能和 AIGC 自动化编程 274

17.1 人工智能介绍 274

17.1.1 人工智能的方向和技术 274

17.1.2 人工智能在生活中的作用 275

17.2 自动化编程和 AIGC 275

17.2.1 自动化编程介绍 275

17.2.2 AIGC 介绍 276

17.2.3 AIGC 和自动化编程的关系 276

17.2.4 常用的 AIGC 自动化编程工具 277

17.3 ChatGPT 278

17.3.1 ChatGPT 的主要特点 278

17.3.2 ChatGPT 在编程方面的功能 278

17.4 Kimi 279

17.4.1 Kimi 的主要特点 279

17.4.2 Kimi 在编程方面的功能 279

第 18 章 AIGC 自动化编程实战 280

18.1 随身学习助手 280

18.1.1 基于 ChatGPT 的学习助手 280

18.1.2 基于 Kimi 的学习助手 281

18.2 代码摘要和解释 282

18.2.1 基于 ChatGPT 的代码摘要和解释 282

18.2.2 基于 Kimi 的代码摘要和解释 282

18.3 代码生成并添加注释 283

18.3.1 基于 ChatGPT 的代码生成和注释 283

18.3.2 基于 Kimi 的代码生成和注释 284

18.4 代码补全 285

18.4.1 基于 ChatGPT 的代码补全 285

18.4.2 基于 Kimi 的代码补全 286

18.5 代码重构和优化 287

18.5.1 基于 ChatGPT 的代码重构和优化 288

18.5.2 基于 Kimi 的代码重构和优化 288

18.6 代码纠错 289

18.6.1 基于 ChatGPT 的代码纠错 290

18.6.2 基于 Kimi 的代码纠错 291

19.1 基于 ChatGPT 实现的背景介绍 292

19.2 基于 Kimi 的需求分析 293

19.3 一个简易版的俄罗斯方块游戏 294

19.4 方块设置和控制 297

19.4.1 设置方块形状 298

19.4.2 方块控制 298

19.5 使用 ChatGPT 增加功能 300

19.5.1 增加方块预览功能 300

19.5.2 增加计分功能 300

19.5.3 增加游戏说明 301

19.6 代码讲解 302

19.6.1 功能总结和技术栈 302

19.6.2 代码剖析 303

详情

本书全面介绍C语言的编程技术,不仅覆盖C语言的基础知识和高级应用,而且融入AI(Artificial Intelligence,人工智能)自动化编程的前沿知识。全书共19章,第1章至第6章引领读者入门C语言,从搭建开发环境、基础语法,到数据类型、运算符和表达式、输入和输出、流程控制、数组和字符串,为读者打下坚实的编程基础;第7章至第10章分别讲解函数、指针、结构体、共用体、枚举、链表等高级知识,这些知识将帮助读者掌握实战技术,用以解决实际问题;第11章至第13章深入探讨位运算、预处理、文件操作等专题,强化读者在特定领域的编程能力;第14章和第15章专注于错误处理和程序调试、内存管理,培养读者解决编程中常见问题的能力;第16章介绍学生成绩管理系统综合案例的开发过程,将理论知识应用于实践,指导读者完成一个完整的软件项目;第17章介绍人工智能和AIGC(Artificial Intelligence Generated Content,人工智能生成内容)自动化编程的前沿知识;第18章是AIGC自动化编程实战,演示使用ChatGPT和Kimi进行代码摘要和解释、代码生成并添加注释、代码补全、代码重构和优化、代码纠错的实践,让读者体验AI在编程中的强大应用;第19章以俄罗斯方块游戏为例,详细介绍如何基于ChatGPT和Kimi实现游戏开发的全过程,包括游戏设计、需求分析、代码实现、界面设计等,使读者能直观感受到AI技术在项目开发中的创新应用。 本书内容循序渐进,将传统编程与AI自动化编程相结合,不仅帮助读者扎实地掌握C语言编程技术,还能让读者紧跟技术潮流,了解并应用新的AI编程技术。本书不仅适合C语言的初学者学习,也适合有一定C语言基础的读者阅读,还可以作为高等院校相关专业的教学用书和培训学校的教材。

图书摘要

相关图书

C语言最佳实践
C语言最佳实践
代码审计——C/C++实践
代码审计——C/C++实践
大规模C++软件开发 卷1:过程与架构
大规模C++软件开发 卷1:过程与架构
C/C++代码调试的艺术(第2版)
C/C++代码调试的艺术(第2版)
C程序设计教程(第9版)
C程序设计教程(第9版)
全国计算机等级考试上机考试题库 二级C语言
全国计算机等级考试上机考试题库 二级C语言

相关文章

相关课程