第1章 C语言概述 1
1.1 C语言发展简介 1
1.2 C语言的特点 2
C语言是中级语言 2
C语言是结构化语言 3
C语言是程序员的语言 3
1.3 C语言的结构 4
1.4 C语言的开发步骤和关键字 8
1.5习题 9
第2章 数据类型及其运算 10
2.1 C的数据类型及其定义方法 10
C的数据类型 10
常量和变量 11
整型数据 14
实型数据 15
字符型数据 16
2.2运算的种类、优先级和结合性 19
算术运算 19
关系运算和逻辑运算 21
位运算 23
赋值运算 23
其他运算 24
运算符优先级与表达式求值次序 26
2.3数据类型的转换 27
自动类型转换 27
强制类型转换 28
赋值表达式中的类型转换 28
2.4习题 29
第3章 基本语句 32
3.1表达式语句、空语句及复合语句 33
表达式语句 33
空语句 33
复合语句 33
带标号的语句 34
3.2数据的输入和输出及输入输出函数的调用 34
scan()函数(格式化输入函数) 35
printf()函数 37
getchar()函数与putchar()函数 40
3.3顺序结构程序设计 41
3.4习题 42
第4章 选择结构程序设计 47
4.1用if语句实现选择结构 47
if语句的两种基本形式 47
ifelse if语句 49
4.2用switch语句实现多分支选择结构 51
4.3选择结构的嵌套 53
if语句嵌套 53
switch语句嵌套 54
4.4习题 54
第5章 循环结构程序设计 60
5.1 while和do while循环结构 60
while循环语句 60
do-while循环语句 61
5.2 for循环语句 63
for循环语句的一般形式 63
for循环变量 64
无限循环 65
没有循环体的 for循环语句 66
5.3循环嵌套 66
5.4 continue和break语句 67
continue语句 67
break语句 68
5.5 goto语句和语句标号的使用 69
5.6例题分析 70
5.7习题 72
第6章 数组的定义和引用 76
6.1一维数组定义、初始化和引用 76
一维数组的定义 76
一维数组的初始化 77
一维数组的引用 78
6.2二维数组定义、初始化和引用 80
二维数组的定义 80
二维数组的初始化 82
二维数组的引用 83
多维数组 84
6.3字符数组 84
字符数组的定义 84
字符数组的初始化 85
字符数组的引用 85
字符数组的输入输出 86
字符串数组 88
6.4习题 89
第7章 函数 94
7.1标准库函数的正确调用 95
7.2函数的定义 96
7.3函数的作用域规则 97
7.4函数的类型和返回值 98
7.5函数的参数 99
7.6函数的调用 100
函数的正确调用 100
函数原型——对被调用函数的声明 101
函数的嵌套调用 102
函数的递归调用 104
7.7内部函数与外部函数 106
内部函数(静态函数) 106
外部函数 107
7.8局部变量、全局变量及变量的存储类别 107
局部变量 107
全局变量 109
变量的存储类别 110
7.9习题 114
第8章 编译预处理 118
8.1宏定义 118
#define 118
定义带参的宏 119
8.2文件包含 120
8.3条件编译命令 120
8.4习题 123
第9章 指针 127
9.1地址、指针和指针变量的概念 127
9.2指针与变量 129
指针变量的定义和类型 129
指针变量的引用和运算 129
指针和指针变量作为函数的参数 131
9.3指针与数组 132
指向一维数组及其元素的指针和指针变量 132
一维数组名作函数参数 134
二维数组的指针和指向二维数组的指针变量 136
二维数组的指针或指针变量作为函数的参数 139
字符数组的指针和指向字符数组的指针变量 140
9.4指针与函数 142
函数的指针和指向函数的指针变量 142
返回指针值的函数 145
9.5指针数组与指向指针的指针变量 145
指针数组 145
指向指针数据的指针变量 148
指针数组作main函数中的参数 149
9.6习题 150
第10章 结构体、共用体、枚举类型和自定义类型 155
10.1结构体类型及其变量的定义和引用 155
结构体类型的定义 155
结构体变量的定义 156
结构体变量的初始化 158
结构体变量的引用 159
结构体变量的输入输出 160
10.2结构体数组 161
结构体数组的定义 161
结构体数组的初始化 162
结构体数组的引用 163
10.3指向结构体类型数据的指针 166
指向结构体变量的指针变量的定义和引用 166
通过(指针或)指针变量访问结构体数组 167
10.4结构体与函数 169
结构体变量作为函数参数——单向值传递 169
结构体变量的指针(或指针变量)作为函数参数—传地址 169
返回结构体类型值的函数 170
10.5简单(单向)链表的建立、输出、删除和插入 171
什么是单向链表 171
建立动态单向链表 171
删除单向链表的结点 173
向单向链表中插入结点 174
综合操作单向链表 175
10.6共用体 176
共用体的概念 176
共用体的定义 176
共用体变量的引用 177
10.7枚举类型 179
枚举类型和枚举变量的定义和引用 179
枚举变量的输入输出 180
10.8自定义数据类型名 182
自定义数据类型名的定义 182
常见自定义类型名举例 183
10.9习题 184
第11章 位运算 188
11.1位运算的含义 188
11.2简单位运算 189
按位与运算 189
按位或运算 1
按位异或运算 190
取反运算 190
左移运算与右移运算 190
11.3习题 192
第12章 文件操作 193
12.1 C文件概述 193
12.2文件类型指针 194
12.3文件的打开与关闭 195
文件的打开(fopen函数) 195
文件的关闭(fclose函数) 196
12.4文件的读写 196
读写字符(fgetc和fputc函数) 197
使用feof()函数 199
读写字符串(fgets和fputs函数) 199
格式化读写(fscanf和fprintf函数) 201
块读写(fread和fwrite函数) 202
12.5文件的定位 205
12.6习题 207
习题和参考解答 211
参考文献 284