图书简介:
目 录
第1章 C/C++概述 1
1.1 计算机程序设计语言的发展 3
1.1.1 机器语言阶段 3
1.1.2 汇编语言阶段 3
1.1.3 高级语言阶段 4
1.1.4 从C到C++ 5
1.2 过程化程序设计 5
1.3 面向对象的程序设计 6
1.3.1 基本概念 7
1.3.2 面向对象程序设计的特点 7
1.4 简单的C/C++程序介绍 8
1.5 程序开发的过程 11
1.6 C/C++上机实践 12
1.6.1 Visual Studio 2013集成
开发环境 12
1.6.2 开发C/C++的程序过程 15
1.7 使用Dev C++创建项目 17
1.7.1 创建项目 18
1.7.2 程序的运行和调试 19
实验一 设计第一个C/C++应用程序 20
习题1 22
第2章 数据类型、运算符和表达式 23
2.1 保留字和标识符 25
2.1.1 保留字 25
2.1.2 标识符 25
2.2 数据类型 25
2.3 常量与变量 27
2.3.1 常量 27
2.3.2 变量 29
2.4 基本运算符和表达式 30
2.4.1 基本运算符和表达式简介 30
2.4.2 算术运算符和算术表达式 31
2.4.3 赋值运算符和赋值表达式 32
2.4.4 关系运算符和关系表达式 33
2.4.5 逻辑运算符和逻辑表达式 34
2.4.6 位运算符和位运算表达式 35
2.4.7 条件运算符和条件表达式 37
2.4.8 逗号运算符和逗号表达式 37
2.4.9 sizeof运算符和sizeof
表达式 37
2.5 数据类型转换 37
2.5.1 隐式转换 38
2.5.2 显式转换 38
2.6 简单的输入/输出实现方法 38
2.6.1 格式化输入/输出——scanf()
和printf() 38
2.6.2 I/O流 41
2.6.3 cin 42
2.6.4 cout 42
2.6.5 输出控制符 43
2.7 认识上机过程中的错误 45
实验二 C/C++语言基础练习 46
习题2 48
第3章 C/C++流程控制 51
3.1 算法与流程图 53
3.1.1 算法的概念 53
3.1.2 算法的描述 53
3.2 语句和程序的三种基本结构 54
3.2.1 语句 54
3.2.2 程序的三种基本结构 55
3.2.3 结构化算法 55
3.3 顺序结构程序 56
3.4 选择结构程序 57
3.4.1 if语句 57
3.4.2 嵌套if语句 59
3.4.3 switch语句 61
3.5 循环结构程序设计 63
3.5.1 while语句 63
3.5.2 do-while语句 66
3.5.3 for语句 68
3.5.4 循环的嵌套 70
3.5.5 跳转语句 73
3.5.6 三种循环的比较 75
3.6 常用算法及应用实例 75
3.6.1 累加与累乘 75
3.6.2 求最大数、最小数 76
3.6.3 求素数 77
3.6.4 穷举法 79
3.6.5 递推与迭代 80
3.7 应用实例 83
3.8 程序的调试 85
3.8.1 进入调试 86
3.8.2 单步调试 86
3.8.3 查看变量、表达式的值 87
3.8.4 停止调试 87
实验三 程序控制结构 88
习题3 91
第4章 函数 95
4.1 函数的定义 97
4.1.1 函数定义 97
4.1.2 函数的返回值 98
4.2 函数的调用 99
4.2.1 函数调用的形式及过程 99
4.2.2 函数的声明 100
4.2.3 函数调用的参数传递方式 102
4.3 函数的嵌套调用和递归调用 104
4.3.1 函数的嵌套调用 104
4.3.2 函数的递归调用 105
4.4 内联函数和函数重载 110
4.4.1 内联函数 110
4.4.2 函数重载 111
4.5 函数的参数 115
4.5.1 函数参数的求值顺序 115
4.5.2 具有默认参数值的函数 116
4.6 应用实例 117
4.7 函数的调试 122
实验四 函数的基本操作与应用 124
习题4 127
第5章 作用域和存储类型 131
5.1 作用域 133
5.1.1 作用域分类 133
5.1.2 局部变量与全局变量 135
5.1.3 动态存储方式与静态存储
方式 139
5.2 变量的存储类型 140
5.2.1 自动类型 140
5.2.2 寄存器类型 141
5.2.3 静态类型 142
5.2.4 外部类型 145
5.3 编译预处理 146
5.3.1 宏定义命令 146
5.3.2 文件包含命令 149
5.3.3 条件编译命令 149
5.4 程序的多文件组织 151
5.4.1 头文件 151
5.4.2 多文件结构 151
5.4.3 多文件结构程序示例 152
5.5 多文件程序的创建与调试 154
实验五 作用域和存储类型应用 156
习题5 159
第6章 数组 161
6.1 数组的概念 163
6.1.1 数组与数组元素 163
6.1.2 数组的维数 163
6.2 一维数组的定义及应用 163
6.2.1 一维数组的定义和初始化 163
6.2.2 一维数组的操作 165
6.2.3 数组的越界问题 166
6.2.4 一维数组的应用 166
6.2.5 基于范围的for循环 170
6.3 字符数组的定义及应用 171
6.3.1 字符数组和字符串 171
6.3.2 字符串处理函数 173
6.3.3 字符数组应用举例 175
6.4 二维数组 177
6.4.1 二维数组的定义 177
6.4.2 二维数组的初始化 178
6.4.3 二维字符数组 180
6.4.4 二维数组应用 181
6.5 数组作为函数参数 185
6.5.1 向函数传递一维数组 185
6.5.2 向函数传递二维数组或多维
数组 188
6.6 数组应用实例 189
6.7 断点调试方法 191
实验六 数组 199
习题6 202
第7章 结构体、共用体和枚举类型 209
7.1 结构体的定义及使用 211
7.1.1 结构体的定义 211
7.1.2 结构体变量的定义 212
7.1.3 结构体变量的使用 214
7.1.4 结构体变量的初始化 215
7.1.5 结构体数组 215
7.1.6 结构体和函数 220
7.2 共用体的定义与使用 221
7.2.1 共用体的概念 221
7.2.2 共用体变量的定义 222
7.2.3 共用体变量的使用 222
7.3 枚举类型 224
7.4 typedef定义类型 226
7.5 应用实例 227
7.6 程序调试 231
7.6.1 结构体变量各成员变量的
内存分配情况 232
7.6.2 共用体变量各数据成员的
内存分配情况 233
实验七 结构体、共用体和枚举类型 234
习题7 236
第8章 指针和引用 239
8.1 指针与指针变量 241
8.1.1 地址与指针的概念 241
8.1.2 指针变量 242
8.1.3 指针变量的运算 246
8.1.4 void指针 248
8.1.5 C++11的扩展 249
8.2 指针与数组 249
8.2.1 一维数组与指针 249
8.2.2 二维数组与指针 251
8.2.3 指向数组的指针 253
8.2.4 指针数组 254
8.2.5 指向指针的指针 255
8.3 字符指针与字符串 256
8.3.1 字符数组与字符指针 256
8.3.2 字符指针数组 258
8.4 动态内存分配和释放 258
8.4.1 C++中堆的使用 259
8.4.2 C语言中动态分配空间的
函数 261
8.5 指针与函数 262
8.5.1 指针变量与数组名作函数
参数 262
8.5.2 返回值为指针类型的函数 267
8.5.3 函数指针 268
8.6 const指针 271
8.6.1 指向常量的指针变量的定义
与使用 271
8.6.2 指针常量 272
8.6.3 指向常量的指针常量 273
8.7 结构体指针 273
8.7.1 结构体指针的概念 273
8.7.2 指向结构体数组元素的
指针 274
8.7.3 结构体指针作为函数参数 275
8.8 链表 277
8.8.1 链表概述 277
8.8.2 链表的基本操作 278
8.9 引用 285
8.9.1 引用及声明方法 285
8.9.2 用引用作为函数的参数 287
8.9.3 如何使一个被调函数同时
返回多个值 288
8.9.4 用const限定引用 289
8.9.5 用引用作为函数返回值 290
8.9.6 引用总结 291
8.10 综合应用实例 291
8.11 上机调试 296
8.11.1 指针变量值的调试查看 296
8.11.2 函数地址的调试查看 297
8.11.3 引用的调试查看 298
8.12 小结 299
实验八 指针和引用 299
习题8 302
第9章 文件 307
9.1 C语言文件概述 309
9.2 文件结构体与文件指针 310
9.3 文件的打开与关闭 311
9.3.1 文件的打开(fopen
函数) 311
9.3.2 文件的关闭(fclose
函数) 312
9.4 文件的读写 313
9.4.1 按字符读写文件(fgetc和
fputc函数) 313
9.4.2 字符串的读写(fgets和fputs
函数) 317
9.4.3 格式化的读写(fscanf和
fprintf函数) 319
9.4.4 数据块的读写(fread和
fwrite函数) 322
9.5 文件的定位 324
9.5.1 位置指针复位(rewind
函数) 325
9.5.2 位置指针随机定位(fseek
函数) 326
9.5.3 检测当前位置指针的位置(ftell
函数) 329
9.6 文件的检测 329
9.6.1 文件读写错误检测(ferror
函数) 329
9.6.2 清除文件错误标志(clearerr
函数) 330
9.6.3 文件结束检测(feof
函数) 330
9.7 常用文件操作函数小结 330
9.8 程序设计举例 331
9.9 上机调试 337
实验九 文件 342
习题9 344
附录A ASCII码表 347
附录B C++的库函数 349
参考文献 352
展开
本教材的主要作者都是有着丰富教学经验的一线教师,从事C/C++程序设计课程教学多年,深知学生在学习C++程序设计这门课程后,对程序设计方法、算法设计、调试程序、习题解答的茫然和问题,因此本书在介绍理论知识、相关概念和语言语法时,始终强调其在程序设计中的作用,使语言语法与程序设计相结合。同类书籍大部分偏重于对语言语法和概念的介绍,虽然在书中有针对一个语法和知识点的程序实例,但学生对每章内容在实际程序设计中的作用缺乏了解,而本书每章后都附有针对性较强的应用实例分析,尽可能使初学者在学习每章的内容后拿到题目,即能够独立进行程序设计、解决实际问题,而不至于无从下手。本书有以下五个鲜明特点。
第一,改变了传统的教学模式。先讲C语言程序设计,再讲C++对C语言的扩展、面向对象的程序设计。本教材将C/C++语言的学习很好地融合在一起,让读者把面向过程和面向对象的程序设计方法有机地结合在一起,面向过程和面向对象两分册都统一使用Visual Studio2013编译器。
第二,改变了传统教材以语言、语法学习为重点的缺陷,本教材从基本的语言、语法学习上升到程序的“设计、算法、编程、调试”层次。为了让学生更好地掌握程序开发的思想、方法和算法,书中提供了大量简短精辟的代码,有助于初学者学习解决问题的精髓。在每章后都有一节关于程序综合设计的内容,有一个或多个较大的程序,以帮助学生更好地掌握程序设计方法,提高解决实际问题的能力。第4版修订每章增加上机实验指导。
第三,教材强调程序的设计方法,大量例题有流程图、N-S图和UML图,并且每章都有上机调试的内容。教材突出程序的算法和设计,而不仅是语法和编程,培养学生的程序设计能力和程序调试技能,养成好的编程习惯,为专业程序员的培养打下良好的基础。
第四,培养学生面向对象程序设计的能力,引导学生建立程序设计的大局观,帮助学生掌握从客观事物中抽象出C++类的方法。通过系统的学习,使学生的编程能力上一个台阶,具备解决复杂问题的程序设计能力。
第五,根据当前实际大型软件项目开发的需要,扩充了异常处理、模板等内容,新增STL标准模板库,并通过流行的UML工具设计C++类。
本教材的编写充分考虑了目前应用型本科C/C++语言程序设计课程教学的实际情况和存在的问题。第一,学生在大一阶段的基础课程较多,不可能投入过多的精力来学习本门课程;第二,大学生对这门课学习的期望值很高,但对学习时可能遇到的困难估计不足;第三,大学生现有的上机实践条件大大改善,特别有利于贯彻先进的精讲多练的教学思想;第四,学生学会了语言的语法,仍不具备解决实际问题的能力,学生的程序设计、算法设计、编程、调试能力相对较差。本教材作者正是考虑了学生的这些实际问题,从而精心编写了这一套面向应用型本科的C/C++程序设计教程,特别适合于分两个学期系统讲授C/C++程序设计。第1学期讲授面向过程分册,第2学期讲授面向对象分册。
本分册共分9章,第1章主要讨论C++语言的特点和编辑环境,第2~8章主要介绍用C/C++进行过程化程序设计的基本方法,内容包括表达式及运算符、数据类型、函数、数组、指针等,第9章主要介绍文件处理方法。
为了方便使用本教材的教师备课,我们还提供了配套的电子教案,公开放在网站上,供任课教师自由下载使用。相信我们多年的教学经验会对广大师生的教和学有所帮助。建议本分册的教学为60学时,其中理论教学为44学时,课内上机实践为16学时。课外上机不少于32学时。
本教材的编写得到了河南省计算机学会的大力支持,河南省计算机学会组织了河南多所高校编写了高等教育计算机学科“应用型”系列教材。参编本教材编写的高校有中原工学院、郑州大学、河南科技大学。
本分册第1,2,3章由夏敏捷和赵一丁编写,第4,5章由刘姝编写,第6章由潘惠勇编写,第7章由郑秋生编写,第8,9章和附录由樊银亭和王琳编写。全书最终由郑秋生修改并统稿,并由郑州大学王黎明教授主审。
由于编者水平有限,加之时间仓促,书中难免有错,敬请广大读者批评指正,在此表示感谢。E-mail:xmj@zut.edu.cn。
编 者
2020年6月
展开