第1章 概述 1
1.1 简单C程序介绍 1
1.1.1 几个简单C程序例子 1
1.1.2 程序分析 3
1.1.3 C语言程序结构 4
1.2 C语言历史、特点与发展 5
1.2.1 C语言的历史 5
1.2.2 C语言的特点 5
1.2.3 C语言的发展 5
1.3 C语言开发环境介绍 6
1.3.1 C语言开发调试步骤 6
1.3.2 C程序上机环境介绍 7
习题1 9
第2章 数据类型和运算符 11
2.1 进制基本知识 11
2.1.1 进制 11
2.1.2 二进制数的基本运算 13
2.1.3 进制之间转换 13
2.1.4 字节 15
2.2 数据表示形式和编码 15
2.2.1 有符号数和无符号数 15
2.2.2 原码 16
2.2.3 补码 16
2.2.4 小数的表示 16
2.2.5 编码 17
2.3 数据类型、常量和变量 17
2.3.1 数据类型相关概念 17
2.3.2 基本数据类型 18
2.3.3 常量 19
2.3.4 变量 21
2.4 运算符号和表达式 22
2.4.1 算术运算符 23
2.4.2 赋值运算符 23
2.4.3 关系运算符和逻辑运算符 24
2.4.4 运算符优先级和结合性 24
2.4.5 复合赋值运算符 25
2.4.6 自加和自减运算符 25
2.4.7 sizeof运算符和逗号运算符 26
2.4.8 表达式 27
2.4.9 表达式值的类型和类型转换 27
习题2 29
第3章 三种基本程序结构 32
3.1 算法 32
3.1.1 算法设计 32
3.1.2 算法的描述 33
3.2 顺序结构 33
3.2.1 C语言语句概述 34
3.2.2 格式输入与输出 35
3.2.3 顺序结构程序举例 37
3.3 选择结构 38
3.3.1 if语句 38
3.3.2 条件运算符 39
3.3.3 switch语句 40
3.3.4 选择结构程序举例 41
3.4 循环结构 43
3.4.1 while语句 43
3.4.2 do~while语句 44
3.4.3 for语句 45
3.4.4 break和continue语句 47
3.4.5 循环结构程序举例 48
3.5 程序结构的嵌套 50
3.5.1 if语句的嵌套 50
3.5.2 程序结构嵌套举例 51
习题3 53
第4章 数组和字符串 61
4.1 一维数组 61
4.1.1 一维数组的定义 61
4.1.2 一维数组的引用 61
4.1.3 一维数组的初始化 63
4.1.4 一维数组的应用举例 64
4.2 二维数组 65
4.2.1 二维数组的定义 66
4.2.2 二维数组的引用 66
4.2.3 二维数组的初始化 67
4.2.4 二维数组的应用举例 69
4.3 字符串和字符数组 70
4.3.1 字符数组的定义和引用 70
4.3.2 字符数组的初始化 71
4.3.3 字符数组的应用 71
习题4 79
第5章 函数 81
5.1 函数的定义和声明 81
5.1.1 函数的定义 81
5.1.2 函数声明 83
5.2 函数的调用 84
5.2.1 函数的调用 84
5.2.2 函数执行过程 85
5.2.3 实参和形参之间值的传递 86
5.3 函数的递归调用 87
5.4 数组作为函数的参数 88
5.5 局部变量、全局变量、变量存储类型 90
5.5.1 变量的作用范围 90
5.5.2 全局变量和局部变量 91
5.5.3 变量的存储类型 92
习题5 95
第6章 指针 97
6.1 地址 97
6.1.1 地址和变量 97
6.1.2 直接访问和间接访问 97
6.2 指针 98
6.2.1 指针的定义 98
6.2.2 指针赋值 98
6.2.3 通过指针访问变量 99
6.2.4 指针类型(指针指向变量的类型) 100
6.3 指针和数组 100
6.3.1 指向数组的指针 100
6.3.2 指针的运算 101
6.4 指针和函数 103
6.4.1 指针作为函数的参数 103
6.4.2 指针作为函数的返回值 105
习题6 105
第7章 结构体、联合体和枚举 109
7.1 结构体类型 109
7.1.1 结构体类型的定义 109
7.1.2 结构体类型变量的定义 110
7.1.3 结构体类型变量的初始化和引用 111
7.1.4 结构体与数组 113
7.1.5 结构体数组应用举例 115
7.1.6 结构体作为函数参数 117
7.2 联合(共用)体类型 119
7.2.1 联合体类型的定义 119
7.2.2 联合体类型变量的定义、初始化和引用 120
7.3 枚举类型 121
7.3.1 枚举类型的定义 121
7.3.2 枚举类型变量的初始化和引用 122
7.4 自定义类型 123
习题7 124
第8章 位运算 132
8.1 位运算符和位运算 132
8.1.1 按位与运算符——& 132
8.1.2 按位或运算符——| 132
8.1.3 按位异或运算符——^ 133
8.1.4 按位取反运算符——~ 133
8.1.5 左移运算符——《 133
8.1.6 右移运算符——》 133
8.1.7 位复合赋值运算符 134
8.1.8 不同类型量参与位运算 134
8.2 位运算表达式和位运算的特殊用途 135
8.2.1 位运算表达式 135
8.2.2 置位 135
8.2.3 清零 136
8.2.4 取反 137
8.2.5 位检测 137
8.3 位段 138
8.3.1 位段的概念与定义 138
8.3.2 位段的使用说明 140
习题8 141
第9章 文件 145
9.1 文件概述 145
9.1.1 文件的基本概念 145
9.1.2 文件的分类 145
9.1.3 文件操作的一般步骤 146
9.2 文件结构体和文件类型指针 146
9.2.1 文件结构体 146
9.2.2 文件类型指针 147
9.3 文件的打开和关闭 147
9.3.1 文件的打开 147
9.3.2 文件的关闭 149
9.4 文件的读写 150
9.4.1 字符读写函数fputc和fgetc 150
9.4.2 字符串读写函数fputs和fgets 152
9.4.3 格式化读写函数fprintf和fscanf 153
9.4.4 数据块读写函数fwrite和fread 154
9.5 文件定位和文件检测 156
9.5.1 ftell函数 156
9.5.2 rewind函数 156
9.5.3 fseek函数 156
9.5.4 文件检测 158
习题9 158
第10章 综合举例 163
10.1 文本模式程序设计 163
10.1.1 文本模式简介 163
10.1.2 文本模式函数简介 163
10.1.3 文本模式下的弹出菜单例子 166
10.2 图形模式程序设计 175
10.2.1 图形模式简介 175
10.2.2 图形模式函数简介 175
10.2.3 图形模式下时钟的例子 183
10.3 多文件程序和工程 185
10.3.1 工程的建立与编译连接 186
10.3.2 举例 187
10.3.3 外部变量和外部函数 187
10.3.4 文件包含实现多文件程序 188
10.3.5 工程中附加从属关系的指定 188
习题10 188
附录 191
附录A 标准ASCII字符编码表 191
附录B 运算符的优先级和结合性 192
附录C Turbo C 2.0库函数参考 193
附录D Turbo C 2.0常见错误 198
参考文献 203