目录 第1章C语言程序设计基础1 1.1C语言的发展和主要特点1 1.1.1C语言的发展1 1.1.2C语言的主要特点1 1.2第一个C语言程序以及C语言程序开发过程2 1.2.1第一个C语言程序2 1.2.2C语言程序开发过程5 1.3数制及十进制数与R进制数之间的转换5 1.3.1数制5 1.3.2十进制数与R进制数之间的转换6 1.4程序陷阱7 习题17 第2章数据类型及其运算10 2.1标识符与关键字10 2.2C语言的数据类型11 2.3常量与变量15 2.3.1整型量15 2.3.2实型量18 2.3.3字符型量19 2.3.4符号常量21 2.3.5类型转换22 2.4基本运算符和表达式24 2.4.1运算符的种类、优先级和结合性概述24 2.4.2优先级和结合性25 2.5程序陷阱30 习题231 第3章C语言程序结构及相关语句35 3.1相关知识35 3.1.1算法描述方法35 3.1.2结构化程序35 3.1.3模块化结构36 3.2顺序语句36 3.2.1C程序的语句36 3.2.2数据输出语句38 3.2.3数据输入语句42 3.3分支结构程序48 3.3.1关系运算符和表达式48 3.3.2逻辑运算符和表达式49 3.3.3if语句51 3.3.4条件运算符和条件表达式58 3.3.5switch语句59 3.3.6程序举例62 3.4循环结构程序64 3.4.1while语句64 3.4.2do…while语句66 3.4.3for语句67 3.4.4转移语句69 3.4.5程序举例73 3.5实例研究:利用计算机破案74 3.6程序陷阱76 习题377 第4章函数86 4.1函数的定义与调用86 4.1.1函数定义的一般形式86 4.1.2函数调用的一般形式88 4.1.3函数的声明和函数原型89 4.2函数的参数和函数的值92 4.2.1函数的参数92 4.2.2函数的值93 4.3函数的嵌套调用94 4.4递归函数95 4.5变量的作用域97 4.5.1局部变量98 4.5.2全局变量100 4.6变量的存储类型和生存期103 4.6.1自动变量103 4.6.2外部变量106 4.6.3静态变量107 4.6.4寄存器变量108 4.7内部函数和外部函数109 4.7.1内部函数109 4.7.2外部函数110 4.8实例研究: 汉诺塔问题111 4.9程序陷阱112 习题4114 第5章数组和指针121 5.1一维数组的定义和引用121 5.1.1定义一维数组121 5.1.2引用一维数组的元素122 5.2二维数组125 5.2.1定义二维数组125 5.2.2引用二维数组的元素125 5.2.3二维数组的初始化127 5.3用数组作为函数的参数129 5.3.1用数组元素作为函数的参数129 5.3.2用一维数组名作为函数的参数130 5.3.3用多维数组作为函数的参数133 5.4字符数组与字符串134 5.4.1字符数组134 5.4.2字符串135 5.4.3字符串常用函数137 5.5数组程序举例141 5.6指针变量的定义143 5.7指针运算符143 5.8指向void的指针145 5.9函数参数的引用传递145 5.10指针变量和数组148 5.10.1指针变量与一维数组148 5.10.2指针变量与二维数组152 5.11字符指针、字符数组和字符串158 5.11.1字符指针与字符数组的区别158 5.11.2字符指针数组和字符串数组159 5.12实例研究: 冒泡程序161 5.13程序陷阱162 习题5163 第6章用户定制数据类型及位运算170 6.1结构170 6.1.1概述170 6.1.2结构的定义170 6.1.3结构变量成员的引用173 6.1.4结构变量的初始化175 6.1.5结构数组176 6.1.6指向结构变量的指针181 6.2联合184 6.2.1联合的概念184 6.2.2联合类型的定义185 6.2.3联合变量的定义185 6.2.4联合变量的赋值和使用186 6.3枚举类型188 6.4类型定义: typedef193 6.5位运算符195 6.5.1位运算符介绍195 6.5.2位运算综合举例200 6.6位段结构203 6.6.1位段结构的定义和位段结构变量的定义203 6.6.2位段成员的使用205 6.7程序陷阱206 习题6206 第7章预处理命令210 7.1概述210 7.2文件包含210 7.3宏定义211 7.3.1无参宏定义211 7.3.2带参宏定义213 7.3.3取消宏#undef220 7.4条件编译220 7.5宏assert(断言)224 7.6程序陷阱224 习题7225 第8章文件228 8.1文件概念228 8.2文件指针229 8.3文件的打开与关闭229 8.3.1文件打开函数fopen()229 8.3.2文件关闭函数fclose()231 8.4文件检测函数231 8.5对文本文件的操作232 8.5.1采用格式化读写函数fscanf()和fprintf()读写数据232 8.5.2采用字符读写函数fgetc()和fputc()读写字符234 8.5.3采用字符串读写函数fgets()和fputs()读写字符串237 8.6对二进制文件的操作239 8.6.1采用数据块读写函数fread()和write()读写二进制文件239 8.6.2随机读写二进制文件241 8.7实例研究: 人事管理系统244 8.7.1需求分析244 8.7.2功能描述244 8.7.3总体设计245 8.7.4系统实现246 8.8程序陷阱254 习题8255 第9章高级主题259 9.1变长参数表259 9.2命令行参数261 9.3动态内存分配与释放263 9.3.1动态内存分配函数malloc()263 9.3.2动态内存释放函数free()264 9.3.3动态内存处理实例: 线性链表264 9.4指针的深入讨论268 9.4.1指向函数的指针变量268 9.4.2返回指针的函数269 9.5程序陷阱270 习题9271 参考文献274 附录A常用C编译器使用方法275 附录B常用字符ASCII码对照表276 附录CC运算符与优先级277 附录DC常用库函数278