第1章C语言概述 1
1.1C语言发展简介 1
1.2C语言的特点 2
1.2.1C语言是中级语言 2
1.2.2C语言是结构化语言 3
1.2.3C语言是程序员的语言 3
1.3C语言的结构 4
1.4C语言的开发步骤和关键字 8
1.5习题 9
第2章数据类型及其运算 10
2.1C的数据类型及其定义方法 10
2.1.1C的数据类型 10
2.1.2常量和变量 11
2.1.3整型数据 14
2.1.4实型数据 15
2.1.5字符型数据 16
2.2运算的种类.优先级和结合性 19
2.2.1算术运算 19
2.2.2关系运算和逻辑运算 21
2.2.3位运算 23
2.2.4赋值运算 23
2.2.5其他运算 24
2.2.6运算符优先级与表达式求值次序 26
2.3数据类型的转换 27
2.3.1自动类型转换 27
2.3.2强制类型转换 28
2.3.3赋值表达式中的类型转换 28
2.4习题 29
第3章基本语句 32
3.1表达式语句.空语句及复合语句 33
3.1.1表达式语句 33
3.1.2空语句 33
3.1.3复合语句 33
3.1.4带标号的语句 34
3.2数据的输入和输出及输入输出函数的调用 34
3.2.1scanf()函数(格式化输入函数) 35
3.2.2printf()函数 37
3.2.3getchar()函数与putchar()函数 40
3.3顺序结构程序设计 41
3.4习题 42
第4章选择结构程序设计 47
4.1用if语句实现选择结构 47
4.1.1if语句的两种基本形式 47
4.1.2if...elseif语句 49
4.2用switch语句实现多分支选择结构 51
4.3选择结构的嵌套 53
4.3.1if语句嵌套 53
4.3.2switch语句嵌套 54
4.4习题 54
第5章循环结构程序设计 60
5.1while和dowhile循环结构 60
5.1.1while循环语句 60
5.1.2do-while循环语句 61
5.2for循环语句 63
5.2.1for循环语句的一般形式 63
5.2.2for循环变量 64
5.2.3无限循环 65
5.2.4没有循环体的for循环语句 66
5.3循环嵌套 66
5.4continue和break语句 67
5.4.1continue语句 67
5.4.2break语句 68
5.5goto语句和语句标号的使用 69
5.6例题分析 70
5.7习题 72
第6章数组的定义和引用 76
6.1一维数组定义.初始化和引用 76
6.1.1一维数组的定义 76
6.1.2一维数组的初始化 77
6.1.3一维数组的引用 78
6.2二维数组定义.初始化和引用 80
6.2.1二维数组的定义 80
6.2.2二维数组的初始化 82
6.2.3二维数组的引用 83
6.2.4多维数组 84
6.3字符数组 84
6.3.1字符数组的定义 84
6.3.2字符数组的初始化 85
6.3.3字符数组的引用 85
6.3.4字符数组的输入输出 86
6.3.5字符串数组 88
6.4习题 89
第7章函数 94
7.1标准库函数的正确调用 95
7.2函数的定义 96
7.3函数的作用域规则 97
7.4函数的类型和返回值 98
7.5函数的参数 99
7.6函数的调用 100
7.6.1函数的正确调用 100
7.6.2函数原型——对被调用函数的声明 101
7.6.3函数的嵌套调用 102
7.6.4函数的递归调用 104
7.7内部函数与外部函数 106
7.7.1内部函数(静态函数) 106
7.7.2外部函数 107
7.8局部变量.全局变量及变量的存储类别 107
7.8.1局部变量 107
7.8.2全局变量 109
7.8.3变量的存储类别 110
7.9习题 114
第8章编译预处理 118
8.1宏定义 118
8.1.1#define 118
8.1.2定义带参的宏 119
8.2文件包含 120
8.3条件编译命令 120
8.4习题 123
第9章指针 127
9.1地址.指针和指针变量的概念 127
9.2指针与变量 129
9.2.1指针变量的定义和类型 129
9.2.2指针变量的引用和运算 129
9.2.3指针和指针变量作为函数的参数 131
9.3指针与数组 132
9.3.1指向一维数组及其元素的指针和指针变量 132
9.3.2一维数组名作函数参数 134
9.3.3二维数组的指针和指向二维数组的指针变量 136
9.3.4二维数组的指针或指针变量作为函数的参数 139
9.3.5字符数组的指针和指向字符数组的指针变量 140
9.4指针与函数 142
9.4.1函数的指针和指向函数的指针变量 142
9.4.2返回指针值的函数 145
9.5指针数组与指向指针的指针变量 145
9.5.1指针数组 145
9.5.2指向指针数据的指针变量 148
9.5.3指针数组作main函数中的参数 149
9.6习题 150
第10章结构体.共用体.枚举类型和自定义类型 155
10.1结构体类型及其变量的定义和引用 155
10.1.1结构体类型的定义 155
10.1.2结构体变量的定义 156
10.1.3结构体变量的初始化 158
10.1.4结构体变量的引用 159
10.1.5结构体变量的输入输出 160
10.2结构体数组 161
10.2.1结构体数组的定义 161
10.2.2结构体数组的初始化 162
10.2.3结构体数组的引用 163
10.3指向结构体类型数据的指针 166
10.3.1指向结构体变量的指针变量的定义和引用 166
10.3.2通过(指针或)指针变量访问结构体数组 167
10.4结构体与函数 169
10.4.1结构体变量作为函数参数——单向值传递 169
10.4.2结构体变量的指针(或指针变量)作为函数参数—传地址 169
10.4.3返回结构体类型值的函数 170
10.5简单(单向)链表的建立.输出.删除和插入 171
10.5.1什么是单向链表 171
10.5.2建立动态单向链表 171
10.5.3删除单向链表的结点 173
10.5.4向单向链表中插入结点 174
10.5.5综合操作单向链表 175
10.6共用体 176
10.6.1共用体的概念 176
10.6.2共用体的定义 176
10.6.3共用体变量的引用 177
10.7枚举类型 179
10.7.1枚举类型和枚举变量的定义和引用 179
10.7.2枚举变量的输入输出 180
10.8自定义数据类型名 182
10.8.1自定义数据类型名的定义 182
10.8.2常见自定义类型名举例 183
10.9习题 184
第11章位运算 188
11.1位运算的含义 188
11.2简单位运算 189
11.2.1按位与运算 189
11.2.2按位或运算 190
11.2.3按位异或运算 190
11.2.4取反运算 190
11.2.5左移运算与右移运算 190
11.3习题 192
第12章文件操作 193
12.1C文件概述 193
12.2文件类型指针 194
12.3文件的打开与关闭 195
12.3.1文件的打开(fopen函数) 195
12.3.2文件的关闭(fclose函数) 196
12.4文件的读写 196
12.4.1读写字符(fgetc和fputc函数) 197
12.4.2使用feof()函数 199
12.4.3读写字符串(fgets和fputs函数) 199
12.4.4格式化读写(fscanf和fprintf函数) 201
12.4.5块读写(fread和fwrite函数) 202
12.5文件的定位 205
12.6习题 207
习题和参考解答 211
参考文献 284