描述
开 本: 16开纸 张: 胶版纸包 装: 平装-胶订是否套装: 否国际标准书号ISBN: 9787302515210
1. 零基础、入门级的讲解
无论您是否从事计算机相关行业,无论您是否接触过C 编程语言,都能从本书中找到适合的起点。
2. 超多、实用、专业的范例和项目
本书在编排上紧密结合深入学习C 编程技术的先后过程,从C 的基本语法开始,逐步带领大家深入地学习各种应用技巧,侧重实战技能,使用简单易懂的实际案例进行分析和操作指导,让读者读起来简明轻松,操作起来有章可循。
3. 随时检测自己的学习成果
每章首页中,均提供了本章要点,以指导读者重点学习及学后检查。
大部分章节后的“跟我学上机”板块,均根据本章内容精选而成,读者可以随时检测自己的学习成果和实战能力,做到融会贯通。
4. 细致入微、贴心提示
本书在讲解过程中,在各章中使用了“注意”和“提示”等小贴士,使读者在学习过程中更清楚地了解相关操作、理解相关概念,并轻松掌握各种操作技巧。
5. 专业创作团队和技术支持
您在学习过程中遇到任何问题,均可加入QQ群(案例课堂VIP)进行提问,专家人员会在线答疑。
6. 超值赠送资源
全程同步教学录像
涵盖本书所有知识点,详细讲解每个实例及项目的过程及技术关键点,比看书更轻松地掌握书中所有的C 编程语言知识,而且扩展的讲解部分使您得到比书中更多的收获。
超多容量优质资源大放送
赠送大量优质资源,包括本书实例源文件、精美教学幻灯片、精选本书教学视频、Visual Studio 2017常用快捷键、C 库函数查询手册、MFC查询手册、C 程序员面试技巧、C 常见面试题、C 常见错误代码及解决方案、C 开发经验及技巧大汇总等。读者可以通过QQ群(案例课堂VIP)获取赠送资源,还可以进入配套网站下载赠送资源,也可以扫描二维码,下载本书资源。
《C 程序开发案例课堂》第1篇【基础入门】主要讲解C 基本概念、C 的程序结构、数据类型、灵活使用运算符、程序流程控制等;第2篇【核心技术】主要讲解函数的应用、数组与字符串、指针、结构体、共用体和枚举类型、面向对象编程、构造函数和析构函数等;第3篇【高级应用】主要讲解运算符的重载、类的继承、虚函数和抽象类、C 操作文件、异常处理、模板与类型转换、容器和迭代器等;第4篇【项目开发实战】主要讲解开发计算器助手、开发汽车信息管理系统、开发银行交易系统、开发学校职工信息管理系统。
《C 程序开发案例课堂》适合任何想学习C 编程语言的人员,无论您是否从事计算机相关行业,无论您是否接触过C 语言,通过本书学习均可快速掌握C 在项目开发中的知识和技巧。
第1篇 基 础 入 门
第1章 揭开C 的神秘面纱——我的第一个C 程序 3
1.1 认识C 4
1.2 C 的优势 5
1.3 常见的C 开发环境 6
1.4 新手的福音——Visual Studio 2017集成环境 8
1.4.1 安装Visual Studio 2017的条件 8
1.4.2 安装Visual Studio 2017 8
1.5 熟悉Visual Studio 2017开发界面 10
1.5.1 创建项目 10
1.5.2 菜单栏 12
1.5.3 工具栏 13
1.5.4 解决方案资源管理器 13
1.5.5 【属性】面板 14
1.5.6 【错误列表】面板 14
1.5.7 【输出】面板 14
1.6 实战演练——第一个C 项目 15
1.7 理解C 语言的翻译过程 16
1.8 大神解惑 17
1.9 跟我学上机 18
第2章 零基础开始学习——C 的程序结构 19
2.1 分析C 程序的结构 20
2.1.1 #include指令及头文件 20
2.1.2 main函数 21
2.1.3 变量声明和定义 22
2.1.4 函数的声明 24
2.1.5 关于注释 25
2.2 编译前的预处理 26
2.3 输入和输出数据 29
2.3.1 cout输出数据 29
2.3.2 cin读取输入数据 32
2.4 命名空间 33
2.4.1 命名空间的定义 33
2.4.2 using关键字 34
2.4.3 命名空间std 35
2.5 实战演练——经典的入门程序 36
2.6 大神解惑 38
2.7 跟我学上机 38
第3章 程序中的数据种类——数据类型 39
3.1 标识符 40
3.1.1 保留字 40
3.1.2 标识符命名 41
3.2 变量与常量 41
3.2.1 变量 41
3.2.2 常量 44
3.3 基本变量类型 46
3.3.1 整数类型 46
3.3.2 字符类型 48
3.3.3 浮点数类型 50
3.3.4 布尔类型 51
3.4 查询变量的类型和内存空间大小 52
3.5 自定义数据类型 53
3.6 实战演练——对比不同数据类型的长度 57
3.7 大神解惑 57
3.8 跟我学上机 58
第4章 谁来操作数据——灵活使用运算符 59
4.1 运算符概述 60
4.1.1 赋值运算符 60
4.1.2 算术运算符 61
4.1.3 关系运算符 62
4.1.4 逻辑运算符 64
4.1.5 自增和自减运算符 65
4.1.6 位逻辑运算符 66
4.1.7 移位运算符 68
4.1.8 三元运算符 69
4.1.9 逗号运算符 70
4.1.10 类型转换运算符 71
4.2 运算符优先级和结合性 72
4.2.1 运算符优先级 72
4.2.2 运算符结合性 73
4.3 实战演练——综合运用运算符 75
4.4 大神解惑 76
4.5 跟我学上机 77
第5章 程序的执行方向——程序流程控制 79
5.1 顺序语句 80
5.2 条件判断语句 81
5.2.1 if条件 81
5.2.2 if-else条件 82
5.2.3 条件运算符 83
5.3 循环语句 84
5.3.1 for循环 85
5.3.2 while循环 86
5.3.3 do-while循环 87
5.4 多重选择——switch语句 88
5.5 跳出循环 90
5.5.1 continue语句 90
5.5.2 break语句 90
5.5.3 goto语句 91
5.6 实战演练——流程控制综合应用 92
5.7 大神解惑 95
5.8 跟我学上机 96
第II篇 核 心 技 术
第6章 C 的灵魂——函数的应用 99
6.1 函数的基本结构 100
6.1.1 函数的声明、定义和调用 100
6.1.2 参数的传递方式 101
6.1.3 函数的默认参数 103
6.1.4 函数的返回值 104
6.2 变量的作用域 105
6.2.1 局部变量 105
6.2.2 静态局部变量 106
6.2.3 外部变量 107
6.2.4 寄存器变量 108
6.3 特殊函数调用方式——递归调用 108
6.4 内联函数 109
6.5 预处理器 110
6.5.1 #define预处理器 110
6.5.2 #define的作用 111
6.5.3 const修饰符 112
6.6 函数的重载 113
6.7 实战演练——汉诺塔问题函数 114
6.8 大神解惑 116
6.9 跟我学上机 116
第7章 特殊的元素集合——数组与字符串 117
7.1 一维数组 118
7.1.1 一维数组的声明 118
7.1.2 数组初始化 119
7.1.3 数组的操作 120
7.2 二维数组和多维数组 121
7.2.1 二维数组的声明 121
7.2.2 二维数组的使用和存取 122
7.2.3 多维数组 123
7.3 数组与函数 125
7.3.1 一维数组作为函数的参数 125
7.3.2 传送多维数组到函数 126
7.4 字符串类 127
7.4.1 字符串的声明 127
7.4.2 字符串的输入和输出 128
7.4.3 字符串处理 129
7.5 实战演练1——判断字符串回文 132
7.6 实战演练2——输出斐波那契数列 134
7.7 大神解惑 135
7.8 跟我学上机 136
第8章 灵活调用内存地址——指针 137
8.1 指针概述 138
8.1.1 什么是指针 138
8.1.2 为什么要用指针 138
8.1.3 指针的地址 139
8.2 指针变量 139
8.2.1 指针变量的声明 139
8.2.2 指针变量的使用 140
8.3 指针与函数 141
8.3.1 指针传送到函数中 141
8.3.2 返回值为指针的函数 142
8.3.3 函数指针 143
8.4 指针与数组 144
8.4.1 指针的算术运算 145
8.4.2 利用指针存储一维数组的元素 146
8.4.3 利用指针传递一维数组到函数中 147
8.5 指针与字符串 147
8.6 const指针 148
8.7 void指针 149
8.8 指向指针的指针 149
8.9 动态内存配置 150
8.9.1 使用基本数据类型做动态配置 151
8.9.2 使用数组做动态配置 152
8.10 实战演练——判断字符串中有多少个整数 153
8.11 大神解惑 155
8.12 跟我学上机 156
第9章 灵活定义数据类型——结构体、共用体和枚举类型 157
9.1 结构体 158
9.1.1 结构体的声明 158
9.1.2 结构体变量的初始化与使用 159
9.1.3 结构体数组初始化 161
9.2 将结构体变量作为函数参数 162
9.2.1 将整个结构体传送到函数 162
9.2.2 传送结构体的地址到函数 163
9.3 共用体 164
9.3.1 共用体的定义和声明 164
9.3.2 共用体类型的初始化和使用 165
9.3.3 struct和union的差异 166
9.4 枚举类型 167
9.4.1 枚举类型的定义和声明 167
9.4.2 枚举类型的初始化和使用 168
9.5 实战演练——学生信息登记表 169
9.6 大神解惑 172
9.7 跟我学上机 172
第10章 主流的编程思想——认识面向对象编程 173
10.1 面向对象编程概述 174
10.1.1 面向对象编程的几个概念 174
10.1.2 面向对象编程与面向过程编程的区别 175
10.2 认识类 175
10.2.1 类的基本概念 175
10.2.2 类的定义 175
10.2.3 类对象的生成 177
10.2.4 类对象指针 178
10.3 成员函数 180
10.4 嵌套类 182
10.5 const成员函数 182
10.6 类成员的访问控制 184
10.6.1 私有成员 184
10.6.2 公有成员 185
10.6.3 保护成员 186
10.7 静态成员 187
10.7.1 静态数据成员 187
10.7.2 静态成员函数 189
10.8 友元函数 190
10.9 实战演练——栈类的实现 191
10.10 大神解惑 193
10.11 跟我学上机 194
第11章 类的特殊函数——构造函数和析构函数 195
11.1 构造函数初始化类对象 196
11.1.1 什么是构造函数 196
11.1.2 使用构造函数 196
11.2 析构函数清除类对象 198
11.2.1 析构函数的概念 198
11.2.2 析构函数的调用 198
11.3 默认构造函数 200
11.4 重载构造函数 201
11.4.1 重载构造函数的作用 201
11.4.2 重载构造函数的调用 201
11.5 类对象数组的初始化 202
11.5.1 类对象数组调用 203
11.5.2 类对象数组和默认构造函数 204
11.5.3 类对象数组和析构函数 206
11.6 拷贝构造函数 207
11.6.1 拷贝构造函数的概念 207
11.6.2 深拷贝和浅拷贝 208
11.7 实战演练——构造函数和析构函数的应用 210
11.8 大神解惑 212
11.9 跟我学上机 212
第III篇 高 级 应 用
第12章 赋予新功能——运算符的重载 215
12.1 什么是运算符重载 216
12.1.1 运算符重载的形式 216
12.1.2 可重载的运算符 218
12.2 重载前置运算符和后置运算符 219
12.2.1 重载前置运算符 219
12.2.2 重载后置运算符 221
12.3 插入运算符和析取运算符的重载 222
12.3.1 插入运算符重载 222
12.3.2 析取运算符重载 223
12.4 常用运算符的重载 225
12.4.1 “12.4.2 “ ”运算符的重载 226
12.4.3 “=”赋值运算符重载 227
12.5 实战演练——重载运算符综合 应用 230
12.6 大神解惑 231
12.7 跟我学上机 232
第13章 实现代码重用——类的继承 233
13.1 继承的基本概念 234
13.1.1 基类和继承类 234
13.1.2 简单的基础实例 235
13.2 调用父类中的构造函数 240
13.3 子类存取父类成员 243
13.3.1 私有成员的存取 243
13.3.2 继承与静态成员 244
13.4 多继承 246
13.5 实战演练——继承的综合应用 248
13.6 大神解惑 250
13.7 跟我学上机 250
第14章 实现多态性——虚函数和抽象类 251
14.1 什么是虚函数 252
14.1.1 虚函数的作用 252
14.1.2 动态绑定和静态绑定 253
14.2 抽象类与纯虚函数 255
14.2.1 定义纯虚函数 255
14.2.2 抽象类的作用 256
14.2.3 虚析构函数 257
14.3 抽象类的多重继承 259
14.4 虚函数表 260
14.4.1 什么是虚函数表 260
14.4.2 继承关系的虚函数表 262
14.5 实战演练——抽象类的综合应用 263
14.6 大神解惑 266
14.7 跟我学上机 266
第15章 数据存储——C 操作文件 267
15.1 文件的基本概念 268
15.1.1 文件I/O 268
15.1.2 文件顺序读写 271
15.1.3 随机文件读写 271
15.2 文件的打开与关闭 273
15.2.1 文件的打开 273
15.2.2 文件的关闭 275
15.3 文本文件的处理 275
15.3.1 将变量写入文件 275
15.3.2 将变量写入文件尾部 276
15.3.3 从文本文件中读入变量 277
15.3.4 使用get()、getline()和 put()函数 278
15.4 处理二进制文件 280
15.5 实战演练——文件操作 282
15.6 大神解惑 284
15.7 跟我学上机 285
第16章 解决问题的法宝——异常处理 287
16.1 异常的基本概念 288
16.2 异常处理机制 288
16.3 抛出异常 289
16.4 重新抛出异常 291
16.5 捕获所有异常 292
16.6 未捕捉到的异常 293
16.7 标准异常 294
16.8 异常规范 294
16.9 异常与继承 295
16.10 自定义异常类 296
16.11 捕获多个异常 298
16.12 实战演练——异常处理应用 299
16.13 大神解惑 301
16.14 跟我学上机 302
第17章 C 的高级技能——模板与类型转换 303
17.1 模板 304
17.1.1 函数模板 304
17.1.2 类模板 305
17.1.3 模板参数 307
17.1.4 模板的特殊化 308
17.1.5 重载和函数模板 309
17.2 类型识别和强制转换运算符 311
17.2.1 运行时类型识别 311
17.2.2 强制类型转换运算符 314
17.3 实战演练——模板的综合应用 316
17.4 大神解惑 318
17.5 跟我学上机 318
第18章 控制元素的存储和访问——容器和迭代器 321
18.1 STL 322
18.2 迭代器 322
18.3 顺序容器 323
18.3.1 向量 323
18.3.2 双端队列 325
18.3.3 列表 326
18.4 关联容器 327
18.4.1 集合和多集 327
18.4.2 映射和多重映射 329
18.5 容器适配器 330
18.5.1 栈 330
18.5.2 队列 331
18.5.3 优先级队列 332
18.6 实战演练——容器的综合操作 333
18.7 大神解惑 338
18.8 跟我学上机 338
第IV篇 项目开发实战
第19章 项目实训1——开发计算器助手 341
19.1 需求分析 342
19.2 功能分析 342
19.3 开发前的准备工作 343
19.4 系统代码编写 343
19.4.1 CalculatorAssistant.h和 CalculatorAssistant.cpp文件 344
19.4.2 Complex.h和Complex.cpp 文件 347
19.4.3 Fraction.h和Fraction.cpp 文件 351
19.4.4 main.cpp文件 356
19.5 系统运行 356
19.6 项目总结 358
第20章 项目实训2——开发汽车信息管理系统 359
20.1 需求分析 360
20.2 功能分析 360
20.3 开发前的准备工作 362
20.4 系统代码编写 362
20.4.1 Date.h文件 362
20.4.2 DateException.h文件 363
20.4.3 Vehicle.h和Vehicle.cpp 文件 364
20.4.4 VehicleManage.h和 VehicleManage.cpp文件 366
20.4.5 Main.cpp文件 373
20.5 系统运行 376
20.6 项目总结 378
第21章 项目实训3——开发银行交易系统 379
21.1 需求分析 380
21.2 功能分析 380
21.3 开发前的准备工作 381
21.4 系统代码编写 382
21.4.1 交易流程处理、余额查询、存款和取款等功能 382
21.4.2 相关设备模拟 388
21.4.3 交易设备、数据库和账户等 具体实现 390
21.4.4 设备处理、交易处理、操作 处理和验证处理等功能 394
21.4.5 主程序运行入口 398
21.5 系统运行 398
21.6 项目总结 399
第22章 项目实训4——开发学校职工信息管理系统 401
22.1 需求分析 402
22.2 功能分析 402
22.3 开发前的准备工作 404
22.4 系统代码编写 404
22.4.1 职工信息的数据结构的基类属性和成员方法 404
22.4.2 各人员类的声明、定义 和实现 407
22.4.3 系统职工信息增删改查功能的 声明、定义 413
22.4.4 系统增删改查以及菜单功能的 实现 416
22.4.5 主程序运行入口 432
22.5 系统运行 432
22.6 项目总结 434
为什么要写这样一本书
C 语言是在C语言基础上发展起来的,它在C语言基础上融入了许多新的编程理念,这些理念有利于程序的开发。从语言角度来说,C 语言是个规范,它规范程序员如何进行面向对象的程序开发。C 具有C语言操作底层的能力,同时还具有提高代码复用率的面向对象编程技术,是一种语句更加灵活、使用更加简捷、技术更加全面的编程利器。目前学习和关注C 的人越来越多,而很多C 的初学者都苦于找不到一本通俗易懂、容易入门和案例实用的参考书。通过本书的案例实训,读者可以很快地上手流行的工具,提高职业化能力,从而帮助解决公司与求职者的双重需求问题。
本书特色
零基础、入门级的讲解
无论您是否从事计算机相关行业,无论您是否接触过C 编程语言,都能从本书中找到最佳起点。
超多、实用、专业的范例和项目
本书在编排上紧密结合深入学习C 编程技术的先后过程,从C 的基本语法开始,逐步带领大家深入地学习各种应用技巧,侧重实战技能,使用简单易懂的实际案例进行分析和操作指导,让读者读起来简明轻松,操作起来有章可循。
随时检测自己的学习成果
每章首页中,均提供了本章要点,以指导读者重点学习及学后检查。
大部分章节最后的“跟我学上机”板块,均根据本章内容精选而成,读者可以随时检测自己的学习成果和实战能力,做到融会贯通。
细致入微、贴心提示
本书在讲解过程中,在各章中使用了“注意”和“提示”等小贴士,使读者在学习过程中更清楚地了解相关操作、理解相关概念,并轻松掌握各种操作技巧。
专业创作团队和技术支持
您在学习过程中遇到任何问题,均可加入QQ群(案例课堂VIP)进行提问,专家人员会在线答疑。
超值赠送资源
全程同步教学录像
涵盖本书所有知识点,详细讲解每个实例及项目的过程及技术关键点,比看书更轻松地掌握书中所有的C 编程语言知识,而且扩展的讲解部分使您得到比书中更多的收获。
超多容量王牌资源大放送
赠送大量王牌资源,包括本书实例源文件、精美教学幻灯片、精选本书教学视频、Visual Studio 2017常用快捷键、C 库函数查询手册、MFC查询手册、C 程序员面试技巧、C 常见面试题、C 常见错误代码及解决方案、C 开发经验及技巧大汇总等。读者可以通过QQ群(案例课堂VIP)获取赠送资源,还可以进入配套网站下载赠送资源,也可以扫描二维码,下载本书资源。
读者对象
没有任何C 编程基础的初学者。
有一定的C 编程基础,想精通C 开发的人员。
有一定的C 基础,没有项目经验的人员。
正在进行毕业设计的学生。
大专院校及培训学校的老师和学生。
创作团队
本书由刘春茂和李琪编著,参加编写的人员还有张金伟、蒲娟、刘玉萍、裴雨龙、展娜娜、周佳、付红、李园、郭广新、侯永岗、王攀登、刘海松、孙若淞、王月娇、包慧利、陈伟光、胡同夫、王伟、梁云梁和周浩浩。在编写过程中,我们力尽所能地将最好的讲解呈现给读者,但也难免有疏漏和不妥之处,敬请不吝指正。
编 者
对没有任何基础的读者而言,学习编程需要从认识最基本的C 程序结构开始。本章带领读者了解C 程序的开发过程,剖析C 程序结构,掌握C 代码编写规范,熟练使用C 的输入/输出对象。
本章要点(已掌握的在方框中打钩)
理解C 的程序结构。
熟悉C 的main函数。
理解编译前的预处理。
掌握C 中输入和输出数据的方法。
掌握定义和调用命名空间的方法。
理解C 的注释方法。
2.1 分析C 程序的结构
第1章中读者已经接触了一个简单的案例,可能有很多关键字是初学者不太理解的。下面详细分析该例中用到的关键字。
2.1.1 #include指令及头文件
首先查看源代码,如下:
#include
using namespace std;
void main()
{
cout< system(“pause”);
}
上面的例子中,使用了include这个关键字,但是这个关键字起了什么作用呢?下面就来详细介绍include这个关键字。
include是C 的预处理指令,表示包含C/C 标准头文件。C 编译系统会根据头文件名把该文件的内容包含进来。包含指令不仅仅限于.h头文件,可以包含任何编译器能识别的C/C 代码文件,包括.c,.hpp,.cpp,.hxx,.cxx等,甚至.txt,.abc等都可以。
C 虽然主要是在C的基础上发展起来的一门新语言,但它不是C的替代品,也不是C的升级,不要用””代替<>来包含系统头文件。虽然有些编译器允许你这样做,但它不符合C/C 标准。错误的示例:#include “stdio.h”,#include “iostream”。
那么,在C 中头文件是怎么定义的呢?
在语句#include中,iostream.h就是头文件。C 程序的头文件是以.h为后缀的、用于保存程序的声明,我们称之为头文件。
一个头文件由如下3部分内容组成。
(1) 头文件开头处的版权和版本声明。
(2) 预处理块。
(3) 函数和类结构声明等。
在C 中,头文件的作用主要包含以下两点。
(1) 可以通过头文件来调用已有程序功能。为了保护源代码的安全性,通过头文件的形式来调用该代码的功能,用户只需要按照头文件中的接口声明来调用该头文件中的功能,而不必关心具体功能是怎么实现的。编译器会从库中析取相应的代码。
(2) 头文件可以加强安全性检查。在调用接口功能过程中,如果调用方式和头文件中的声明不一致,编译器就会报错,从而减少程序员调试负担。
不要使用#include ,不要使用#include ,因为它们已经被C 标准明确地废弃了,请改为 #include 和 #include 。规则如下。
(1) 如果这个头文件是旧C 特有的,那么去掉.h后缀,并放入std名字空间,如iostream.h变为iostream。
(2) 如果这个头文件是C也有的,那么去掉.h后缀,增加一个c前缀,如string.h变为cstring、stdio.h变为cstdio等。
2.1.2 main函数
在上例中,使用了main()函数,那么这个main()函数代表什么呢?C 程序必须有且只能有一个main()函数。main()函数是程序的入口点,无论main()函数在程序中处于什么样的位置。但是,并非所有C 程序都有传统的main()函数。用C或C 写成的Windows程序入口点函数称为WinMain(),而不是传统的main()函数。
main()函数和其他函数一样也是函数,有相同的构成部分。在32位控制台应用程序中,C Builder生成具有下列原型的默认main()函数,这个main()函数形式取两个参数并返回一个整型值。其语法格式如下:
int main(int argc,char** argv);
不要将main函数的返回类型定义为void,虽然有些编译器允许你这样做,但它不符合C/C 标准。不要将函数的int返回类型省略不写,这在C 中要求编译器至少给一个警告。错误的示例:void main() {},main() {}。
main()函数的第一个参数argc代表参数的数量,指明有多少个参数将被传递给主函数main()。真正的参数以字符串数组(即第2个参数argv[])的形式来传递。
main()函数本身是以索引0为第一参数,所以argc至少为1。它的总数是从argv阵列的元素数目。这意味着argv[0]的值是至关重要的,如果用户在控制台环境中程序名称后输入含参数的指令,那么随后的参数将传递给argv[1]。
下面用一个实例来说明main如何调用参数。
【例2-1】main函数调用参数(源代码ch022.1.txt)。
新建名为myMain的C Source File源程序。源代码如下:
#include
using namespace std;
int main(int argc,char* argv[])
{
int a,b,c;
a=atoi(argv[1]);
b=atoi(argv[1]);
v=a b;
cout< cout< cout< return 0;
}
评论
还没有评论。