C语言实践教程

C语言实践教程"

作者:郑保平、高屹
ISBN:9787302213000
定价:¥21
字数:千字
页数:
出版时间:2010.02.01
开本:
版次:1-1
装帧:
出版社:清华大学出版社
简介

本书较全面而又系统地讲述了C语言及其程序设计方法。

全书共分为两个部分:第一部分是C语言程序设计,系统地对C语言的基本语法和基本技巧加以介绍;第二部分是上机实验,内容包括编程思路、设计方法、程序代码、调试过程等,用于提高学生的实际程序设计能力。

本书从C程序实例开始,由浅入深地进行介绍,通过典型例题对重点部分进行强化,符合程序设计学习的规律。本书的例题和上机综合实验全部在Visual C++ 6.0环境下调试通过。

本书主要用作高等院校计算机相关专业教材,也可作为广大计算机爱好者学习C语言的参考书。

前言

笔者开始学习C语言是在1990年,那时C语言作为一种“新的编程语言”已经风靡世界。那一年,我买了一套Microsoft C 6.0的参考丛书,价格是160元。那一年,我的月工资是140元。

那时C语言编程还是“新技术”,在那以后的两年中,我用C编写了很多程序。1993年以后,就开始用C++编写“基于Windows的应用程序”了。

现在,大家都在学习C语言,不知还有没有人因为学习了C而兴奋,但可以肯定,再也不会有人因为抱着一套160元的《C语言参考丛书》等待付款而激动万分了。C语言的作用已经发生了根本改变,对于绝大多数人来说,现在学习C语言仅仅是为了“继续学习”. 

如果你将来用 C++编程,学习C语言显然是继续学习 C++的必要基础。

如果改用其他编程语言,学习C语言也是进一步学习Java和 C# 等语言的直接基础。

即使不再使用“类C语言”家族的编程语言,你也会发现,其实各种编程语言的基本语法都是相似的。有了C语言的基础,再学习别的编程语言将会是极其简单的一件事情。

即使不考虑今后用何种技术来编程,学习C语言也是继续学习其他计算机专业相关课程的重要基础。没有这个基础,“数据结构”、“数据库”和“算法分析”等课程都将无法正常学习。

也许你不是计算机相关专业的人员,但只要是从事技术工作,就有可能使用到编程方面的知识。即使你可以确定今后不会从事编程工作,那你也应该学好C语言这门课程,因为这可能是你了解“编程”这个神秘而有趣世界的唯一机会。也就是说,只要你接受的是理工科专科及以上层次的教育,都应该学好C语言,绝大多数学校也正是这样安排的。

那么,如何才算学好C语言呢?由于C语言作为一门“编程语言”的作用越来越淡化,作为一门“学习语言”的作用越来越突出,所以近年大家都在探索C语言教学的改革方法,主要是为了降低C语言的学习难度。但采取的有些方法措施过于简单,往往是靠减少教学内容来降低难度,比如淡化甚至放弃指针运算的学习,理由是现在流行的一些编程语言,如Java和C#等,都不再支持指针运算。类似的内容还有文件操作、参数传递、枚举类型和位运算等。我们认为这些概念都是不能忽略的。C语言的这些概念直接反映了操作系统的操作方式,无论新的编程技术中如何实现,这些概念都会有参考价值,如指针,Java和C#中虽然不再使用“指针变量”,但“指针”的概念仍然是深入其中的。忽略这些概念,在一个不完整的框架下学习程序设计,很难达到应有的效果,本书对C语言的整体框架做了必要的坚持。

◆C语言实践教程前 言本书主要在以下目标上做了努力:

1.  降低学习难度

降低学习难度不能单靠减少内容,而是要靠改进方法。C语言之所以难学,主要是因为知识点的讲解比较枯燥,不易唤起学习兴趣,不易理解。其实现在大学的教室都有多媒体教学设备,编程爱好者也都有个人计算机,C语言的教学也具备了由讲解为主转变为演示为主的条件。本书采用完整的小例子来演示C语言相关知识点的执行效果,讲解部分是对程序的说明,对效果的解释,这样学生就容易接受了。本书还给出上机练习题,为教和学双方都提供方便。

2.  增强针对性

这里的针对性主要是指“继续学习”的针对性。对于C语言来说,后继课程主要有两类,一类是其他编程语言的学习,一类是后继专业课程的学习。

所谓“其他编程语言”,最直接的就是C++及其他类C语言家族的语言,如Java和C#等。这些语言的基本语法结构与C相同,但在使用习惯上可能有所不同。

本书抛开ANSI C标准的限制,将内容定位在“C++中C的部分”,为将来面向对象程序设计的学习打下直接基础。

所谓后继专业课程,包括“数据结构”、“数据库”和“算法分析”等。近年的教学实践中经常遇到这种情况:作为这些课程基础知识应该已经掌握的内容,学生在C语言的学习中并未认真涉及,如参数的传递方式、指针的使用和内存的动态申请等等,需要重新学,为教学带来了很大的不便。本书将部分数据结构中的简单算法或其基础内容引入作为讲解实例或应用实例,为计算机相关专业学生将来的专业基础课程学习打好基础,也为非计算机专业的学生做一些知识上的扩展。

3.  增强实用性

本书不仅介绍编程的理论和方法,还特别强调通过上机实践提高学生的编程能力。以往的C语言教材往往使用Turbo C等一些传统的C语言开发环境,这已经不能满足现代编程技术的教学需要。本书以Visual C++ 6.0为基本开发环境,用一定的篇幅对Visual C++ 6.0的编程和调试环境做较深入的介绍,既能激发同学们的学习兴趣,更能为今后更高级开发技术的学习打下良好的基础。至少在以后学习C++、C#、Visual Basic或Visual J#时,就不会有开发环境上的障碍了。本书的例题和上机综合实验全部在Visual C++ 6.0环境下调试通过,为提高学生的实践能力提供帮助。

4.  强调编程技巧和方法

无论用什么编程语言,对程序设计方法的根本认识都是一样的。本书着重强调了结构化程序设计的概念、方法和编程技巧,坚持“从现在就开始注重方法”的思想。第二部分的十个上机综合实验,内容包括问题的提出、编程思路、设计方法、程序代码、调试过程等详细介绍,用于提高学生的程序设计能力。

另外,学会上机调试也是学习程序设计的重要内容和基本要求,可以说不会调试程序就不可能实际地进行编程工作。通过调试发现程序中的错误和排除这些错误,对提高编程水平非常有效。因此,本书用了一定的篇幅来介绍程序的调试技巧。

本书共分为两个部分。

第一部分是C语言程序设计,系统地对C语言的基本语法和基本技巧加以介绍,是本书的主体部分,共11章。其中部分带“*”的内容为扩展内容或在今后学习中应用较少的内容,初次学习时可以跳过这些部分,不会对其他内容的学习带来影响,等将来用到时再回来查阅。第1章通过几个简单的示例程序,对C语言程序做一个初步介绍。第2章介绍数据类型、常量与变量、运算符和表达式等概念。第3章介绍常用的输入输出函数。第4章简要介绍程序设计方法和程序设计语言的基本概念,并进一步介绍结构化程序的基本控制结构。第5章介绍关系运算及选择结构程序设计。第6章介绍循环结构程序设计。第7章介绍数组的定义、引用、初始化及数组的应用。第8章介绍函数的使用、参数的传递及变量的作用域等内容。第9章介绍指针的概念和运算、指针在函数调用中的作用及指针与数组的关系等内容。第10章介绍结构、联合和枚举等类型。第11章介绍与文件操作相关的内容。

第二部分是上机实验,包括10次实验课的内容。每次实验内容的安排基本与第一部分的一章相对应,一般每次实验安排3个左右不同难度的题目,读者可以根据上机时间安排选择其中部分题目上机实践。

本书主要用作计算机相关专业教材,也可作为各类大专院校学生和广大计算机爱好者学习C语言的参考书。我们向教材的选用单位提供本书所有例题的源代码、所有实验题目的源代码、习题的参考答案及电子教案。由于作者水平有限,书中难免会存在一些不足之处,敬请读者批评指正。

编 者 2009年7月

目录

第一部分 C语言程序设计

第1章 C程序实例3

1.1 几个例子3

1.2 C的基本字符与词汇6

1.2.1 C语言的字符集6

1.2.2 词汇6

1.3 C程序的上机操作8

1.3.1 启动Visual C++6.09

1.3.2 程序上机操作过程10

习题14

第2章 数据类型、运算及表达式16

2.1 数据和数据类型16

2.2 常量17

2.2.1 整型常量17

2.2.2 实型常量17

2.2.3 字符常量18

2.2.4 字符串常量18

2.2.5 符号常量--宏定义19

2.3 变量20

2.3.1 整型变量20

2.3.2 实型变量21

2.3.3 字符型变量21

2.4 赋值与算术运算22

2.4.1 赋值运算22

2.4.2 二元算术运算22

2.4.3 自加、自减运算24     2.4.4 复合赋值运算24

2.5 变量赋初值25

2.6 类型转换25

2.6.1 自动类型转换25

2.6.2 强制类型转换26

2.7 位运算26

2.7.1 按位与运算--&27

2.7.2 按位或运算--|28

2.7.3 按位异或运算--∧28

2.7.4 取反运算--~29

2.7.5 左移运算--<<29

2.7.6 右移运算-->>29

习题30

◆C语言实践教程目 录第3章 数据的输入输出32

3.1 字符输入输出函数32

3.1.1 字符输入函数getchar32

3.1.2 字符输出函数putchar33

3.1.3 文件包含34

3.2 格式输入输出函数35

3.2.1 格式输出函数printf35

3.2.2 格式输入函数scanf40

3.3 应用举例41

习题43

第4章 程序设计与程序结构45

4.1 程序设计概述45

4.1.1 结构化程序设计 45

4.1.2 面向对象的程序设计 46

4.2 程序设计与算法47

4.2.1 程序设计的基本步骤47

4.2.2 算法的设计与描述48

4.2.3 C程序的书写风格50

4.3 程序的基本控制结构50

4.4 顺序结构程序设计51

4.4.1 空语句和表达式语句51

4.4.2 复合语句52

4.5 应用举例52

习题54

第5章 选择结构程序设计55

5.1 关系运算和逻辑运算55

5.1.1 关系运算55

5.1.2 逻辑运算56

5.2 if语句57

5.2.1 if语句的3种形式57

5.2.2 条件运算61

5.3 switch语句62

5.4 应用举例64

习题67

第6章 循环程序设计69

6.1 while循环语句69

6.2 do-while循环语句70

6.3 for循环语句71

6.4 循环的退出74

6.4.1 break语句74

6.4.2 continue语句75

6.4.3 goto语句76

6.5 应用举例77

习题80

第7章 数组82

7.1 一维数组82

7.1.1 一维数组的定义82

7.1.2 一维数组的使用83

7.1.3 一维数组的初始化84

7.2 二维数组85

7.2.1 二维数组的定义85

7.2.2 二维数组的初始化86

7.2.3 二维数组的引用87

7.3 字符数组和字符串88

7.3.1 字符数组的定义89

7.3.2 字符串89

7.4 应用举例93

习题95

第8章 函数98

8.1 C程序与函数98

8.2 函数的定义和说明100

8.2.1 函数的定义100

8.2.2 函数的说明103

8.3 函数的调用103

8.3.1 函数调用的格式104

8.3.2 参数的传递105

8.4 应用举例1106

8.5 函数的嵌套调用与递归调用108

8.5.1 函数的嵌套调用108

8.5.2 函数的递归调用110

8.6 作用域与存储类112

8.6.1 作用域112

8.6.2 存储类115

8.6.3 内部函数与外部函数118

8.7 应用举例2119

习题122

第9章 指针125

9.1 指针的概念125

9.1.1 什么是指针125

9.1.2 指针变量的定义126

9.1.3 指针的运算126

9.2 指针作函数参数128

9.3 数组与指针131

9.3.1 一维数组与指针131

9.3.2 多维数组与指针136

9.3.3 字符指针与字符串137

9.4 应用举例141

习题143

第10章 结构、联合和枚举146

10.1 结构的概念146

10.1.1 结构类型的定义146

10.1.2 结构变量的说明147

10.1.3 结构变量的引用148

10.1.4 结构变量的初始化149

10.2 结构数组150

10.3 指向结构的指针152

10.3.1 指向结构的指针概述152

10.3.2 结构指针作函数参数155

10.4 动态数据结构156

10.4.1 内存的动态分配和释放函数157

10.4.2 链表159

10.5 联合167

10.5.1 联合的定义167

10.5.2 联合变量的说明与引用167

10.6 枚举169

10.7 类型定义171

10.8 应用举例173

习题177

第11章 文件179

11.1 C文件的概念179

11.1.1 C语言文件的特点179

11.1.2 二进制流和字符流179

11.1.3 缓冲与非缓冲文件系统180

11.2 文件类型指针181

11.3 文件的打开与关闭181

11.3.1 文件的打开--fopen函数182

11.3.2 文件的关闭--fclose函数183

11.4 文件的读写184

11.4.1 字符读写函数--fputc和fgetc184

11.4.2 字符串读写函数--fgets和fputs186

11.4.3 数据块读写函数--fread和fwrite188

11.4.4 格式化读写函数--fscanf和fprintf190

11.5 文件的定位191

11.5.1 rewind函数191

11.5.2 ftell函数192

11.5.3 fseek函数192

11.6 输入输出重定向194

11.7 应用举例195

习题196

第二部分 上 机 实 验

第12章 实验201

12.1 实验1 熟悉VC++编程环境与顺序结构程序设计201

12.2 实验2 选择结构程序设计202

12.3 实验3 循环结构程序设计203

12.4 实验4 程序调试204

12.5 实验5 利用数组的编程212

12.6 实验6 函数213

12.7 实验7 指针215

12.8 实验8 结构和枚举216

12.9 实验9 链表应用217

12.10 实验10 文件操作217

附录A 运算符的优先级及其结合性219

附录B 标准ASCII字符集221

附录C 常用的C库函数224

参考文献227

作者简介

编辑推荐

作者寄语

电子资料

www.luweidong.cn

下一个