图书目录

目录

第1章C语言概述1

1.1C语言简介1

1.2建立C语言程序开发环境2

1.2.1下载并安装CLion集成环境2

1.2.2配置和验证安装2

1.3C语言程序基本结构5

1.4程序运行乱码解决方法6

1.5基本输出7

1.5.1type类型控制符8

1.5.2flags标志控制符10

1.5.3width常用数据显示宽度控制11

1.5.4“.precision”数据显示精度控制11

1.5.5length控制符11

1.5.6转义符12

1.6算法及其描述13

1.6.1使用自然语言描述算法13

1.6.2使用流程图描述算法13

1.7案例: 微笑的自己15

1.8课后练习: 绘制图形并计算面积16

第2章数据类型和数据运算17

2.1数据类型17

2.2变量18

2.2.1变量定义及其本质19

2.2.2变量赋值20

2.3数据输入21

2.3.1格式说明符22

2.3.2数据输入注意事项23

2.4数据运算24

2.4.1基本算术运算25

2.4.2强制类型转换25

2.4.3自增和自减运算26

2.4.4复合运算符27

2.4.5表达式和运算符的优先级27

2.5常用数学函数28

2.6案例: 验证sin2(x)+cos2(x)等于128

2.7课后练习: 三角形面积和周长29

第3章条件控制及程序分支30

3.1单分支if语句30

3.2关系运算和逻辑运算31

3.2.1关系运算与关系运算符31

3.2.2逻辑运算与逻辑运算符32

3.3双分支if语句33

3.4多分支if语句34

3.5if语句的嵌套36

3.6条件表达式和表达式书写注意事项37

3.6.1条件表达式37

3.6.2表达式书写注意事项38

3.7switch语句39

3.8案例: 求一元二次方程的根41

3.9课后练习: 判断一个年份是否是闰年42

第4章循环结构程序设计43

4.1while循环43

4.1.1while循环入门43

4.1.2while循环详解44

4.1.3while循环使用举例44

4.2do...while循环46

4.3for循环47

4.43种循环语句的等价性49

4.4.13种循环语句等价性举例: 巴塞尔问题49

4.4.2宏常量与const关键字的使用51

4.5循环结构中的break语句和continue语句52

4.5.1break语句和continue语句使用举例52

4.5.2随机数发生器53

4.6循环的嵌套54

4.7案例: 猜数游戏55

4.8课后练习: 求最大公约数和最小公倍数57

第5章数组58

5.1一维数组58

5.1.1定义数组58

5.1.2访问数组元素58

5.1.3数组的初始化60

5.1.4sizeof关键字的使用60

5.1.5一维数组在内存中的存储方式61

5.1.6一维数组应用举例62

5.2二维数组64

5.2.1二维数组的定义和初始化64

5.2.2二维数组的访问65

5.2.3三维及高维数组的定义和访问65

5.2.4二维数组在内存中的存储方式66

5.2.5二维数组应用举例67

5.3案例: 计算学生课程成绩69

5.4课后练习: 排序二维数组71

第6章字符数组和字符串72

6.1字符类型72

6.1.1字符及其编码72

6.1.2字符类型变量73

6.1.3字符数据的输入和输出73

6.2字符数组74

6.2.1char类型数组的定义和初始化75

6.2.2字符数组的简单应用75

6.3字符串77

6.3.1字符串常量77

6.3.2字符数组和字符串78

6.3.3字符串的输入和输出79

6.4字符数组和字符串应用举例81

6.5常用字符串处理函数和字符型二维数组83

6.5.1常用的字符串处理函数83

6.5.2字符类型二维数组84

6.5.3字符串函数及字符二维数组的应用举例84

6.6案例:  电子字典87

6.7课后练习:  逆转字符矩阵89

第7章函数基础90

7.1函数的分类及其意义90

7.1.1C语言标准库函数90

7.1.2自定义函数91

7.1.3函数是程序模块化和分工协作的基础92

7.2定义函数92

7.2.1一个简单的自定义函数92

7.2.2定义函数的一般形式93

7.2.3定义函数举例93

7.3调用函数95

7.3.1调用自定义函数举例95

7.3.2函数调用的一般形式及其应用96

7.3.3函数的形参和实参97

7.3.4函数声明100

7.3.5文件包含#include预处理命令的本质102

7.4函数的嵌套调用和递归调用103

7.4.1函数的嵌套调用103

7.4.2函数的递归调用104

7.5数组作为函数参数105

7.5.1数组元素作为函数参数105

7.5.2数组名作为函数参数107

7.5.3二维数组名作为函数参数110

7.6案例: 检查回文数字114

7.7课后练习: 求斐波那契数列任一项的值116

第8章函数进阶117

8.1变量的作用域和变量的存储类型117

8.1.1变量的作用域117

8.1.2变量的存储类型121

8.2C语言预处理命令123

8.2.1#define预处理命令123

8.2.2#undef预处理命令125

8.2.3#ifndef...#endif预处理命令125

8.3程序工程管理和extern关键字及其使用126

8.3.1程序工程管理126

8.3.2extern关键字及其使用127

8.4程序调试129

8.5案例: 图书信息管理系统132

8.6课后练习: 学生信息管理系统136

第9章指针基础137

9.1存储器和存储器地址137

9.2指针变量入门138

9.2.1定义指针变量138

9.2.2取地址运算符&及其使用139

9.2.3取内容运算符及其使用139

9.2.4指针的形象理解140

9.3指针与一维数组141

9.3.1指针与一维数组基础141

9.3.2使用指针操作一维数组举例143

9.4指针与二维数组146

9.4.1指针与二维数组基础146

9.4.2二维数组地址的等价性148

9.5指针与字符数组和字符串150

9.5.1指向字符变量的指针150

9.5.2指向字符数组元素的指针150

9.5.3指向字符串常量的指针151

9.6案例: 二维数组排序153

9.7课后练习: 字符串逆转154

第10章指针进阶155

10.1指针数组和二级指针155

10.1.1指针数组155

10.1.2二级指针158

10.2指针与函数160

10.2.1指针作为函数参数160

10.2.2指针作为函数返回值及nullptr空指针的使用165

10.2.3函数指针变量及其应用167

10.3动态内存分配169

10.3.1动态内存分配入门169

10.3.2动态内存申请及释放库函数171

10.3.3动态内存申请应用举例172

10.4带参数的main()函数173

10.4.1在命令行终端执行程序173

10.4.2带参数的main()函数的参数含义及其使用174

10.4.3生成没有调试信息的可执行文件并交付用户使用176

10.5指针使用中常见错误177

10.5.1错误一:  使用未初始化的指针178

10.5.2错误二:  返回局部变量的地址作为指针179

10.5.3错误三:  没有释放动态申请的内存空间180

10.6案例: 自制运算器180

10.7课后练习: 小字符串连接成大字符串183

第11章结构体184

11.1结构体入门184

11.2结构体类型定义和使用详解186

11.2.1结构体类型定义186

11.2.2定义和使用结构体变量187

11.2.3结构体类型的嵌套及其使用188

11.3结构体与数组189

11.4结构体与指针190

11.4.1结构体指针的基本使用190

11.4.2结构体与动态内存分配191

11.5结构体与函数193

11.5.1结构体作为函数参数193

11.5.2结构体作为函数的返回值194

11.6联合体union195

11.7枚举类型198

11.8使用typedef自定义类型名称200

11.9案例: 基于链表的图书信息管理系统202

11.10课后练习: 完善图书信息管理系统210

第12章文件操作211

12.1文件操作概述211

12.2文件读/写入门212

12.2.1将数据写入文件中212

12.2.2从文件中读取数据213

12.3文件读/写的一般过程及其关键函数214

12.3.1打开文件:  fopen()214

12.3.2写数据到文件中:  fwrite()、fprintf()、fputs()、fputc()216

12.3.3从文件中读取数据:  fread()、fscanf()、fgets()、fgetc()217

12.3.4关闭文件:  fclose()219

12.3.5文件操作错误码及其处理方式219

12.4以文本模式或二进制模式打开文件220

12.4.1以二进制(十六进制)模式观察文件的原始内容220

12.4.2以文本模式或二进制打开文件的总结222

12.5文件读/写位置定位224

12.5.1移动读/写位置指针到文件开始处:  rewind()224

12.5.2设定读/写位置指针到指定位置:  fseek()225

12.5.3获取读/写位置指针的当前位置:  ftell()228

12.6读/写结构化数据229

12.6.1读/写单个结构化数据229

12.6.2读/写结构体数组数据230

12.7案例: 保存图书信息到文件232

12.8课后练习: 个人财务管理系统239

第13章位操作和地址空间对齐241

13.1位操作241

13.1.1位逻辑运算241

13.1.2移位运算242

13.1.3位操作应用举例242

13.2位段246

13.2.1定义和访问位段246

13.2.2位段使用举例247

13.2.3定义位段注意事项248

13.3地址空间对齐248

13.3.1地址空间对齐的基本概念249

13.3.2修改地址空间对齐方式250

13.3.3地址空间对齐应用251

13.4案例: 基于位段的数制转换252

13.5课后练习: 绚丽跑马灯254

第14章AI辅助编程255

14.1AI辅助编程初探255

14.2使用AI辅助编程插件258

14.2.1安装AI辅助编程插件259

14.2.2AI辅助编程功能介绍260

14.3正确使用AI辅助编程261

参考文献262