词条 | C语言开发技术详解 |
释义 | C语言从产生到现在,已经成为最重要和最流行的编程语言之一。《C语言开发技术详解》分上下两篇,分别介绍了C语言的基础和高级程序设计技巧。该书内容丰富、结构清晰、实例代码讲解详尽,可以作为C语言、Java语言初学者的入门教材,也可作为C程序员的参考手册,同时,还可作为大中专院校学生及电脑培训班的参考书。 书名:C语言开发技术详解 作者:戴建华 等 ISBN:9787121084904 类别:计算机,编程,C语言 页数:576页 定价:66.00元(含光盘1张) 出版社:电子工业出版社 出版时间:2009年5月1日 宣传语该书特色: 从入门到精通:上篇介绍C语言基础,下篇介绍了C语言的高级程序设计技巧。 适用双操作系统:Windows+Linux环境。 循序渐进:本书编写顺序按C语言的知识点循序渐进地介绍。 实例丰富,讲解详细:386个实例,方便读者理解相应的知识点。 前言引子:C语言作为一门最通用的语言,在过去很流行,将来依然会如此。几乎每一个理工科或者其他专业的学生毫不例外地要学习它。记得大学里,很多学校都把谭浩强教授的《C程序设计》作为入门教材,这是绝佳的选择。然而,要更进一步,更全面而深入地学习呢?显然有点力不从心。本书正是为了弥补这个缺憾而写的,希望能对想比较全面而深入学习C语言程序设计的人有所帮助。 从C语言产生到现在,它已经成为最重要和最流行的编程语言之一。在各种流行编程语言中,都能看到C语言的影子,如Java的语法与C语言基本相同。学习、掌握C语言是每一个计算机技术人员的基本功之一。 C语言具有高级语言的强大功能,却又有很多直接操作计算机硬件的功能(这些都是汇编语言的功能),因此,C语言通常又被称为中级语言。学习和掌握C语言,既可以增进对于计算机底层工作机制的了解,又为进一步学习其他高级语言打下了坚实的基础。 本书特点 从入门到精通:本书分上下两篇,上篇针对初学者,从C语言的基础开始,使略有计算机基础的人都能容易地学会C语言编程。下篇则介绍了C语言的高级程序设计技巧,包括常用算法、底层控制鼠标、绘图、加密、压缩等应用。 适用多种操作系统:本书实例都通过GCC编译器调试,读者不仅可在Windows环境下使用本书学习C语言,也可在Linux环境下使用本书学习C语言。 循序渐进:本书编写顺序按C语言的知识点循序渐进地介绍。例如,先介绍数据的存储,再介绍数据的输入/输出;先介绍简单的程序设计概念,再介绍指针等C语言的难点。 重点突出:指针是C语言的重点和难点,本书用了大量的篇幅,从不同方面对其进行讲解,并列举了大量的实例,帮助读者理解并掌握指针。 实例丰富,讲解详细:学习程序设计时,必须要多上机操作。本书对每个知识点都配有实例代码,并对实例代码进行了详细地讲解,在实例后,一般都附有实例程序的运行结果,方便读者对比理解相应的知识点。 注重实用:在本书下篇,详细介绍了数据加密、压缩、控制鼠标、绘制图形等实用程序。通过这些内容,可进一步提高读者C语言的应用能力。 实用超值的DVD光盘:为帮助读者更深入地学习,本书附赠DVD光盘1张,内容包括本书所有的章节实例,入门视频以及长达21小时的C语言学习视频教学课件,讲解关键知识点界面操作,手把手教会读者使用。 本书内容 本书分上下两篇,共26章,上篇共16章,主要介绍C语言的语法基础;下篇共10章,主要介绍C语言的高级程序设计。各章内容如下: 第1章为C语言概述,介绍了C语言的发展、特点,C语言程序的开发过程,最后,以一个简单的C程序,演示了编写C语言程序的方法。 第2章介绍了一个完整的C程序各部分的含义。 第3章介绍了C语言几种常见的开发环境,包括Dev-C++、Visual C++、Linux下C语言开发环境的使用等内容。 第4章介绍了C语言数据的表示方法,包括数据的存储、常量、变量、整数类型、字符类型、实数类型、混合运算及类型转换、C99新增数据类型等内容。 第5章详细介绍C语言中的表达式、各种运算符及运算优先级、C语言各类语句等内容。 第6章介绍了格式化输入/输出函数的使用,包括printf函数、scanf函数、getchar函数、getch函数、gets函数、putch函数、puts函数等的使用。 第7章介绍C语言分支结构程序设计的方法,包括使用if语句、嵌套if语句、if else if语句、switch语句等进行多种分支程序设计的内容。 第8章介绍C语言循环结构程序设计的方法,包括使用编写while循环、for循环,以及循环嵌套等内容。 第9章介绍在C语言中使用数组的方法,主要介绍了一维数组、二维数组、字符数组和字符串的使用。 第10章介绍在C语言中创建和使用函数的方法,包括函数的概念、编写函数、设置函数的参数、函数调用、递归函数的编写等内容。 第11章介绍模块化程序设计方法,包括模块化程序设计概念、C程序的组织、变量的作用域、变量的存储类型等内容。 第12章介绍C语言中指针的使用,指针是C语言最显著的特征。本章首先介绍变量在内存中的保存形式,然后介绍了指针和简单变量、指针和数组、指向多维数组的指针、指针和字符串、指针数组、指针和函数等内容。 第13章介绍结构、联合和枚举,包括结构的概念、结构的嵌套、结构数组、结构指针、向函数传递结构、联合、枚举等内容。 第14章介绍位运算和位域的使用,通过位运算符,可以方便地操作二进制位。 第15章介绍文件输入/输出的方法,主要介绍了数据流的概念、文件的打开与关闭、从文件中读写字符、从文件中读写字符串、二进制文件的读写、文件检测函数、文件的随机读写、管理缓冲区、输入/输出的重定向、文件管理等内容。 第16章介绍编译预处理,包括宏定义命令、条件编译、其他预处理命令、内联函数等内容。 第17章介绍处理字符串的方法,包括字符串的存储、字符和字符串检测函数、查找字符串、比较字符串、连接字符串、复制字符串、字符和字符串的转换等内容。 第18章介绍C语言的数学函数和时间函数,使用这些函数,可方便地处理数值、日期时间等类型的数据。 第19章介绍常用算法的C语言程序,包括用C语言编写的完成排序、查找、队列、堆栈、链表等程序。 第20章介绍用C语言进行存储管理的方法,包括内存动态分配和回收等内容。 第21章介绍用C语言编写鼠标的底层操作函数,包括初始化鼠标、复位鼠标、显示鼠标指针、隐藏鼠标指针、获取按钮信息等操作鼠标的底层函数。 第22章介绍用C语言编写数据加密程序的方法,如换位加密法、替换加密法、位加密法等程序的编写,最后,还简单介绍了MD5算法。 第23章介绍用C语言编写数据压缩程序的方法,首先,介绍了数据压缩基础,最后,详细介绍了LZW压缩算法的原理及实现过程。 第24章介绍C语言底层图形函数的编程,首先介绍了显示系统的基本概念,然后介绍了直接读取显存编写图形函数的方法,在此基础上,完成绘制线、圆、矩形、多边形等函数,最后还介绍了编辑图形的方法。 第25章介绍GCC调用汇编程序的方法,包括AT&T汇编简介、GCC内嵌汇编、调用汇编程序等内容。 第26章为一个用C语言编写的信息管理系统——员工管理系统,通过该实例程序的编写,可巩固本书前面各章所学内容。 读者对象 程序设计初学者入门 大中院校学生 大中院校教师 C程序员 电脑培训班 计算机爱好者 由于计算机技术发展很快,且编者水平和学识有限,书中难免有疏漏之处,敬请广大读者朋友批评指正,并多提出宝贵意见。 编 者 目录第1篇 C语言基础 第1章 C语言概述 2 1.1 C语言发展历史 2 1.1.1 C语言发展过程 2 1.1.2 C语言标准 3 1.2 C语言的特点 4 1.2.1 简洁紧凑 4 1.2.2 灵活高效 4 1.2.3 强大的控制结构 5 1.2.4 可移植性 5 1.2.5 C语言的缺点 5 1.2.6 C与C++的关系 6 1.3 C语言程序开发过程 6 1.3.1 定义程序目标 6 1.3.2 设计程序 6 1.3.3 编写源代码 7 1.3.4 编译和链接 7 1.3.5 测试 8 1.3.6 维护和修改 8 1.3.7 总结 8 1.4 创建第一个C程序 9 1.4.1 C程序结构 9 1.4.2 输入程序代码 9 1.4.3 编译链接程序 10 1.4.4 调试程序 11 1.4.5 程序语句的含义 12 第2章 C程序的组成 13 2.1 一个完整的C程序 13 2.1.1 分析程序目标 13 2.1.2 设计程序 13 2.1.3 编写代码 14 2.1.4 编译运行程序 15 2.2 C程序的组成 16 2.2.1 包含指令 16 2.2.2 定义常量 16 2.2.3 声明函数原型 17 2.2.4 main函数 17 2.2.5 程序语句 17 2.2.6 函数定义 18 2.2.7 注释 18 2.3 C程序组成总结 19 第3章 C语言开发环境 20 3.1 C语言开发环境简介 20 3.1.1 C语言开发环境的组成 20 3.1.2 常用开发环境 20 3.2 使用Dev-C++ 22 3.2.1 Dev-C++操作界面 22 3.2.2 设置选项 22 3.2.3 用Dev-C++创建C程序 23 3.2.4 编译程序 24 3.2.5 运行Dev-C++编译的程序 25 3.3 使用Visual C++ 26 3.3.1 Visual C++操作界面 27 3.3.2 用Visual C++创建C程序 27 3.3.3 编译程序 29 3.3.4 运行Visual C++生成的程序 30 3.4 Linux C语言开发环境 31 3.4.1 Linux C语言开发环境的构成 31 3.4.2 代码编辑器 31 3.4.3 GCC编译器 33 3.4.4 在emacs中编译C程序 33 3.4.5 在Linux中编写C程序 34 第4章 数据的表示 37 4.1 数据的存储 37 4.1.1 内存单元 37 4.1.2 字符的存储 38 4.1.3 数值的存储 38 4.2 数据类型简介 39 4.3 常量 40 4.3.1 直接常量 40 4.3.2 符号常量 40 4.4 变量 42 4.4.1 标识符 42 4.4.2 声明变量 43 4.4.3 变量初始化 45 4.5 整数类型 45 4.5.1 整数类型及存储 45 4.5.2 整型常量的表示 48 4.5.3 整型数据输出 50 4.6 字符类型 53 4.6.1 字符常量 53 4.6.2 字符变量及初始化 53 4.6.3 转义字符 54 4.6.4 字符型数据的输出 55 4.7 实数类型 56 4.7.1 实数类型及存储 56 4.7.2 实型常量的表示 58 4.7.3 实型变量 59 4.7.4 实型数据输出 60 4.8 混合运算及类型转换 61 4.8.1 混合运算 61 4.8.2 强制数据类型转换 63 4.9 C99新增数据类型 64 4.9.1 逻辑型(_Bool) 64 4.9.2 复数类型(_Complex和_Imaginary) 64 4.10 总结 65 第5章 表达式、运算符和语句 66 5.1 表达式 66 5.1.1 简单表达式 66 5.1.2 逗号表达式 66 5.2 运算符 67 5.2.1 运算符概述 68 5.2.2 算术运算符 68 5.2.3 赋值运算符 73 5.2.4 关系运算符 75 5.2.5 逻辑运算符 76 5.2.6 位运算符 78 5.2.7 条件运算符 78 5.2.8 其他运算符 80 5.3 表达式的运算顺序 81 5.3.1 运算符优先级 81 5.3.2 运算符的结合性 82 5.3.3 自增自减运算符注意事项 83 5.4 语句 84 5.4.1 语句书写方式 84 5.4.2 表达式语句 85 5.4.3 空语句 86 5.4.4 复合语句 86 5.4.5 标号语句 87 第6章 格式化输出/输入 88 6.1 格式化输出——printf函数 88 6.1.1 printf函数的格式 88 6.1.2 printf的格式字符 89 6.1.3 修饰符 91 6.1.4 printf函数实例 93 6.1.5 动态设置输出宽度和精度 98 6.1.6 printf函数的返回值 99 6.1.7 理解输出列表 99 6.2 格式化输入——scanf函数 102 6.2.1 scanf函数的格式 102 6.2.2 scanf函数格式字符串 103 6.2.3 scanf函数注意问题 105 6.2.4 scanf函数的返回值 107 6.3 其他常用输入/输出函数 107 6.3.1 getchar函数 108 6.3.2 getch函数 108 6.3.3 gets函数 109 6.3.4 putch函数 110 6.3.5 puts函数 110 第7章 分支结构程序设计 112 7.1 分支程序流程 112 7.2 if语句 113 7.2.1 基本if语句 113 7.2.2 if else语句 116 7.2.3 再论条件表达式 117 7.3 嵌套if语句 117 7.3.1 嵌套if语句的形式 117 7.3.2 if语句嵌套实例 118 7.4 if else if语句 122 7.4.1 if else if语句格式 122 7.4.2 if else if实例 123 7.5 多路分支——switch 123 7.5.1 switch语句格式 123 7.5.2 switch实例 125 7.5.3 使用多重标号 126 7.5.4 switch和if比较 129 第8章 循环结构程序设计 130 8.1 循环结构的程序流程 130 8.2 while循环 131 8.2.1 while语句格式 131 8.2.2 理解循环条件 134 8.2.3 理解循环体 135 8.2.4 while循环需注意的问题 137 8.3 for循环 137 8.3.1 for语句格式 138 8.3.2 for语句的各种样式 139 8.3.3 for语句实例 142 8.4 do while语句 144 8.4.1 while语句不足 144 8.4.2 do while语句格式 146 8.5 循环嵌套 147 8.5.1 了解循环嵌套 147 8.5.2 循环嵌套的结构 149 8.5.3 循环嵌套实例 150 8.6 break和continue语句 154 8.6.1 break语句 154 8.6.2 continue语句 155 8.7 goto语句 157 第9章 使用数组 159 9.1 了解数组 159 9.1.1 使用数组的好处 159 9.1.2 数组的概念 160 9.1.3 数组的维数 161 9.2 一维数组 162 9.2.1 一维数组的声明 162 9.2.2 一维数组的存储 164 9.2.3 引用一维数组 165 9.2.4 一维数组的初始化 167 9.3 二维数组 168 9.3.1 二维数组的声明 169 9.3.2 二维数组的存储 169 9.3.3 二维数组的初始化 173 9.4 字符数组和字符串 174 9.4.1 字符数组 174 9.4.2 了解字符串 175 9.4.3 字符串的输入输出 177 9.5 数组的实例 178 9.5.1 字符串反转 178 9.5.2 查找最大数 179 9.5.3 数据排序 180 第10章 使用函数 183 10.1 函数的概念 183 10.1.1 函数概念 183 10.1.2 函数的分类 184 10.1.3 定义函数 185 10.1.4 main函数 186 10.2 函数的工作过程 187 10.2.1 程序结构 187 10.2.2 函数执行过程 187 10.3 编写函数 188 10.3.1 函数头 188 10.3.2 返回类型 189 10.3.3 参数列表 189 10.3.4 函数体 190 10.3.5 函数原型 190 10.4 函数的参数 192 10.4.1 参数传递过程 192 10.4.2 值调用 192 10.4.3 引用调用 194 10.4.4 数组调用 196 10.4.5 main的参数 198 10.5 函数调用 200 10.5.1 函数调用方式 201 10.5.2 被调函数的说明 201 10.5.3 返回函数结果 203 10.5.4 函数的嵌套调用 204 10.6 递归函数 205 10.6.1 函数的递归调用 205 10.6.2 递归的基本原理 207 10.6.3 递归函数设计 208 10.6.4 递归的优缺点 210 第11章 模块化程序设计方法 211 11.1 模块化程序设计概念 211 11.2 程序模块结构 212 11.2.1 C程序的组织 212 11.2.2 多文件模块的编译链接 213 11.2.3 文件包含 215 11.2.4 内部函数与外部函数 216 11.3 变量的作用域 217 11.3.1 局部变量 217 11.3.2 在复合语句中的变量 218 11.3.3 全局变量 219 11.3.4 全局变量和局部变量同名 222 11.4 变量的存储类型 223 11.4.1 了解存储类型 223 11.4.2 自动变量 224 11.4.3 寄存器变量 225 11.4.4 外部变量 226 11.4.5 静态变量 227 11.5 函数、文件、变量的关系 229 第12章 使用指针 230 12.1 内存和变量 230 12.1.1 计算机内存 230 12.1.2 变量的存储 231 12.2 指针和简单变量 232 12.2.1 指针的概念 232 12.2.2 创建指针 233 12.2.3 初始化指针 234 12.2.4 使用指针 235 12.2.5 给函数传递指针 238 12.3 指针和数组 239 12.3.1 指针、数组和地址间的关系 239 12.3.2 指针运算 241 12.3.3 用指针操作数组元素 242 12.4 指向多维数组的指针 245 12.4.1 理解二维数组的地址 245 12.4.2 多维数组的指针表示 247 12.4.3 指向多维数组的指针变量 248 12.4.4 数组名作为函数的参数 252 12.4.5 指向数组的指针小结 255 12.5 指针和字符串 256 12.5.1 字符串的指针表示 256 12.5.2 字符串指针作函数参数 258 12.5.3 字符数组和字符指针的区别 259 12.6 指针数组 260 12.6.1 指针数组的概念 261 12.6.2 用指针数组处理字符串 263 12.6.3 指针数组作函数参数 264 12.7 指向指针的指针 266 12.7.1 理解指向指针的指针 266 12.7.2 二级指针变量与数组 268 12.8 指针和函数 272 12.8.1 返回指针的函数 272 12.8.2 指向函数的指针 274 12.9 指针和const 276 12.9.1 用const控制指针 277 12.9.2 const的几种特殊用法 277 12.10 指针总结 278 12.10.1 明确分辨各种指针类型 278 12.10.2 理解指针的4项内容 279 第13章 结构、联合和枚举 280 13.1 结构的概念 280 13.1.1 定义结构类型 280 13.1.2 定义结构变量 281 13.1.3 使用结构变量 282 13.2 结构的嵌套 284 13.2.1 包含数组的结构 284 13.2.2 包含指针的结构 285 13.2.3 包含结构的结构 285 13.3 初始化结构变量 288 13.4 结构数组 289 13.4.1 结构数组的定义和引用 290 13.4.2 结构数组的初始化 291 13.4.3 结构数组实例 291 13.5 结构指针 292 13.5.1 定义结构指针 292 13.5.2 使用结构指针 293 13.5.3 用指针处理结构数组 294 13.6 向函数传递结构 295 13.6.1 传递结构变量的值 295 13.6.2 传递结构指针到函数 296 13.7 联合 297 13.7.1 定义联合类型 297 13.7.2 使用联合变量 298 13.7.3 在结构中嵌套联合类型 298 13.8 枚举 300 13.8.1 定义枚举类型 300 13.8.2 使用枚举变量 301 13.9 使用typedef 301 第14章 位运算和位域 303 14.1 了解二进制数 303 14.1.1 数据的存储 303 14.1.2 整数的二进制表示 304 14.1.3 实数的二进制表示 305 14.1.4 使用其他进制 305 14.2 位运算 307 14.2.1 位逻辑运算符 307 14.2.2 移位运算符 309 14.2.3 位运算的复合赋值运算符 310 14.2.4 位运算的用途 310 14.3 位域 311 14.3.1 定义位域结构 311 14.3.2 位域的使用 312 14.3.3 位域与联合的使用 314 第15章 文件输入/输出 316 15.1 文件与数据流 316 15.1.1 程序的输入/输出概念 316 15.1.2 流的概念 316 15.1.3 预定义的流 317 15.1.4 文件的基本概念 317 15.1.5 缓冲文件系统 318 15.2 文件的打开与关闭 318 15.2.1 文件指针 319 15.2.2 打开文件函数——fopen 319 15.2.3 关闭文件函数——fclose 321 15.3 从文件中读写字符 322 15.3.1 写字符函数——putc和fputc 322 15.3.2 读字符函数——getc和fgetc 323 15.3.3 合并文件 325 15.4 从文件中读写字符串 326 15.4.1 写字符串函数——fputs 326 15.4.2 读字符串函数——fgets 327 15.4.3 文件格式输出函数——fprintf 328 15.4.4 文件格式输入函数——fscanf 330 15.5 二进制文件的读写 332 15.5.1 写入整型数据函数——putw 332 15.5.2 读取整型数据函数——getw 333 15.5.3 写数据块函数——fwrite 333 15.5.4 读数据块函数——fread 335 15.5.5 文件检测函数 337 15.6 文件的随机读写 337 15.6.1 获取当前位置函数——ftell 337 15.6.2 重置文件位置指针函数——rewind 339 15.6.3 设置文件位置指针——fseek函数 340 15.7 管理缓冲区 342 15.8 输入/输出的重定向 343 15.8.1 操作系统的重定向功能 344 15.8.2 重定向输出 344 15.8.3 重定向函数——freopen 345 15.9 文件管理 346 15.9.1 重命名文件 346 15.9.2 删除文件 347 15.9.3 复制文件 348 15.9.4 创建临时文件 349 第16章 预处理 351 16.1 预处理简介 351 16.1.1 预处理功能 351 16.1.2 预处理命令 351 16.2 宏定义命令——#define 352 16.2.1 无参数的宏 352 16.2.2 带参数的宏 354 16.2.3 预处理操作符#和## 355 16.3 条件编译 357 16.3.1 使用#if 357 16.3.2 使用#ifdef和#ifndef 359 16.3.3 使用#defined和#undef 360 16.4 其他预处理命令 361 16.4.1 预定义的宏名 361 16.4.2 重置行号和文件名命令——#line 361 16.4.3 修改编译器设置命令——#pragma 362 16.4.4 产生错误信息命令——#error 362 16.5 内联函数 362 第2篇 C语言高级程序设计 第17章 处理字符串 365 17.1 字符串的存储 365 17.1.1 字符串的静态存储 365 17.1.2 字符串的动态存储 366 17.2 字符和字符串检测函数 368 17.2.1 字符检测函数简介 368 17.2.2 检测字符串长度函数——strlen 369 17.3 查找字符串 370 17.3.1 查找字符位置——strchr 370 17.3.2 查找相同字符——strspn 372 17.3.3 查找包含字符位置——strcspn 372 17.3.4 查找包含字符——strpbrk 373 17.3.5 查找子串——strstr 375 17.4 比较字符串 376 17.4.1 比较字符串——strcmp 376 17.4.2 比较部分字符串——memcmp 377 17.4.3 比较时忽略大小写——stricmp 379 17.5 连接字符串 380 17.5.1 连接字符串——strcat 380 17.5.2 连接部分字符——strncat 382 17.6 复制字符串 383 17.6.1 复制字符串——strcpy 383 17.6.2 复制部分字符——strncpy 384 17.6.3 更省事的复制函数——strdup 385 17.7 字符和字符串的转换 386 17.7.1 大小写字符的转换 386 17.7.2 转换大小写字符串 387 17.7.3 字符串与数值的转换 388 17.8 其他字符串函数 389 17.8.1 字符串反转——strrev 389 17.8.2 替换字符串中的字符——strset 390 17.8.3 分解字符串——strtok 391 第18章 数学函数和时间函数 393 18.1 数学函数 393 18.1.1 三角函数 393 18.1.2 双曲三角函数 394 18.1.3 指数函数和对数函数 395 18.1.4 其他数学函数 398 18.2 日期时间函数 399 18.2.1 表示日期时间的数据结构 399 18.2.2 获取日期时间 400 18.2.3 转换日期时间的表示形式 401 18.2.4 格式化日期时间 404 第19章 常用算法应用 408 19.1 排序 408 19.1.1 排序概述 408 19.1.2 冒泡排序法 409 19.1.3 选择排序法 410 19.1.4 插入排序法 411 19.1.5 Shell排序法 412 19.1.6 快速排序法 413 19.1.7 字符串的排序 414 19.2 查找 416 19.2.1 顺序查找 416 19.2.2 折半查找 417 19.3 队列 418 19.3.1 队列的概念 418 19.3.2 队列的操作 419 19.4 堆栈 422 19.4.1 堆栈的概念 422 19.4.2 堆栈的实现 422 19.5 链表 424 19.5.1 链表的概念 424 19.5.2 链表的基本操作 425 19.5.3 测试链表的功能 430 第20章 存储管理 432 20.1 内存组织方式 432 20.1.1 内存组织方式 432 20.1.2 堆和栈的比较 433 20.2 C语言的动态存储管理 434 20.2.1 分配内存函数——malloc 434 20.2.2 另一个分配内存的函数——calloc 436 20.2.3 调整已分配内存——realloc 437 20.2.4 释放分配的内存——free 439 20.2.5 丢失的内存 440 第21章 控制鼠标 442 21.1 鼠标驱动程序 442 21.1.1 通过中断访问鼠标驱动程序 442 21.1.2 新的开发环境 443 21.1.3 调用中断服务 444 21.2 鼠标库函数 445 21.2.1 定义头文件mouse.h 445 21.2.2 通过中断控制鼠标 446 21.2.3 初始化鼠标 447 21.2.4 复位鼠标 447 21.2.5 移动鼠标 448 21.2.6 显示鼠标指针 448 21.2.7 隐藏鼠标指针 449 21.2.8 获取按下按钮信息 449 21.2.9 获取释放按钮信息 450 21.2.10 获取鼠标状态信息 451 21.2.11 获取鼠标指针位置信息 451 21.2.12 保存鼠标指针位置 452 21.2.13 捕获键盘或鼠标 452 21.2.14 鼠标指针区域 453 21.3 鼠标应用实例 454 21.3.1 了解屏幕函数 454 21.3.2 实例程序 455 第22章 数据加密 458 22.1 密码技术的概念 458 22.2 加密方法 458 22.2.1 换位加密法 459 22.2.2 替换加密法 462 22.2.3 位加密法 464 22.3 MD5加密简介 466 22.3.1 MD5简介 466 22.3.2 MD5算法描述 467 第23章 数据压缩 469 23.1 数据压缩基础 469 23.1.1 数据压缩概述 469 23.1.2 数据压缩相关概念 469 23.1.3 常见压缩算法简介 470 23.2 LZW原理 471 23.2.1 LZW的相关概念 471 23.2.2 LZW压缩过程 471 23.2.3 LZW解压缩过程 473 23.3 LZW实现代码 473 23.3.1 程序构思 473 23.3.2 定义数据结构 474 23.3.3 压缩函数 474 23.3.4 搜索哈希表 476 23.3.5 输出压缩数据 477 23.3.6 解压缩函数 478 23.3.7 输入编码数据 480 23.3.8 解码函数 480 23.3.9 主程序 481 第24章 图形编程 483 24.1 显示系统简介 483 24.1.1 显示系统基本概念 483 24.1.2 显示卡种类 484 24.1.3 显示模式 484 24.2 绘图基础 486 24.2.1 设置显示模式 486 24.2.2 控制显示缓冲区 487 24.3 图形函数 488 24.3.1 绘制点 488 24.3.2 读取点的信息 489 24.3.3 绘制直线 489 24.3.4 绘制矩形 491 24.3.5 绘制圆 492 24.3.6 绘制多边形 493 24.4 编辑图形 494 24.4.1 复制图形 494 24.4.2 移动图形 495 24.4.3 保存图形 495 24.4.4 载入图形 496 第25章 调用汇编程序 498 25.1 AT&T汇编简介 498 25.1.1 了解汇编的两种格式 498 25.1.2 将C语言输出为汇编程序 500 25.2 GCC内嵌汇编 501 25.2.1 基本内联汇编 501 25.2.2 扩展内联汇编 501 25.2.3 内联汇编实例 505 25.3 调用汇编程序 507 25.3.1 C编译程序的调用约定 507 25.3.2 C语言调用汇编的结构 508 25.3.3 建立汇编函数的框架 509 25.3.4 调用汇编函数 510 第26章 程序设计实例 512 26.1 程序分析 512 26.1.1 模块划分 512 26.1.2 设计数据结构 513 26.2 头文件 514 26.3 主模块 515 26.3.1 main函数 515 26.3.2 检查初始化状态 516 26.3.3 检查登录密码 517 26.3.4 从文件创建链表 518 26.3.5 显示主菜单 519 26.3.6 将链表保存到文件 522 26.4 输入员工信息 523 26.5 查询员工信息 525 26.5.1 查询子菜单 525 26.5.2 查询函数 527 26.5.3 通用显示函数 528 26.6 显示员工信息 529 26.7 修改员工信息 530 26.7.1 修改子菜单 530 26.7.2 修改数据 532 26.8 删除员工信息 533 26.9 统计员工信息 535 26.10 重设系统密码 535 附录A ASCII关键字 537 附录B ANSI C关键字 540 实例目录 【程序1-1】第一个C语言程序 9 【程序2-1】C语言程序组成示例 14 【程序3-1】欢迎程序 25 【程序4-1】符号常量示例 40 【程序4-2】摄氏温度转换为华氏温度 44 【程序4-3】整型数据所占内存空间的大小 46 【程序4-4】整型数据输出示例 51 【程序4-5】整数转换为十六进制和八进制示例 52 【程序4-6】使用转义字符示例 55 【程序4-7】字符型数据输出示例 56 【程序4-8】实数类型占用的字节示例 57 【程序4-9】实型数据输出示例1 59 【程序4-10】实型数据输出示例2 60 【程序4-11】实型数据输出示例3 61 【程序4-12】char类型和int类型之间的转换示例 62 【程序4-13】将float转换为int类型示例 62 【程序4-14】强制类型转换示例 63 【程序4-15】复数操作示例 64 【程序5-1】输出逗号表达式的结果 67 【程序5-2】十进制数转换为二进制数示例(不使用循环) 69 【程序5-3】十进制数转换为二进制数示例(使用循环) 70 【程序5-4】自增运算符的后缀模式和前缀模式 71 【程序5-5】使用复合赋值运算符 75 【程序5-6】关系运算符示例 76 【程序5-7】逻辑运算符示例 77 【程序5-8】条件运算符示例 79 【程序5-9】使用sizeof运算符 80 【程序6-1】printf函数示例 89 【程序6-2】printf函数不同格式串输出示例 90 【程序6-3】printf函数输出最小宽度控制示例 91 【程序6-4】printf函数输出精度控制示例 92 【程序6-5】printf函数输出字符示例 94 【程序6-6】printf函数输出整数示例 95 【程序6-7】printf函数输出实数示例 96 【程序6-8】printf函数输出字符串示例 97 【程序6-9】printf函数动态设置输出宽度和精度示例 98 【程序6-10】printf函数的返回值示例 99 【程序6-11】printf函数输出列表示例1 100 【程序6-12】printf函数输出列表示例2 100 【程序6-13】scanf函数示例 102 【程序6-14】scanf函数不能控制输入精度示例 105 【程序6-15】scanf函数使用非格式字符示例 106 【程序6-16】scanf函数返回值示例 107 【程序6-17】getchar函数示例 108 【程序6-18】getch函数示例 109 【程序6-19】gets函数示例 109 【程序6-20】putch函数示例 110 【程序6-21】puts函数示例 111 【程序7-1】用if语句求最大数 114 【程序7-2】用if语句对两个数排序 115 【程序7-3】用if else语句对两个数排序 116 【程序7-4】检查输入字符类型示例(if语句嵌套) 119 【程序7-5】三个数排序示例(if语句嵌套方法) 120 【程序7-6】三个数排序示例(交换方法) 121 【程序7-7】检查输入字符类型示例(if else if语句) 123 【程序7-8】整数转换为中文星期名称(switch语句) 125 【程序7-9】switch语句多重标号示例(错误结果) 126 【程序7-10】分档计算运费(switch语句) 127 【程序8-1】求连续自然数之和示例(while语句,计数器递增) 132 【程序8-2】求连续自然数之和示例(while语句,计数器递减) 134 【程序8-3】求连续自然数之和示例(优化后的代码) 135 【程序8-4】求连续自然数之和示例(for语句) 139 【程序8-5】省略初始化部分的for循环示例 139 【程序8-6】改变for循环的循环变量递增方式示例 141 【程序8-7】用for循环输出指定期间的字符示例 142 【程序8-8】用for循环输出ASCII代码表示例 143 【程序8-9】用while循环显示菜单示例 144 【程序8-10】用do while循环显示菜单示例 146 【程序8-11】循环嵌套输出示例 148 【程序8-12】九九乘法表 150 【程序8-13】九九乘法表示例(优化后的代码) 151 【程序8-14】百钱买百鸡示例(循环嵌套) 152 【程序8-15】百钱买百鸡代码优化示例 153 【程序8-16】用break语句跳出循环示例 155 【程序8-17】用continue语句跳过循环部分语句示例 156 【程序8-18】用goto语句编写循环代码示例 157 【程序9-1】统计学生成绩示例(不使用数组) 159 【程序9-2】统计学生成绩示例(使用数组) 160 【程序9-3】使用变长数组示例(C99标准) 163 【程序9-4】越界访问数组示例 166 【程序9-5】输出未初始化的数组元素示例 167 【程序9-6】按线性方式输出二维数组元素示例 170 【程序9-7】输出数组各元素的内存地址示例 171 【程序9-8】字符数组示例 175 【程序9-9】输出字符数组示例 177 【程序9-10】字符串反转示例 179 【程序9-11】输出数组中的最大数示例 180 【程序9-12】数组元素排序示例 181 【程序10-1】求最大值函数示例 185 【程序10-2】函数返回值示例 189 【程序10-3】函数返回值示例 191 【程序10-4】函数的值调用示例 193 【程序10-5】函数的引用调用示例 194 【程序10-6】通过指针传递参数示例 195 【程序10-7】函数的数组调用示例 197 【程序10-8】main函数的参数示例 199 【程序10-9】输出用户输入的命令行参数示例 200 【程序10-10】函数嵌套调用示例 204 【程序10-11】函数递归调用示例 205 【程序10-12】汉诺塔(递归程序示例) 208 【程序11-1】引用多个源程序文件示例 213 【程序11-2】局部变量示例 217 【程序11-3】复合语句中的变量示例 219 【程序11-4】全局变量示例1 220 【程序11-5】全局变量示例2 221 【程序11-6】同名全局变量和局部变量示例 222 【程序11-7】自动变量示例 224 【程序11-8】寄存器变量示例 226 【程序11-9】外部变量示例 226 【程序11-10】静态变量示例 228 【程序12-1】查看变量地址示例 232 【程序12-2】错误初始化指针示例 235 【程序12-3】取地址运算符和取内容运算符示例 236 【程序12-4】用指针引用变量示例 237 【程序12-5】通过指针交换数据示例 237 【程序12-6】指针和数组地址之间的关系示例 240 【程序12-7】用指针操作数组元素示例 242 【程序12-8】将指针作为数组名使用示例 243 【程序12-9】输出数组的地址和长度示例 245 【程序12-10】输出数组各维的地址和长度示例 246 【程序12-11】输出数组各元素的地址和长度示例 247 【程序12-12】初始化二维数组示例 248 【程序12-13】用指针变量初始化二维数组示例 249 【程序12-14】用指针变量指向数组的一行数据示例 251 【程序12-15】一维数组作函数参数示例 253 【程序12-16】使用指向一维数组的指针变量传递参数示例 254 【程序12-17】字符串数组、字符串指针使用示例 257 【程序12-18】字符串指针作函数参数示例 258 【程序12-19】用指针数组指向二维数组每一行示例 261 【程序12-20】二维数组指针示例 262 【程序12-21】用指针数组处理字符串示例 263 【程序12-22】指针数组作函数参数示例 264 【程序12-23】指向指针的指针示例 267 【程序12-24】用二级指针操作一维数组示例 268 【程序12-25】用二级指针操作二维数组示例 270 【程序12-26】用二级指针作函数参数示例 271 【程序12-27】指针型函数示例 272 【程序12-28】指向函数的指针示例1 274 【程序12-29】指向函数的指针示例2 275 【程序12-30】指针和const的关系示例 278 【程序13-1】结构和结构变量示例 283 【程序13-2】嵌套结构成员赋值、输出示例 286 【程序13-3】初始化结构示例 289 【程序13-4】结构数组示例 291 【程序13-5】用指针处理结构数组示例 294 【程序13-6】传递结构变量的值到函数示例 295 【程序13-7】结构中嵌套联合类型示例1 298 【程序13-8】结构中嵌套联合类型示例2 299 【程序14-1】位或运算示例 308 【程序14-2】位反运算示例 308 【程序14-3】位运算用途示例 310 【程序14-4】位域示例 313 【程序14-5】二进制转换(位域与联合的使用)示例 314 【程序15-1】保存用户输入内容示例 322 【程序15-2】从文件中读取字符示例 324 【程序15-3】合并文件示例 325 【程序15-4】向文件中增加内容示例 326 【程序15-5】将文件内容显示到屏幕示例 328 【程序15-6】格式化文件数据示例 329 【程序15-7】读取格式化文件数据示例 330 【程序15-8】将整型数据写入文件示例 332 【程序15-9】从文件中读取整型数据示例 333 【程序15-10】保存二进制文件示例 334 【程序15-11】读二进制文件示例 336 【程序15-12】获取文件位置指针示例 338 【程序15-13】重置文件位置指针示例 339 【程序15-14】设置文件位置指针示例 341 【程序15-15】刷新标准输入流stdin缓冲区示例 343 【程序15-16】重定向输出到显示器示例 344 【程序15-17】重定向输出到文件示例 345 【程序15-18】重命名文件示例 346 【程序15-19】删除文件示例 347 【程序15-20】复制文件示例 348 【程序15-21】临时文件使用示例 349 【程序16-1】无参数宏示例 353 【程序16-2】操作符#示例 355 【程序16-3】操作符##示例 356 【程序16-4】条件编译示例 358 【程序16-5】条件编译嵌套示例 359 【程序16-6】使用预定宏名示例 361 【程序16-7】#line命令示例 361 【程序16-8】内联函数示例 363 【程序17-1】字符串动态存储示例 367 【程序17-2】字符检测函数示例 368 【程序17-3】字符串长度函数示例 369 【程序17-4】查找字符位置示例 370 【程序17-5】查找相同字符示例 372 【程序17-6】查找包含字符位置示例 373 【程序17-7】查找包含字符示例 374 【程序17-8】查找子串示例 375 【程序17-9】比较字符串示例 376 【程序17-10】比较部分字符串示例 378 【程序17-11】忽略大小写比较字符串示例 379 【程序17-12】连接字符串示例 381 【程序17-13】连接部分字符示例 382 【程序17-14】复制字符串示例 383 【程序17-15】复制部分字符示例 384 【程序17-16】用dup函数复制字符串示例 385 【程序17-17】大小写字符转换示例 386 【程序17-18】字符串大小写转换示例 387 【程序17-19】字符串与数值转换示例 388 【程序17-20】字符串反转示例 389 【程序17-21】替换字符示例 390 【程序17-22】分解字符串示例 391 【程序18-1】三角函数sin示例 394 【程序18-2】双三曲函数示例 395 【程序18-3】exp函数示例 396 【程序18-4】用frexp函数分解尾数和指数示例 396 【程序18-5】用ldexp函数组合实数示例 397 【程序18-6】ceil和floor函数示例 398 【程序18-7】modf函数示例 399 【程序18-8】获取日期时间示例 400 【程序18-9】转换日期时间表示形式示例 401 【程序18-10】秒数转换为对应的日期示例 402 【程序18-11】日期转换为秒数示例 403 【程序18-12】日期转换为字符串示例 404 【程序18-13】显示当前日期示例 407 【程序19-1】冒泡排序法示例 409 【程序19-2】选择排序法示例 411 【程序19-3】插入排序法示例 411 【程序19-4】Shell排序法示例 412 【程序19-5】快速排序法示例 413 【程序19-6】字符串排序示例 414 【程序19-7】顺序查找示例 416 【程序19-8】折半查找示例 418 【程序19-9】队列操作示例 419 【程序19-10】堆栈操作示例 423 【程序19-11】链表操作示例 425 【程序20-1】不同类变量分配内存空间示例 433 【程序20-2】用malloc函数动态分配内存创建动态数组示例 435 【程序20-3】用realloc函数动态分配内存示例 437 【程序20-4】用free函数释放分配内存示例 439 【程序20-5】内存分配丢失示例 440 【程序20-6】分配所有可用内存示例 441 【程序21-1】头文件,包含控制鼠标的函数原型定义 445 【程序21-2】控制鼠标的函数代码 446 【程序21-3】初始化鼠标函数代码 447 【程序21-4】复位鼠标函数代码 447 【程序21-5】移动鼠标函数代码 448 【程序21-6】显示鼠标指针函数代码 448 【程序21-7】隐藏鼠标指针函数代码 449 【程序21-8】获取按下按钮信息函数代码 450 【程序21-9】获取释放按钮信息函数代码 450 【程序21-10】获取鼠标状态信息函数代码 451 【程序21-11】获取鼠标指针位置信息函数代码 451 【程序21-12】保存鼠标指针位置函数代码 452 【程序21-13】捕获鼠标或键盘按钮函数代码 453 【程序21-14】判断鼠标指针区域代码 454 【程序21-15】测试鼠标库函数的代码 455 【程序22-1】换位加密法示例 459 【程序22-2】替换加密法示例 463 【程序22-3】位加密法示例 465 【程序23-1】LZW压缩算法头文件 474 【程序23-2】压缩函数代码 475 【程序23-3】搜索哈希表函数代码 477 【程序23-4】输出压缩数据函数代码 477 【程序23-5】解压缩函数代码 478 【程序23-6】输入编辑数据函数代码 480 【程序23-7】解压函数代码 480 【程序23-8】压缩主程序代码 481 【程序24-1】设置显示模式函数代码 486 【程序24-2】绘制点的函数代码(调用BIOS功能) 488 【程序24-3】绘制点的函数代码(直接存取显示内存) 489 【程序24-4】读取点信息的函数代码 489 【程序24-5】绘制直线的函数代码 490 【程序24-6】绘制矩形的函数代码 491 【程序24-7】绘制实心矩形的函数代码 491 【程序24-8】绘制圆的函数代码 492 【程序24-9】绘制实心圆的函数代码 493 【程序24-10】绘制多边形的函数代码 493 【程序24-11】绘制随机多边形的代码 494 【程序24-12】复制图形的函数代码 494 【程序24-13】移动图形的函数代码 495 【程序24-14】保存图形的函数代码 495 【程序24-15】载入图形的函数代码 496 【程序24-16】测试绘制函数的代码 497 【程序25-1】将C语言编译为汇编程序示例(C源程序) 500 【程序25-2】将C语言编译为汇编程序示例(汇编程序) 500 【程序25-3】简单内联汇编示例 503 【程序25-4】包含输入部分的内联汇编示例 504 【程序25-5】输出字符串的内联汇编示例 505 【程序25-6】读取寄存器值的内联汇编示例 506 【程序25-7】C语言函数调用约定示例 507 【程序25-8】add函数(C源程序) 508 【程序25-9】add函数编译后的汇编程序 508 【程序25-10】两数相乘的汇编程序示例 509 【程序25-11】C语言调用汇编程序示例 510 |
随便看 |
百科全书收录4421916条中文百科知识,基本涵盖了大多数领域的百科知识,是一部内容开放、自由的电子版百科全书。