图书简介

本教材在作者20多年C/C++语言教学,特别是项目开发的基础上,站在初学者的角度,在注重基础知识学习的同时,以培养学生良好的编程规范意识和编程思想为重点精心编写,例程丰富,层次感强,非常适合作为学习C/C++语言的课程教材,本书可作为高等学校电类、信息类以及相关专业的本科教材,也可作为C语言的参考手册,自学使用。

章节目录

目  录

前  言

教学建议

第1章 概论1

1.1 C语言的入门知识1

1.1.1 计算机中的数据1

1.1.2 二进制编码系统3

1.1.3 微型计算机硬件的基本组成4

1.1.4 计算机系统的层次结构5

1.2 C语言的发展及特点8

1.2.1 C语言的发展过程8

1.2.2 C语言的特点9

1.3 C语言概览10

1.3.1 C语言程序的书写格式10

1.3.2 C语言程序的结构特点12

1.4 C语言的基本语法单位13

1.4.1 标识符14

1.4.2 关键字14

1.4.3 分隔符15

1.5 简单的输入/输出15

1.5.1 格式化输入/输出函数15

1.5.2 字符输入/输出函数17

1.6 运行C程序的一般步骤17

本章小结18

习题118

第2章 数据类型、运算符和表达式19

2.1 数据类型19

2.2 常量19

2.2.1 整型常量19

2.2.2 浮点型常量20

2.2.3 字符型常量21

2.2.4 字符串常量22

2.2.5 符号常量23

2.3 变量23

2.3.1 整型变量24

2.3.2 浮点型变量24

2.3.3 字符变量25

2.3.4 指针变量26

2.4 运算符和表达式26

2.4.1 表达式26

2.4.2 算术运算符与算术表达式27

2.4.3 关系运算符与关系表达式28

2.4.4 逻辑运算符与逻辑表达式28

2.4.5 自增和自减运算29

2.4.6 赋值运算符与赋值表达式30

2.4.7 条件运算符与条件表达式31

2.4.8 逗号运算符与逗号表达式31

2.5 位运算31

2.5.1 按位与运算符“&”32

2.5.2 按位或运算符“|”33

2.5.3 按位异或运算符“^”33

2.5.4 二进制左移运算符“<

2.5.5 二进制右移运算符“>>”34

2.5.6 按位取反运算符“~”34

2.6 各类数值型数据间的混合运算35

2.6.1 自动类型转换35

2.6.2 运算符的优先级36

2.7 输入/输出的进一步讨论37

2.7.1 格式化输出函数printf38

2.7.2 格式输入函数scanf39

本章小结41

习题241

第3章 程序和流程控制45

3.1 C语言程序的版式及语句45

3.1.1 C语言程序的版式45

3.1.2C语言的语句47

3.2 结构化程序设计和流程控制48

3.2.1 结构化程序设计48

3.2.2 C语言的流程控制语句和辅助控制语句48

3.3 if语句49

3.3.1 if语句的标准形式49

3.3.2条件分支嵌套50

3.4 switch多分支选择语句52

3.5 循环控制55

3.5.1 while语句55

3.5.2 for语句56

3.5.3 do-while语句58

3.5.4 从一重循环到多重循环58

3.6 辅助控制语句61

3.6.1 break语句61

3.6.2 continue语句62

3.6.3 goto 语句和标号64

3.7 典型程序编写方法举例64

本章小结74

习题375

第4章 函数77

4.1 C语言程序结构及模块化设计77

4.1.1 结构化软件及其优越性77

4.1.2 C语言程序的结构79

4.2 C语言函数的定义、原型和调用79

4.2.1 函数的定义79

4.2.2 函数的调用81

4.2.3 参数数目可变的函数82

4.3 变量的存储类型83

4.3.1 概述83

4.3.2 自动型变量84

4.3.3 寄存器型变量87

4.3.4 外部参照型变量88

4.3.5 静态型变量91

4.4 函数间的数据传递94

4.4.1 使用函数参数在函数间传递数据94

4.4.2 使用返回值传递数据97

4.4.3 使用全局变量传递数据98

4.5 递归函数99

本章小结101

习题4101

第5章 数组105

5.1 数组的定义和应用105

5.1.1 一维数组的定义和应用105

5.1.2 二维数组的定义和应用107

5.2 数组在函数间的传递 110

5.2.1 数组元素在函数间的传递110

5.2.2 数组在函数间的传递110

5.3 程序设计举例112

本章小结118

习题5119

第6章 指针120

6.1 基本概念120

6.1.1 指针变量的引入120

6.1.2 指针变量的定义与初始化121

6.1.3 指针的使用123

6.2 指针运算125

6.2.1 指针的算术运算125

6.2.2 指针的关系运算128

6.2.3 指针的赋值运算128

6.3 指针与数组131

6.3.1 一维数组与指针131

6.3.2 多维数组与指针137

6.4 指针数组与多级指针142

6.4.1 指针数组142

6.4.2 多级指针145

6.5 指针与函数150

6.5.1 返回指针的函数150

6.5.2 指向函数的指针153

6.6 综合应用158

本章小结162

习题6164

第7章 字符串167

7.1 字符串的基本概念167

7.1.1 字符167

7.1.2 字符串168

7.1.3 字符数组与字符指针168

7.2 字符串的相关库函数及其使用172

7.2.1 字符串输入输出函数173

7.2.2 字符串转换函数173

7.2.3 字符串处理函数174

7.2.4 字符串比较函数177

7.2.5 其他函数178

7.3 单个字符串的处理180

7.4 多个字符串的处理183

7.5 带参数的main函数186

7.6 综合举例188

本章小结196

习题7196

第8章 结构和联合202

8.1 结构及结构变量202

8.1.1 结构的定义202

8.1.2 结构变量的定义203

8.1.3 结构变量的使用形式和初始化204

8.2 结构数组与结构指针206

8.2.1 结构数组206

8.2.2 结构指针208

8.3 结构在函数间的数据传递212

8.4 位字段结构217

8.5 联合218

8.6 类型定义语句typedef221

8.6.1 用typedef语句定义新类型名221

8.6.2 新类型名的应用222

8.7 枚举类型224

8.7.1 枚举类型的定义和枚举变量的说明224

8.7.2 枚举类型的应用225

8.8 综合应用226

8.8.1 链表226

8.8.2 其他应用举例239

本章小结241

习题8241

第9章 C语言中的文件与图形247

9.1 文件的基本概念247

9.1.1 文本文件与二进制文件247

9.1.2 缓冲型文件系统247

9.2 文件类型指针248

9.3 文件操作与相关函数248

9.3.1 文件打开函数fopen ( )248

9.3.2 文件关闭函数fclose( )250

9.3.3 数据块读/写函数fread( )和fwrite( )250

9.3.4 格式化读/写函数fscanf( )和fprintf( )251

9.3.5 读/写字符函数fgetc( )和fputc( )251

9.3.6 读/写字符串函数fgets( )和fputs()251

9.3.7 rewind函数252

9.3.8 fseek函数252

9.3.9 文件检测函数252

9.4 文件函数应用综合举例253

9.5 C语言图形程序设计基本概念255

9.6 C语言中的图形函数255

9.6.1 初始化图形系统函数initgraph255

9.6.2 关闭图形系统函数closegraph256

9.6.3 设置画笔当前颜色及屏幕背景色257

9.6.4 画点及获取屏幕点的颜色257

9.6.5 设置线型及画直线257

9.6.6 画圆、椭圆、矩形及多边形258

9.6.7 填充图形函数259

9.7 图形方式下的文本常见操作函数260

9.7.1 视口操作函数261

9.7.2 图形方式下的文字输出261

9.7.3 屏幕图形的保存和恢复262

9.8 C语言图形操作综合应用举例263

本章小结264

习题9265

第10章 编译预处理268

10.1 宏定义268

10.1.1 不带参数的宏268

10.1.2 带参数的宏269

10.1.3 使用宏定义时应注意的问题270

10.2 文件包含271

10.3 条件编译272

10.4 其他编译预处理274

10.4.1 #error274

10.4.2 # pragma275

10.4.3 #line275

本章小结276

习题10277

第11章 从C到C++279

11.1 对象的思想279

11.1.1 从面向过程到面向对象279

11.1.2 类的说明280

11.1.3 C程序与C++程序对比281

11.2 从C到C++的过渡282

11.2.1 C++的I/O283

11.2.2 const和volatile访问修饰符283

11.2.3 引用286

11.2.4 作用域分辨符290

11.2.5 重载290

11.2.6 内联函数292

11.3 OOP设计思路294

11.3.1 面向对象程序设计的特征294

11.3.2 类设计示例295

11.3.3 类与结构体的区别297

本章小结298

习题11298

第12章 类与对象300

12.1 类的实例化—对象300

12.2 类的构造函数和析构函数301

12.2.1 构造函数301

12.2.2 重载构造函数和缺省构造函数302

12.2.3 析构函数304

12.3 new和delete306

12.4 this指针308

12.5 拷贝构造函数310

12.5.1 缺省拷贝构造函数311

12.5.2 自定义拷贝构造函数312

12.6 运算符重载314

12.7 类的特殊成员317

12.7.1 const成员317

12.7.2 静态成员321

12.8 对象成员324

12.9 对象数组与对象指针326

12.9.1 对象与数组326

12.9.2 对象与指针327

12.10 友元329

12.10.1 友元函数330

12.10.2 友元类332

本章小结333

习题12334

第13章 继承与多态335

13.1 继承的实现方式335

13.1.1 公有继承335

13.1.2 私有继承336

13.1.3 保护继承337

13.1.4 访问控制相关分析338

13.2 子类的构造函数顺序339

13.3 多继承342

13.3.1 多继承的概念342

13.3.2 多继承的构造函数342

13.3.3 多继承的二义性问题344

13.4 多态的实现方式346

13.4.1 虚函数的声明347

13.4.2 虚函数在派生类中的重新定义347

13.4.3 基类的析构函数是虚的351

13.5 虚函数表352

13.6 重载、隐藏和覆盖的区别355

本章小结357

习题13357

附录A ASCII码表362

附录B C语言中的关键字363

附录C C语言中的常用库函数364

参考文献369

前  言C语言已经成为全球程序员的公共语言,具有功能丰富、表达力强、使用灵活方便、应用面广、目标效率高及可移植性好等特点;既具有高级语言的优点,又具有低级语言的许多特点。因此,C语言在系统软件和应用软件的开发中得到了广泛的应用。

现在,我国高等学校的理工科专业都开设了C语言课程,并将之作为第一门计算机语言课程,有的甚至开设了C++课程,因此,我们认为作为高校的第一门计算机语言课程,由于其开课时间大多在一年级,在C语言的教学中应注意教学内容的循序渐进,特别要注意对学生编程思想和编程规范意识的培养,走好第一步;在此基础上,根据课时安排,适当扩充C语言的内容,讲授一些C++的基础知识。2005年,我们出版了《标准C语言程序设计及应用》,该书受到了广大读者的好评,如视角新颖、概念清楚、贴近实际应用、注意规范等,被国内多所高校相继在教学中采用。为了适应当前高校计算机教育的发展和教学改革的需要,我们总结多年教学经验,编写了本教材。本教材的特点体现在如下几个方面。

1)充分考虑到初学者的特点,整个教材采取了循序渐进、逐层推进的编写方式,如先介绍数据和表达式,再介绍简单程序设计及流程控制。

2)考虑到函数是C语言程序设计的核心和重点,较早地引入函数对学生加深C语言模块化的理解和应用是有帮助的,因此将“函数”这一章放在讲述简单程序设计和流程控制后,在“函数”这一章,主要介绍函数的基础部分,随后在讲述数组、指针、字符串及结构体等内容时再将函数不断深入。

3)重视学生的编程思想和编程规范意识的培养。在本书中,不论是一个简单的程序(一个函数,几条语句),还是相对复杂的程序,都充分体现了编程思想并力求做到编程(书写和编程设计)规范。

4)字符串是一类特殊的数据类型,在C语言的教学中有特殊的地方,学生最初对其理解起来会较为困难,这也是教学的难点之一。深刻体会字符串对学习指针和函数有很大的帮助,这一部分内容相对独立,所以本书将字符串单独作为一章,以利于学生的学习。

5)建立在C语言语法和基本结构之上的C++近年来得到了很好的发展和应用,为了使读者对C及C++有全面的了解,专门增加了3章,即第11章、第12章和第13章,第11章介绍了C和C++应用场合的区别,如何从C快速过渡到C++,第12章和第13章则主要介绍C++的基础,包括继承与多态方面的知识,供读者选用。

6)我们认为,学习计算机语言的最终目的是能够亲自动手编程,所以在教材中非常注意引导学生如何进行程序设计,包括简单的程序设计和复杂的程序设计。另外,在教材中我们还精选了大量例题,这些例题实用性强,都经过了上机验证。

在撰写本书的过程中,既参考了国内外多种教材,也融入了作者多年在华中科技大学自动化学院及电子与信息学院从事教学和科研的实践经验及体会,同时还吸收了同行专家学者们的建议。

本书由周纯杰教授、何顶新副教授、周凯波副教授和彭刚副教授进行整体规划,周纯杰教授完成统稿工作,其中第1章、第2章、第9章和第10章由周凯波副教授撰写,第3章和第5章由何顶新副教授撰写,第11章由张惕远讲师和彭刚副教授撰写,第12章由张惕远讲师撰写,第13章由彭刚副教授撰写,第4章、第6章、第7章、第8章和本书的其余部分由周纯杰教授撰写。

本书的出版得到了华中科技大学自动化学院及教务处的领导和同事们的关心与支持,机械工业出版社的有关同志为其出版也付出了辛勤的劳动,硕士研究生胡博文对资料的整理和程序的验证进行了有效的工作,另外硕士研究生彭源、张婷、汤晓庆、常昊、刘博、樊旭、姚干、徐高峰、邹育桃、曾玲也进行了部分资料整理和程序验证工作。在此一并表示感谢!由于作者水平有限,书中疏漏或错误之处恳请广大读者批评指正。

编 者2015年12月于华中科技大学

图书评论

程序设计教程用c 语言编程,程序设计教程:用C/C++语言编程相关推荐

  1. c语言程序设计教程岳莉答案,C++程序设计教程

    <职业教育课程改革实验教材系列:C语言程序设计教程>内容丰富.语言简练易懂,融趣味性与操作性于一体.可作为高职高专C语言程序课程的实用教材,也可以供初学编程者自学用书. ¥23.66定价: ...

  2. python语言程序设计实践教程答案实验六_Python程序设计实践教程

    书名:Python程序设计实践教程 定价:29.8 ISBN:9787115532602 作者:储岳中 薛希玲 版次:*1版 出版时间:2020-04 内容提要: 本书是Python语言程序设计的配套 ...

  3. java程序设计之网络编程基础教程_Java程序设计之网络编程基础教程

    基本信息 书名:Java程序设计之网络编程基础教程(21世纪高等学校计算机基础实用规划教材) :43.50元 作者:李芝兴 主编 出版社:清华大学出版社 出版日期:2012-12-1 ISBN:978 ...

  4. c语言程序设计:现代方法 勘误,C语言程序设计基础教程----勘误记录

    <C语言程序设计基础教程----勘误记录>由会员分享,可在线阅读,更多相关<C语言程序设计基础教程----勘误记录(4页珍藏版)>请在人人文库网上搜索. 1.程序设计基础教程C ...

  5. c语言实训教程课后答案第三版,C语言程序设计实训教程课后题答案.doc

    C语言程序设计实训教程课后题答案 C语言实训教程自测题答案 第一套 判断题 12345678910BABBBBBBAB 单项选择题 123456789101112131415CBACCBDBDAACA ...

  6. python编程案例教程书籍-Python程序设计案例教程

    第 1章 入门 1 1.1 Python 的发展历程 1 1.2 为什么使用Python 2 1.3 Python 可以做些什么 4 1.4 Python 的优点 7 1.5 Python 和其他语言 ...

  7. 只能输入字母的c语言程序设计教程课后答案,c语言程序设计基础教程_习题答案20120319...

    <c语言程序设计基础教程_习题答案20120319>由会员分享,可在线阅读,更多相关<c语言程序设计基础教程_习题答案20120319(54页珍藏版)>请在技术文库上搜索. 1 ...

  8. python编程案例教程-Python程序设计案例教程

    第 1章 入门 1 1.1 Python 的发展历程 1 1.2 为什么使用Python 2 1.3 Python 可以做些什么 4 1.4 Python 的优点 7 1.5 Python 和其他语言 ...

  9. 只能输入字母的c语言程序设计教程课后答案,c语言程序设计基础教程_习题答案解析.doc...

    c语言程序设计基础教程_习题答案解析.doc 习题答案 第1章 填空题 应用程序ONEFUNC.C中只有一个函数,这个函数的名称是__main . 一个函数由__函数头__和__函数体__两部分组成. ...

最新文章

  1. 一站式解决:隐马尔可夫模型(HMM)全过程推导及实现
  2. Springmvc与Struts2不同
  3. 汇编语言 ADC指令和SBB指令
  4. EVM反编译软件Porosity的使用-mac
  5. OpenCV向应用程序添加跟踪栏
  6. 电影《你好,李焕英》进入全球票房榜前100
  7. python怎么计算积分_Python 计算积分实例
  8. vue-router自动判断左右翻页转场动画
  9. html+css唯美登录页面,代码提供(效果展示)
  10. 《电子元器件的可靠性》——第3章可靠性试验
  11. 免Root–获取WIFI密码
  12. 程序员如何提升英语水平
  13. 招行金葵花,经典白,银钻,AE白问题总结贴
  14. 前端知识之angular组件库之NG-ZORRO-ANTD结构窥探(一)components
  15. 计算机应用项目概述,计算机应用包括哪些项目?
  16. 全球海温数据NOAA Extended Reconstructed Sea Surface Temperature (SST) V5的时间解释
  17. centos7 clamav 杀毒软件安装
  18. (四)现代计算机系统的层次结构
  19. Webpack | webpack配置eslint
  20. 如何做出好看的报表?简单数据表几步逆袭高大上数据报表

热门文章

  1. 编程实现:从字符中获取连续数组序列,如字符串a1dl2iad9j3la5kudp7u9pn4blj8ap5u3e6ml9a中可以得到的连续数字序列为1234556.【注】:只考虑一位,因此最长的数
  2. 理解线性回归中的常数项
  3. 超小型HTTP服务器
  4. Python中股票(对数)收益率的计算
  5. ntp时钟服务器离线搭建
  6. C语言五子棋禁手算法的编写,基于C语言的五子棋辅助软件的设计与实现.doc
  7. cs8900的基地址
  8. 纸上来得终觉浅,绝知此事要躬行(二)
  9. 在线搭建知识库、帮助中心,优选这5款软件工具!
  10. netty获取玩家chanel_基于netty的TCP服务端如何给客户端发送消息,但是如何拿到客户端连接时的SocketChannel呢,菜鸟求助?...