理论部分 3
第1章 进制和码制 3
1.1 进制的简介 4
1.2 常用的几种数制 4
1.3 常用进制之间的转换 7
1.4 二进制算数运算 9
1.4.1 二进制算数运算的特点 9
1.4.2 原码、反码、补码 9
第2章 数据 14
2.1 C语言简介 15
2.2 C语言发展历史 15
2.3 C语言基本数据类型 16
2.3.1 整型类型 17
2.3.2 浮点类型 18
2.3.3 字符类型 20
2.3.4 枚举类型 22
2.3.5 指针类型 24
2.4 常量和变量 25
2.4.1 变量及变量的定义 25
2.4.2 常量的定义及运用 27
2.5 作用域 28
2.6 存储类型 30
第3章 数据的输出和输入 32
3.1 数据的输出 33
3.1.1 putchar()函数 33
3.1.2 指定格式输出函数printf() 33
3.2 数据的输入 35
3.2.1 getchar()函数 35
3.2.2 格式化输入函数scanf() 36
3.3 字符串输入 37
3.3.1 字符串输出函数puts() 37
3.3.2 字符串输入函数gets() 37
第4章 运算符与表达式 40
4.1 算术运算符及表达式 41
4.2 关系运算符及表达式 42
4.3 赋值运算符及表达式 44
4.4 逻辑运算符及表达式 46
4.5 复合运算符及表达式 47
4.6 条件运算符及表达式 49
4.7 逗号运算符 50
4.8 sizeof运算符 51
4.9 自增自减运算符 51
4.10 运算符优先级 53
4.11 类型转换 54
第5章 位运算 57
5.1 什么是位运算 58
5.2 位运算的逻辑 58
5.3 位运算的运算表达式 61
5.3.1 按位与(&) 61
5.3.2 按位或(|) 61
5.3.3 按位异或运算(∧) 62
5.3.4 按位取反运算(~) 63
5.3.5 左移(<<) 63
5.3.6 右移(>>) 64
5.4 归纳 64
第6章 程序结构与控制语句 67
6.1 程序结构 69
6.2 控制语句 70
6.2.1 if语句 70
6.2.2 if嵌套使用 73
6.2.3 switch语句 76
6.3 循环语句 77
6.3.1 while和do-while语句 77
6.3.2 for循环 80
6.4 程序转向语句 83
6.4.1 break 83
6.4.2 continue语句 83
第7章 数组 86
7.1 一维数组 87
7.1.1 数组的定义 87
7.1.2 一维数组的引用 87
7.1.3 一维数组初始化 88
7.1.4 一维数组内存分配 89
7.1.5 一维数组的排序 90
7.2 多维数组 94
7.2.1 多维数组的定义 94
7.2.2 二维数组的定义 94
7.2.3 二维数组的初始化 94
7.2.4 二维数组的内存分配 96
第8章 字符数组和字符串 100
8.1 字符数组 101
8.1.1 字符数组的定义 101
8.1.2 字符数组的初始化 101
8.2 字符串 103
8.2.1 字符串的输入和输出 103
8.2.2 字符串常见处理函数 104
第9章 指针 111
9.1 指针基础 112
9.1.1 指针变量 112
9.1.2 指针变量的赋值 112
9.1.3 指针的使用 114
9.2 指针的运算 115
9.2.1 指针变量的算术运算 116
9.2.2 指针的关系运算 117
9.3 空指针 118
9.4 指针和数组 118
9.4.1 数组指针 119
9.4.2 指针和多维数组 121
9.4.3 二维数组和指针的联系 122
9.5 多级指针 123
9.6 指针数组 123
9.6.1 指针数组初始化 124
9.6.2 指针数组名 125
9.7 const指针 126
9.7.1 常量化指针目标表达式 126
9.7.2 常量化指针变量 127
9.7.3 常量化指针变量及其目标表达式 128
9.8 void指针 128
9.9 字符型指针 129
第10章 函数 133
10.1 函数基础 134
10.1.1 函数的定义 134
10.1.2 函数的声明 134
10.1.3 函数的分类 135
10.2 函数的调用、参数的传递和返回值 136
10.2.1 函数的调用 136
10.2.2 函数的传参 137
10.3 函数的返回值 140
10.4 数组和函数之间的联系 141
10.4.1 数组传递 141
10.4.2 传递指针 142
10.5 main()函数的介绍 143
10.6 指针函数 144
10.7 函数指针 145
10.8 函数指针数组 146
10.9 递归函数 147
10.9.1 函数调用机制的说明 148
10.9.2 递归函数的调用方式 148
10.9.3 递归的条件 149
第11章 结构体、枚举及共用体 151
11.1 结构体定义 152
11.2 结构体变量 153
11.2.1 结构体变量的声明 153
11.2.2 结构体所占内存空间大小 155
11.2.3 结构体变量的使用 155
11.2.4 结构体变量初始化 157
11.3 结构体数组 158
11.3.1 结构体数组的定义 158
11.3.2 结构体数组初始化 160
11.3.3 结构体数组的使用 161
11.4 结构体指针 162
11.5 枚举 164
11.5.1 枚举类型的定义 164
11.5.2 枚举变量的声明 164
11.5.3 枚举变量的使用 165
11.6 位域的介绍 167
11.6.1 位域的定义 167
11.6.2 位域的使用 168
11.7 共用体 169
第12章 预处理命令 173
12.1 什么是预处理器 174
12.2 预处理符号 174
12.3 宏定义 174
12.3.1 不带参数的宏定义 174
12.3.2 带参数的宏定义 177
12.4 条件编译 181
12.4.1 if 181
12.4.2 ifdef 182
12.4.3 ifndef 183
12.5 typedef 183
第13章 内存管理 187
13.1 内存管理 188
13.2 动态内存的申请和分配 189
13.2.1 malloc函数 189
13.2.2 free函数 190
13.2.3 野指针 192
13.3 堆和栈的区别 192
13.4 C语言关键字 193
上机部分 199
上机1 进制和码制 199
第1阶段 指导 199
第2阶段 练习 204
上机2 数据 205
第1阶段 指导 205
第2阶段 练习 208
上机3 数据的输出和输入 209
第1阶段 指导 209
第2阶段 练习 211
上机4 运算符与表达式 213
第1阶段 指导 213
第2阶段 练习 216
上机5 位运算 218
第1阶段 指导 218
第2阶段 练习 219
上机6 程序结构与控制语句 220
第1阶段 指导 220
第2阶段 练习 224
上机7 数组 225
第1阶段 指导 225
第2阶段 练习 229
上机8 字符数组和字符串 230
第1阶段 指导 230
第2阶段 练习 231
上机9 指针 232
第1阶段 指导 232
第2阶段 练习 234
上机10 函数 235
第1阶段 指导 235
第2阶段 练习 239
上机11 结构体、枚举及共用体 240
第1阶段 指导 240
第2阶段 练习 242
上机12 预处理命令 243
第1阶段 指导 243
第2阶段 练习 244
上机13 内存管理 245
第1阶段 指导 245
第2阶段 练习 247