本书编写的目的旨在提高C语言的教学质量,改善C语言难讲、难学、难以掌握的现状,着眼于培养学生的独立编程能力,书中按照难点分解、平滑过渡、循序渐进的思路组织结构框架和编配内容。各章均配有大量上机指导和习题,努力为课堂教学过渡到独立编程提供模拟环境和更大的知识惯性。本书分为五部分:第1~6章介绍了C语言程序设计的基础知识,这也是高级语言的共性和基础部分:第7—12章是C语言程序设计的提高部分,对C语言公认的难点(例如指针、结构体、预处理等)进行了详细的介绍和重点讲解;第13~14章为C语言高级编程部分,介绍了图形程序和字符处理程序的编写:第15和第18章为C语言程序设计的技巧部分,重点介绍了C语言的调试、编程风格以及部分编程的技巧;第16~17章介绍了C++的初步知识以及初步的编程方法,介绍C++对C的扩充以及面向对象编程的基础知识,以便让学生能快速地从C过渡到C++编程。\r\n 本书内容新颖,体系合理,逻辑性强,文字流畅,通俗易懂,是学习C和C++语言的理想教材,只要具有计算机的初步知识即可学会本书所介绍的内容,可作为大中专院校和各类计算机培训学校的专用教材,也可作为自学的参考用书。
第1章 程序设计基础\r\n\r\n1.1 程序设计的基本概念\r\n1.1.1 数据\r\n1.1.2 指令\r\n1.1.3 程序\r\n1.1.4 算法\r\n1.1.5 程序设计语言\r\n1.2 程序设计方法\r\n1.2.1 结构化程序设计方法\r\n1.2.2 面向对象程序设计\r\n1.3 C语言简介\r\n1.3.1 语言的发展历史\r\n1.3.2 C语言特点\r\n1.3.3 学习C语言的必要性\r\n1.3.4 C语言程序结构\r\n1.4 TurboC++编译器\r\n1.4.1 TurboC++集成开发环境\r\n1.4.2 TurboC++的命令行编译连接\r\n1.5 上机指导\r\n1.5.1 使用TurboC++编译器编译程序\r\n1.5.2 阅读和理解程序\r\n1.6 习题\r\n\r\n第2章 数据类型\r\n\r\n2.1 C语言的数据类型\r\n2.2 常量\r\n2.2.1 一般常量\r\n2.2.2 符号常量\r\n2.3 变量\r\n2.3.1 变量定义赋值\r\n2.3.2 整型变量\r\n2.3.3 实型变量\r\n2.3.4 字符变量\r\n2.3.5 变量初始化\r\n2.4 数值运算符与优先级\r\n2.4.1 算术运算符\r\n2.4.2 数值运算与优先级\r\n2.4.3 赋值运算符与表达式\r\n2.4.4 逗号运算符与表达式\r\n2.5 类型转换\r\n2.6 自加1、自减1运算\r\n2.6.1 自增运算符\r\n2.6.2 自减运算符\r\n2.7 数据的输入与输出\r\n2.7.1 #include命令与头文件\r\n2.7.2 格式输入与输出--printf与scanf\r\n2.7.3 输出/输入\r\n2.8 上机指导\r\n2.9 习题\r\n\r\n第3章 逻辑运算\r\n\r\n3.1 关系运算符及表达式\r\n3.1.1 关系运算符及其优先次序\r\n3.1.2 关系表达式\r\n3.2 逻辑运算符及表达式\r\n3.2.1 逻辑运算符及其优先顺序\r\n3.2.2 逻辑表达式\r\n3.3 if语句及条件运算符\r\n3.3.1 if语句\r\n3.3.2 条件运算符\r\n3.3.3 开关语句\r\n3.4 上机指导\r\n3.5 习题\r\n\r\n第4章 循环语句\r\n\r\n4.1 for循环\r\n4.2 while循环\r\n4.3 do-while循环\r\n4.4 break、continue和goto语句\r\n4.4.1 break语句\r\n4.4.2 continue语句\r\n4.4.3 goto语句\r\n4.5 几种循环的比较\r\n4.6 上机指导\r\n4.6.1 乘法表\r\n4.6.2 输出国际象棋棋盘\r\n4.6.3 求解最大公约数和最小公倍数\r\n4.7 习题\r\n\r\n第5章 数组\r\n\r\n5.1 一维数组\r\n5.1.1 一维数组的定义与赋值\r\n5.1.2 一维数组元素的引用\r\n5.1.3 一维数组应用举例\r\n5.1.4 一维数组的排序\r\n5.2 字符数组\r\n5.2.1 字符数组的声明与初值\r\n5.2.2 字符数组的引用\r\n5.2.3 字符串操作\r\n5.3 二维数组与多维数组\r\n5.3.1 二维数组的定义\r\n5.3.2 二维数组中元素的引用\r\n5.3.3 二维数组的初始化\r\n5.3.4 维数组程序举例\r\n5.4 多维数组\r\n5.5 字符数组应用举例\r\n5.5.1 统计单词\r\n5.5.2 输入三个字符串并找出其中最大者\r\n5.6 上机指导\r\n5.6.1 计算Fibonicci数列\r\n5.6.2 找出二维矩阵中的最小值及其位置\r\n5.6.3 身份验证\r\n5.7 习题\r\n\r\n第6章 函数\r\n\r\n6.1 函数的声明与定义\r\n6.1.1 函数声明\r\n6.1.2 函数定义\r\n6.2 函数的调用\r\n6.2.1 函数的简单调用\r\n6.2.2 函数的参数传递\r\n6.3 函数的调用\r\n6.3.1 函数的简单调用\r\n6.3.2 函数的嵌套调用\r\n6.3.3 函数的递归调用\r\n6.4 函数的作用范围\r\n6.4.1 内部函数\r\n6.4.2 外部函数\r\n6.5 函数变量的作用域\r\n6.5.1 局部变量\r\n6.5.2 形式参数\r\n6.5.3 全局变量\r\n6.6 变量的生存期\r\n6.6.1 auto类型\r\n6.6.2 static类型\r\n6.6.3 extern类型\r\n6.6.4 register类型\r\n6.7 上机指导\r\n6.7.1 定义函数求最大、最小值\r\n6.7.2 定义函数求直角三角形面积\r\n6.8 习题\r\n\r\n第7章 指针和地址\r\n\r\n7.1 指针变量的定义\r\n7.2 指针变量的引用\r\n7.3 地址运算\r\n7.3.1 运算方式\r\n7.3.2 指针和数组\r\n7.4 字符指针\r\n7.5 指针数组\r\n7.6 指针与函数\r\n7.6.1 指针函数\r\n7.6.2 指针作为函数参数\r\n7.6.3 指向函数的指针\r\n7.7 上机指导\r\n7.7.1 利用变量指针进行排序\r\n7.7.2 求一个字符串的长度\r\n7.8 习题\r\n\r\n第8章 预处理指令\r\n\r\n8.1 #define指令\r\n8.2 #error指令\r\n8.3 #include指令\r\n8.4 条件编译预处理指令\r\n8.5 #undef指令\r\n8.6 上机指导\r\n8.6.1 定义宏\r\n8.6.2 定义带参数的宏\r\n8.6.3 灵活应用#include\r\n8.7 习题\r\n\r\n第9章 文件操作\r\n\r\n9.1 标准文件函数\r\n9.1.1 文件的打开和关闭\r\n9.1.2 有关文件操作的函数\r\n9.2 非标准文件函数\r\n9.2.1 文件的打开和关闭\r\n9.2.2 读写函数\r\n9.2.3 随机定位函数\r\n9.3 上机指导\r\n9.4 习题\r\n\r\n第10章 结构体\r\n\r\n10.1 结构声明和结构变量定义\r\n10.2 结构变量的使用\r\n10.3 结构数组和结构指针\r\n10.3.1 结构数组\r\n10.3.2 结构指针\r\n10.4 结构的复杂形式\r\n10.4.1 嵌套结构\r\n10.4.2 位结构\r\n10.5 链表\r\n10.5.1 单链表的概念\r\n10.5.2 创建一个链表\r\n10.5.3 输出一个链表\r\n10.5.4 连接两个链表\r\n10.6 上机指导\r\n10.7 习题\r\n\r\n第11章 联合、枚举、类型说明\r\n\r\n11.1 联合的使用\r\n11.2 枚举类型的说明\r\n11.3 类型声明方法\r\n11.4 上机指导\r\n11.5 习题\r\n\r\n第12章 位运算\r\n\r\n12.1 概述\r\n12.1.1 字节与位\r\n12.1.2 数的表达方式\r\n12.1.3 符号的表达方式\r\n12.1.4 电压的编码表示\r\n12.1.5 声音、图像的编码表示\r\n12.2 位运算\r\n12.2.1 按位与运算符“&”\r\n12.2.2 按位或运算符“|”\r\n12.2.3 异或运算符“^”\r\n12.2.4 取反运算符“~”\r\n12.2.5 左移运算符“<<”\r\n12.2.6 右移运算符“>>”\r\n12.2.7 位运算符与赋值运算符结合,组成新的赋值运算符\r\n12.3 位段\r\n12.4 上机指导\r\n12.5 习题\r\n\r\n第13章 Turbo C++作图\r\n\r\n13.1 图形模式的初始化\r\n13.2 独立图形运行程序的建立\r\n13.3 屏幕颜色的设置和清屏函数\r\n13.4 基本图形函数\r\n13.4.1 画点\r\n13.4.2 画线\r\n13.4.3 任意封闭图形的填充\r\n13.4.4 有关图形窗口和图形屏幕操作函数\r\n13.4.5 图形模式下的文本输出\r\n13.5上机指导\r\n13.6 习题\r\n\r\n第14章 字符屏幕\r\n\r\n14.1 文本窗口的定义\r\n14.2 文本窗口颜色的设置\r\n14.3 窗口内文本的输入输出函数\r\n14.3.1 窗口内文本的输出函数\r\n14.3.2 窗口内文本的输入函数\r\n14.4 有关屏幕操作的函数\r\n14.5 上机指导\r\n14.6 习题\r\n\r\n第15章 程序调试\r\n\r\n15.1 Turbo C++集成调试器\r\n15.2 Turbo C++编译、连接和运行时的常见错误\r\n15.2.1 编译时的常见错误\r\n15.2.2 连接时的常见错误\r\n15.2.3 运行时的常见错误\r\n15.3 上机指导\r\n15.4 习题\r\n\r\n第16章 在C基础上C++的扩充\r\n\r\n16.1 简单数据类型的扩充\r\n16.1.1 引用变量\r\n16.1.2 无名联合体\r\n16.2 运算的扩充\r\n16.3 函数功能的扩充\r\n16.3.1 参数带默认值的函数\r\n16.3.2 函数重载\r\n16.4 对输入输出的扩充\r\n16.5 动态管理内存\r\n16.6 上机指导\r\n16.7 习题\r\n\r\n第17章 面向对象编程基础--类与对象\r\n\r\n17.1 概述\r\n17.1.1 对象\r\n17.1.2 类\r\n17.1.3 继承和派生\r\n17.1.4 类的属性和方法\r\n17.1.5 类的构造与析构\r\n17.1.6 成员类型\r\n17.2 类与对象的定义\r\n17.3 类的构造与析构\r\n17.3.1 构造函数\r\n17.3.2 带参数的构造函数\r\n17.3.3 重载的构造函数\r\n17.3.4 类的析构函数\r\n17.4 类的继承与派生\r\n17.4.1 派生类的声明\r\n17.4.2 成员覆盖\r\n17.4.3 派生类的构造函数\r\n17.4.4 从多个类继承\r\n17.5 上机指导\r\n17.6 习题\r\n\r\n第18章 C/C++语言编程格式与技巧\r\n\r\n18.1 C/C++语言的编程格式\r\n18.2 C语言“switch语句”的使用技巧\r\n18.3 “=”的使用技巧\r\n18.4 排序\r\n18.4.1 快速排序\r\n18.4.2 整数希尔排序\r\n18.4.3 整数堆排序\r\n18.5 单链表的基本运算\r\n18.5.1 查找\r\n18.5.2 插入(后插)\r\n18.5.3 删除\r\n18.6 上机指导\r\n18.7 习题\r\n\r\n附录A ASCII码表\r\n附录B C语言中的关键字\r\n附录C 部分库函数\r\n附录D 参考答案
C语言是现代程序设计中最活跃的高级语言之一。在可视化语言出现之前,目前最流行的Windows、UNIX、Linux三大操作系统都是用C语言编写的。实际上,可视化语言能够实现的东西,用C语言几乎都可以实现。在高校教学过程中,C语言的预期教学目标与实际教学效果存在较大的差距,C语言难教、难学、难以掌握的现象普遍存在。因此,本书从C语言体系的框架结构及内容出发,认真分析和探讨提高C语言课程教学质量的途径与方法,努力减轻来自教与学两个方面“三难”压力。当然能否实现初衷,还需要通过实践检验。
本书的特点之一是对C语言公认的难点进行了分解,例如指针、结构体、函数、数组等,本着先易后难、平滑过渡、循序渐进、易读易懂的思路进行了整体结构设计。在结构体系方面充分注意到章节知识点的渐进性,前后表述的一致性和疑难点的可理解性。
本书的特点之二是针对解题难、实验难的问题,结合全国计算机等级考试和高校计算机等级考试编写了配有答案的大量习题,这对于深化许多重要概念,掌握各章节知识要点、解读知识难点会有很大的帮助,也会使读者节约许多时间。C语言程序设计教学的最终目的是培养学生又快又好的编程能力。要缩短从课堂教学到转化为编程能力的时间差,最有效的方法就是阅读大量配有答案的习题,然后进行编程模拟训练,当编程模拟量积累到一定程度时,做题和编写程序就会很轻松。
本书的特点之三就是强调引导性教学,一方面强调教师精讲,另一方面强调学生完成自学内容,各章都针对所讲内容提出指导性的教学目标,并在每一章安排了上机指导。学生在学习各章节内容之前,教师应花10-20分钟时间讲解有关要点,引导学生应掌握哪些知识点,注意哪些问题。自学能力是大学生的重要培养目标之一。对自学部分的重要章节,建议至少要安排一次学生交流讨论的机会。
本书的特点之四就是安排了C++的内容,由于C语言是结构化和模块化的语言,它是面向过程的。在处理较小模块的程序时,程序员使用C语言比较得心应手。但是当问题比较复杂、程序的规模比较大时,结构化程序设计就显出它的不足。C程序的设计者必须细致地设计程序中的每一个细节。而C++虽然是在C语言的基础上开发出来的,除了保留原有的优点外,增加了面向对象的机制。C++与C完全兼容,用C语言写的程序可以不加修改地用于C++上,也可以混合编程。它既可以用于结构化程序设计,又可用于面向对象的程序设计。因此本书在16章和17章特别安排了C++的内容。为进一步学习C++内容打下良好的基础,当然,只有学好C语言,才能更进一步学习C++语言。
对于课时比较充分的院校(60-80课时),课时分配计划建议为:课堂教学与上机实习为40~50课时,其中包括若干次课堂讨论。大型作业安排3-4个,需要30-40课时为宜。安排大型作业的目的是为了系统巩固全书各章知识的要点和重点。对于课时比较紧张的学校,16~18章中C++的内容和编程技巧的内容可以作为自学内容课后学习。
我们的愿望是好的,工作是努力的,但限于时间、水平和能力,书中难免存在不妥之处,恳请读者多加批评指正。
编者
2003年6月