目录
第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
