目 录 第1章 C语言概述 1 1.1 计算机编程语言 1 1.1.1 机器语言 1 1.1.2 汇编语言 2 1.1.3 高级语言 3 1.2 第一个C程序 5 1.3 C程序的上机步骤 7 1.3.1 CodeBlocks的安装 7 1.3.2 新建工程 9 1.3.3 多工程切换 13 1.3.4 单步调试程序 14 课后习题1 19 第2章 数制、基本数据类型 20 2.1 整数数制 20 2.1.1 十进制数 20 2.1.2 二进制数 20 2.1.3 八进制数 22 2.1.4 十六进制数 22 2.2 C程序常见符号分类 24 2.3 数据类型 25 2.3.1 数据类型的引入 25 2.3.2 类型修饰符 26 *2.3.3 C99标准中的新增类型 28 2.4 常量 28 2.4.1 整型常量 29 2.4.2 实型常量 29 2.4.3 字符常量 30 2.4.4 字符串常量 31 2.4.5 符号常量 32 2.4.6 枚举常量 32 2.5 变量 33 2.5.1 变量的声明与初始化 33 2.5.2 const类型修饰符 34 2.5.3 变量的类型 34 课后习题2 38 第3章 运算符和表达式、输入输出 40 3.1 算术运算符 40 3.2 赋值运算符 42 3.3 增1、减1运算符 43 3.4 关系运算符 44 3.5 逻辑运算符 45 3.6 条件运算符 46 3.7 强制类型转换运算符 47 3.8 逗号运算符 47 3.9 位运算符 48 3.10 sizeof运算符 50 3.11 类型转换 51 3.12 运算符的优先级和结合性 53 3.13 基本输入输出函数 54 3.13.1 字符输入输出函数 54 3.13.2 格式化输入输出函数 56 课后习题3 67 第4章 控制结构 71 4.1 算法及其描述方法 71 4.1.1 算法的概念 71 4.1.2 算法的描述方法 72 4.2 顺序结构 74 4.3 选择结构 76 4.3.1 if语句 76 4.3.2 switch语句 86 4.4 循环结构 93 4.4.1 while语句 94 4.4.2 do…while语句 97 4.4.3 for语句 99 4.4.4 三种循环控制语句的应用举例 102 4.4.5 循环的嵌套 107 4.4.6 提前结束循环 110 4.5 综合应用举例 113 课后习题4 120 第5章 数组 125 5.1 一维数组 125 5.1.1 一维数组的定义 125 5.1.2 一维数组的引用 126 5.1.3 一维数组的初始化 126 5.1.4 一维数组程序举例 127 5.2 二维数组 136 5.2.1 二维数组的定义 136 5.2.2 二维数组的引用 137 5.2.3 二维数组的初始化 138 5.2.4 二维数组程序举例 138 5.3 字符数组与字符串 142 5.3.1 字符数组的初始化 142 5.3.2 字符数组的输入/输出 144 5.3.3 字符串处理函数 145 5.3.4 字符数组和字符串程序举例 148 课后习题5 154 第6章 函数 158 6.1 函数的分类和定义 161 6.1.1 函数的分类 161 6.1.2 函数的定义 162 6.2 函数的调用、参数和返回值 163 6.3 函数的声明 164 6.4 函数的嵌套调用 168 *6.5 函数的递归调用 169 6.5.1 递归问题的提出 169 6.5.2 递归函数 171 6.6 数组作为函数参数 174 6.6.1 一维数组作为函数参数 174 6.6.2 二维数组作为函数参数 176 6.7 变量的作用域与生存期 178 6.7.1 局部变量 178 6.7.2 全局变量 179 6.7.3 变量的存储类别 180 6.7.4 小结 184 6.8 内部函数和外部函数 185 6.8.1 内部函数 185 6.8.2 外部函数 186 6.9 预处理命令 188 6.9.1 宏定义 188 6.9.2 文件包含 192 6.9.3 条件编译 193 6.10 综合应用举例 194 课后习题6 201 第7章 指针 206 7.1 内存、地址和内容 206 7.2 指针与指针变量 207 7.2.1 指针变量的定义 207 7.2.2 指针变量的引用 208 7.2.3 指针变量作为函数参数 210 7.3 指针与数组 213 7.3.1 指向一维数组的指针 213 7.3.2 有关指针的运算 216 7.3.3 一维数组的指针作为函数参数 217 7.3.4 指向二维数组的指针 222 7.3.5 二维数组的指针作为函数参数 225 7.4 指针与字符串 227 7.4.1 指向字符串的指针变量 227 7.4.2 指向字符串的指针作为函数参数 228 7.4.3 字符数组与字符串指针变量的区别 231 7.5 指针与函数 231 7.5.1 返回指针值的函数 232 *7.5.2 指向函数的指针 233 7.6 指针数组 234 *7.7 指向指针的指针 237 *7.8 带参数的函数main() 239 7.9 动态内存分配 241 7.9.1 动态内存分配函数 241 *7.9.2 动态内存分配与变长数组 244 *7.10 ANSI C的类型限定词const 245 课后习题7 247 第8章 结构体与共用体 253 8.1 结构体问题的引出 253 8.2 结构体类型和结构体类型变量 255 8.2.1 结构体类型的声明 255 8.2.2 结构体类型变量的定义 255 8.2.3 结构体的嵌套 257 8.3 结构体类型变量的引用和初始化 258 8.4 结构体数组 260 8.5 结构体指针 263 8.5.1 指向结构体类型变量的指针 263 8.5.2 指向结构体数组的指针 264 8.6 结构体与函数 266 8.7 结构体综合应用实例 269 8.8 共用体 278 8.8.1 问题的引出 278 8.8.2 声明共用体类型和定义共用体类型的变量 279 8.8.3 共用体成员的引用 280 8.9 枚举类型 281 8.10 typedef 283 *8.11 链表 284 8.11.1 问题的引出 284 8.11.2 链表的定义和特点 285 8.11.3 链表的创建 286 8.11.4 链表的删除操作 290 8.11.5 链表的插入操作 292 课后习题8 296 第9章 文件 304 9.1 文件概述 304 9.1.1 什么是文件 304 9.1.2 文件名 305 9.1.3 文件的分类 305 9.1.4 文件缓冲区 306 9.1.5 文件指针 306 9.2 文件的打开与关闭 307 9.2.1 用fopen()函数打开文件 307 9.2.2 用fclose()函数关闭文件 309 9.3 文件的读写 309 9.3.1 读/写字符函数 309 9.3.2 读/写字符串函数 311 9.3.3 格式化读/写函数 313 9.3.4 读/写数据块函数 315 9.4 文件的定位 322 9.4.1 移动文件指针 322 9.4.2 获取文件读写位置 324 9.5 出错检测 324 课后习题9 325 第10章 综合应用案例——学生学籍管理系统 328 10.1 需求分析 328 10.2 总体设计 329 10.2.1 系统总体设计 329 10.2.2 数据结构 329 10.3 详细设计 330 10.3.1 系统包含的函数 330 10.3.2 各个功能模块的软件功能 330 10.3.3 各个功能模块的程序流程图和算法描述 331 10.4 编码实现 336 10.5 运行结果 343 课后习题10 346 参考文献 349 附录A C关键字 350 附录B C运算符的优先级和结合性 351 附录C ASCII码字符表 352 附录D 常用的ANSI C标准库函数 356 D.1 数学函数 356 D.2 字符处理函数 357 D.3 字符串处理函数 357 D.4 动态内存分配函数 359 D.5 缓冲文件系统的输入/输出函数 359 D.6 其他常用函数 361