C语言是目前广泛流行的程序设计语言之一,是许多计算机专业人员和计算机爱好者编制软件强有力的开发工具,也是国内外大学普遍开设的计算机基础课程之一。
本书共13章,内容包括C语言的发展、特点与程序开发基本知识,基本数据类型、运算符和表达式,基本语句与顺序结构、选择结构、循环结构,数组,函数,指针,字符串,结构体、共用体、链表和枚举,编译预处理,位运算和文件。
本书作者长期从事高校的计算机程序设计语言的教学工作,有丰富的教学、科研经验。书中文字流畅、概念清楚、深入浅出,并穿插有大量的实例,可使读者迅速掌握C语言程序设计的基本技能。
本书可作为普通高等学校本、专科学生的教学用书,也可供计算机水平考试培训及工程技术人员自学使用。
C语言是一种使用方便、功能强大、移植性好、兼具高级语言和低级语言优点、能产生高效率目标代码的优秀的结构化程序设计语言。C语言作为一种既适合于开发系统软件又适合于开发应用软件的语言,已经成为计算机程序设计语言的主流语种之一,得到广泛的认同。
20多年来,除了计算机专业人员外,其他行业的广大计算机应用人员也喜欢使用C语言。全国计算机等级考试、全国计算机应用技术证书考试、全国计算机软件专业技术资格及水平考试等都将C语言纳入了考试范围。随着C语言在国内普及、推广、应用的需要,全国许多高校已不仅对计算机专业的学生,而且对广大非计算机专业的学生也相继开设了C语言程序设计课程。此外,成人教育、函授教育等同样广泛开设了C语言程序设计课程。
C语言与其他高级语言相比更复杂一些。这是因为它规则较多,涵盖的知识面更广,尤其是它涉及一些机器及环境方面的实现细节,使用灵活,难点较多,容易出错,初学者不易掌握。
本书的对象主要为大学非计算机专业的本科生和专科生。其特点如下:
(1)本着不苛求读者具备太多计算机专门知识也能学好C语言的愿望,尽量做到叙述通俗易懂,一方面要有利于组织教学,另一方面又要有利于自学。
(2)学习的目的在于应用。通过学习,读者应该能做到自己动手编程来解决问题。本教材强调了算法在编程中的重要性,同时也希望通过学习,读者能养成良好的编程习惯和风格。
第1章 C语言的发展、特点与程序开发基本知识
1.1 C语言的发展
1.1.1 C语言的起源与发展
1.1.2 C语言标准
1.2 C语言的特点
1.2.1 C语言的主要特点
1.2.2 C语言与C++,Java和C#
1.3 计算机语言与程序设计基本方法
1.3.1 计算机程序
1.3.2 计算机语言及其处理程序
1.3.3 程序设计的基本方法
1.4 C语言程序的基本结构与开发过程
1.4.1 简单的C语言程序介绍
1.4.2 C语言程序基本结构
1.4.3 C语言的字符集、关键字和标识符
1.4.4 C语言程序的开发过程
1.4.5 C语言程序的编程环境
1.5 算法及其表示
1.5.1 算法的概念
1.5.2 算法的表示
本章小结
思考题
第2章 基本数据类型、运算符和表达式
2.1 数据与数据类型
2.1.1 程序中数据的表示形式
2.1.2 c语言的数据类型
2.1.3 c语言基本数据类型
2.1.4 不同数据类型间的转换与运算
2.2 常量、变量和标准函数
2.2.1 常量
2.2.2 变量
2.2.3 库函数
2.3 运算符和表达式
2.3.1 算术运算符和算术表达式
2.3.2 关系运算符与关系表达式
2.3.3 逻辑运算符与逻辑表达式
2.3.4 条件运算符与条件表达式
2.3.5 赋值运算符与赋值表达式
2.3.6 逗号运算符与逗号表达式
本章小结
思考题
第3章 基本语句与顺序结构
3.1 C语言程序的基本语句
3.1.1 声明语句
3.1.2 表达式语句
3.1.3 函数调用语句
3.1.4 控制语句
3.1.5 复合语句
3.1.6 空语句
3.2 赋值语句
3.3 数据的输入输出
3.3.1 printf()函数
3.3.2 scanf()函数
3.3.3 putchar()函数
3.3.4 getchar()函数
本章小结
思考题
第4章 选择结构
4.1 用if条件语句实现选择结构
4.1.1 单分支if条件语句
4.1.2 双分支if条件语句
4.1.3 多分支if条件语句
4.1.4 if条件语句的嵌套
4.2 Switch语句
本章小结
思考题
第5章 循环结构
5.1 while语句
5.2 do.while语句
5.3 for语句
5.4 嵌套循环结构
5.5 b,reak语句、continue语句和goto语句
5.5.1 break语句
5.5.2 continue语句
5.5.3 goto语句
5.6 程序举例
5.6.1 循环程序举例
5.6.2 循环在数值计算中的应用
本章小结
思考题
第6章 数组
6.1 一维数组
6.1.1 一维数组的定义和存储
6.1.2 一维数组元素的引用
6.1.3 一维数组的初始化
6.1.4 一维数组元素的输入输出
6.1.5 一维数组应用举例
6.2 二维数组
6.2.1 二维数组的定义和存储
6.2.2 二维数组元素的引用
6.2.3 二维数组的初始化
6.2.4 二维数组的输入输出
6.2.5 二维数组应用举例
本章小结
思考题
第7章 函数
7.1 函数概述
7.2 函数的分类与定义
7.2.1 函数的分类
7.2.2 函数的定义
7.3 函数调用
7.3.1 函数调用的一般形式
7.3.2 函数的参数
7.3.3 函数的返回值
7.3.4 对被调用函数的说明
7.3.5 数组作为函数参数
7.4 函数的嵌套调用和递归调用
7.4.1 函数的嵌套调用
7.4.2 函数的递归调用
7.5 变量的作用域和生存期
7.5.1 变量的作用域
7.5.2 变量的存储类别
7.6 内部函数和外部函数
7.6.1 内部函数
7.6.2 外部函数
7.7 综合应用举例(一)
本章小结
思考题
第8章 指针
8.1 指针和指针变量的概念
8.1.1 地址和指针
8.1.2 指针变量
8.2 指向变量的指针变量
8.2.1 指针变量的定义
8.2.2 指针变量的引用
8.2.3 指针变量的初始化
8.2.4 指针变量作为函数参数
8.3 指针与数组
8.3.1 指针变量的运算
8.3.2 数组的指针和指向数组的指针变量
8.3.3 数组名作为函数参数
8.4 指针数组和指向指针的指针
8.4.1 指针数组
8.4.2 指向指针的指针
8.5 指针与函数
8.5.1 函数的指针与指向函数的指针变量
8.5.2 函数指针作为函数参数
8.5.3 返回指针的函数
本章小结
思考题
第9章 字符串
9.1 字符串的基本概念
9.2 用字符数组存储和处理字符串
9.2.1 字符数组的定义
9.2.2 字符数组的引用
11.1 编译预处理的概念
11.2 宏定义
11.2.1 不带参数的宏定义
11.2.2 带参数的宏定义
11.3 文件包含
11.4 条件编译
本章小结
思考题
第12章 位运算
12.1 位运算的概念
12.2 位运算符的含义及其使用
12.2.1 按位“与”运算(&)
12.2.2 按位“或”运算(I)
12.2.3 按位“非”运算(~)
12.2 一按位“异或”运算(n)
12.2.5 “左移”运算(>)
12.2.7 长度不同的两个数进行位运算的运算规则
12.2 ,8位复合赋值运算符
12.3 位段
12.3.1 位段的定义
12.3.2 位段的使用
本章小结
思考题
第13章 文件
13.1 文件与文件类型指针
13.1.1 文件
13.1.2 文件数据的存储形式
13.1.3 文件的处理方法
13.2 文件的打开与关闭
13.2.1 文件的打开
13.2.2 文件的关闭
13.3 文件的存取
13.3.1 概述
13.3.2 字符读写(函数fgetc()和函数fputc())
13.3.3 字符串读写(函数fgets()和函数fputc())
13.3.4 格式读写(函数fscanf()和函数fputc())
13.3.5 数据块读写(函数fread()和函数fwrite())
13.4 文件的定位
13.4.1 概述
13.4.2 函数rewind()
13.4.3 函数fseek()
13.4.4 fteU函数
13.5 综合应用举例(三)
本章小结
思考题
附录一 ASCII码表
附录二 C语言保留字
附录三 运算符的优先级和结合性
附录四 常用库函数
一、数学函数
二、字符函数
三、字符串函数
四、输入输出函数
参考文献
2.面向对象的程序设计
相对结构化程序设计而言,面向对象的程序设计是一个全新的概念。在面向对象的程序设计中,引入了类、对象、属性、事件和方法等一系列概念以及前所未有的编程思想。这里仅对面向对象的程序设计中的几个基本概念作简要说明,不作详细讨论。
在面向对象的程序设计中,最重要的思想是将数据(或称数据成员)与处理这些数据的例程(或称成员函数)全部封装到一个类中。只有属于该对象的成员函数才能访问自己的数据成员,从而达到了保护数据的目的。
每一种面向对象的程序设计语言都提供了三类机制,即封装、继承和多态。
“封装”就是把数据和操作这些数据的代码封装在对象类里,对外界是完全不透明的,对象类完全拥有自己的属性。程序设计者不需要了解对象类中的技术代码,也无法对它们加以控制和干预,而只需要重复调用其对象。
“继承”是允许在已有对象类的基础上构造新的对象类,即由一个类获取另一个对象类的过程。
“多态”是指发出同样的消息被不同的对象类接收时会产生不同的行为。这里所说的消息是指对类的成员函数的调用,而不同的行为是指不同的实现。利用多态性用户只需发送一般形式的消息,而将所有的实现留给接收信息的对象,然后对象根据所接收的消息做出相应的动作或操作。
面向对象程序的主要结构是:程序一般由类的定义和类的使用两部分组成。在主程序中定义各对象并规定它们之间传递消息的规律。程序中的一切操作都是通过向对象发送消息来实现的,对象接收到消息后启动有关方法完成相应的操作。