热门关键字:  听力密码  听力密码  新概念美语  单词密码  巧用听写练听力
图书信息

C/C++程序设计

中国水利水电出版社
    【作 者】李云峰 李婷 编著 【I S B N 】978-7-5170-0002-0 【责任编辑】李炎 【适用读者群】本专通用 【出版时间】2012-08-24 【开 本】16开 【装帧信息】平装(光膜) 【版 次】第1版第1次印刷 【页 数】372 【千字数】586 【印 张】23.25 【定 价】38 【丛 书】21世纪高等学校精品规划教材 【备注信息】
图书详情

    本书针对初学者的特点,采取“提出问题→分析问题→解决问题→归纳提高”的四部曲教学模式,分为10章。主要内容包括C语言程序设计概述、数据类型与运算、结构化程序设计、利用函数编程、利用数组编程、利用指针编程、利用构造类型编程、文件操作、C++程序设计、综合应用程序设计。

    本书分为3个层次,基础层介绍程序设计的基本概念、C基础与程序结构,给学习者建立一个全面的程序概念;提高层介绍 C语言程序的基本设计方法、算法案例程序设计;引申层介绍C++程序设计和综合应用程序设计。

    本书定位准确、结构合理、内容翔实、概念清晰、逻辑性强、例题丰富、深入浅出、循序渐进、通俗易懂,符合学习者的认知规律,并有配套的《C/C++程序设计学习辅导》(其内容包括编程指导、习题解析、实训指导、知识拓展),是程序设计学习者的理想用书,还可作为大学理工科类C语言设计或程序设计基础课程教材,也可作为大学生程序设计竞赛的基础训练教材。

    本书采用进阶式结构(基础层、提高层、引申层)、案例式引导、解析式分析,具有如下特点:

    以问题需求为引导,激发学习的主动性——从实际应用需求出发,通过“问题原由”,引出该章所要学习和掌握的知识内容,通过“问题描述”,引出该节的知识要点和语法结构。

    以程序实例为主线,注重创新思维培养——通过“解题分析”,引导学生思考解决问题的方法与路径,通过“程序实现”,归纳出解决问题的方法和步骤。

    以算法案例为核心,突出实用性和趣味性——选用具理论研究价值、实际应用价值和趣味性的经典算法,以培养学生对程序设计的学习兴趣,提高实际编程能力。

    以工程应用为目标,强化综合应用能力——教材最后以工程项目的形式,介绍开发应用程序的方法和步骤,以提高学生运用所学知识开发应用软件的综合设计能力。

    本书与学习辅导一起构成一个完整的知识、技能体系。主教材及其习题与等级考试的笔试完全吻合;辅助教材及其实训与等级考试的机试完全吻合。

    随着信息技术的迅速发展和广泛应用,程序设计已成为高校理工学科各专业普遍开设的一门公共基础课。而C语言作为程序设计的主流语种,经历了30多年的发展和不断完善,已成为国内外公认的一种优秀程序设计语言,日益显示出其它语言不可比拟的优点,因而也成为理工学科普遍开设的一门程序语言课程。那么,如何提高该课程的品质以满足学习者的需求,是需要我们不断探索的课题。

    目前,C/C++语言课程教材可分为两类:一类是以语法学习为中心,在介绍语法的基础上,结合程序设计巩固语法知识,强调的是语言知识的掌握而不是程序设计能力训练。另一类是案例式教材,以案例分析为主兼顾语法教学,引导学生通过模仿学习程序设计,强调的是应用程序设计方法的掌握。相对前一类,后一类教材语法知识的完整性和程序设计知识的系统性(算法、数据结构等)相对欠缺。

    本教材便是基于这一理念并总结“C/C++语言程序设计”课程教学改革实践和精品课程建设实践的基础上编写的。我们认为,程序设计不仅要让学生掌握扎实的语法知识,而且应当在这个基础上重点培养学生的编程能力和创新思维能力。创新思维的培养是潜移默化的,教材应当在创新思维方面加以引导,培养学生发现问题、分析问题、解决问题的能力,构建合理的知识与能力体系。本教材力求体现以下特点:

    1. 以问题需求为引导,激发学习的主动性。从实际应用需求(该章的教学目标)出发,通过“问题原由”,引出该章所要讨论的问题和所要掌握的知识内容;通过“问题描述”引出该节的知识要点和语法结构。以此激发学生学习的主动性和求知欲,避免学习的盲从性,消除语法规则学习的枯燥感,克服程序设计难学的心里障碍,达到学用结合的目的。

    2. 以程序实例为主线,注重创新思维培养。教材贯穿着提出问题、分析问题、解决问题的思路,对每一个知识点都给出了实例程序,通过“解题分析”,引导学生思考解决问题的方法与路径;通过“程序实现”,归纳出解决问题的方法和步骤;通过“问题点拨”,引导学生触类旁通。从而,培养学生的创新思维与分析问题和解决问题的能力。

    3. 以算法案例为核心,突出实用性和趣味性。本教材每章均以“算法案例程序设计”概括本章的教学内容,将程序规则与算法分析相结合。教材中的算法案例大都选用具有理论研究价值、实际应用价值和颇有趣味性的经典算法,以此培养学生对程序设计的学习兴趣,提高实际编程能力,从而体现了即学即用,学用结合的原则,避免了学而不用,或会学不会用的问题。

    事实上,作为程序设计语言教材,如何处理程序设计语言与算法的关系是极为重要的。Pascal语言设计者、“图灵”奖得主Niklaus.Wirth教授曾提出了一个著名的论断:程序=算法+数据结构。这个论断的要旨是:程序的核心是算法,算法的本质是处理数据,算法与数据不可分离。本教材充分体现了这一论点,精心策划算法与数据结构的知识布局,将穷举算法、迭代算法、递推算法、递归算法、回溯算法、贪心算法、动态规划、运算模拟、排序算法、查找算法、线性表、队列、栈、树、图等知识,以知识拓展的形式合理安排在辅助教材各章中,与主教材中的“算法案例程序设计”相对应。这些算法知识为设计具有专业水准的应用程序奠定了良好的理论基础。

    4. 以工程应用为目标,强化综合应用能力培养。教材第10章“综合应用程序设计”以工程项目的形式,将每一个项目设计成:系统设计目标、系统需求分析、系统总体设计、系统功能实现等四个环节,以此提高学生运用所学知识开发应用软件的综合设计能力,引导学生养成良好的设计思路和编程习惯,积累编写和调试大型程序的经验,编写出风格优美、可读性强、易于维护的程序代码。

    为了强化综合应用能力培养,充分体现以教师为主导,以学生为主体的教学思想,本课程的教学设计(教学手段、教学内容、教学方式和教学资源等方面)力求做到3个结合:

    (1)课堂教学与自主学习相结合:我们编写了与主教材配套的《C/C++程序设计学习辅导》,其内容包括编程指导、习题解析、实训指导和知识拓展(常用算法、数据结构和相关问题概念)。这样,既节省课堂教学时数,又最大限度地为学生自主学习提供方便;既为学好程序设计提供强有力的支持,又为学习者提供上升与拓展的空间。

    (2)纸质教材与电子资源相结合:配合纸质教材,我们建有课程教学网站,内容包括授课文本教案、电子教案(PPT)、在线测试、答疑解惑、视频教学等,使本课程融教、学、做为一体,集多种媒体于一身,为学习者提供可选择的学习资源与全方位的学习支持服务。

    (3)教学内容与等级考试相结合:教材内容涵盖了全国计算机等级考试大纲二级C语言程序设计考核的全部内容,并将近年来的考试试题编入到习题和实训内容之中,以便学生参加国家C语言程序设计等级考试,增强水平等级考试能力,激发和提升学习动力。

    教材编为10章,分为3个层次:第1~3章为基础层(C/C++程序设计概述、数据类型与运算、结构化程序设计);第4~8章为提高层(利用函数编程、利用数组编程、利用指针编程、利用构造类型编程、文件操作);第9~10章为引申层(C++程序设计、综合应用程序设计)。

    本教材采取进阶式结构、案例式引导、解析式分析,从而使本教材教学目标明确、结构清晰、循序渐进、逻辑性强、实用性好。通过潜移默化的引导,激发学生的学习兴趣,开发学生的创造潜能,培养学生自主学习的意识,营造以学生为主体的学习氛围,达到提高学生综合应用能力的目的。

    本教材既适合作为高等院校程序设计课程的教材,也适用于全国计算机等级考试二级C语言程序设计培训教材或C语言程序设计竞赛基础训练教材。同时,也适用于C语言程序设计爱好者自学用书。

    本教材由李云峰教授和李婷博士(副教授)编写。曹守富老师为本书程序调试、课程网站建设做了大量工作,丁红梅、周国栋、刘艳、刘冠群、谭阳、方颂、陆燕等老师参加了课程教学资源建设。在编写过程中,参阅了大量国内外同类优秀教材和专著,并从中吸取了许多有益的营养,特别是湖南理工学院杨克昌教授,为本书提供了极为珍贵的文献资料,在此,谨向这些著作者一并表示衷心感谢!

    本书凝聚了作者多年教学、科研以及软件开发的经验和体会,尽管我们希望做到更好,但因作者水平所限,书中难免存在许多不足之处,敬请专家和读者批评指正。

    前言

    导学 1
    第1章 C/C++程序设计概述 9
    §1.1 程序设计概念 9
    1.1.1 什么是程序设计 9
    1.1.2 程序设计语言 10
    1.1.3 程序设计方法 12
    1.1.4 程序设计步骤 14
    §1.2 算法及其描述方法 16
    1.2.1 算法的基本概念 16
    1.2.2 算法的描述方法 18
    §1.3 C/C++语言程序 24
    1.3.1 从C到C++ 24
    1.3.2 C/C++的性能特点 25
    1.3.3 C语言程序实例 26
    1.3.4 C/C++程序基本成分 28
    1.3.5 C/C++的编程规约 31
    §1.4 C/C++程序的实现 34
    1.4.1 构建源程序 34
    1.4.2 程序的编辑与编译 35
    本章小结 37
    本章习题 37
    第2章 数据类型与运算 40
    §2.1 数据类型及其存储 40
    2.1.1 数据类型的引出 40
    2.1.2 数据的存储方式 41
    2.1.3 数据的存储类型 42
    §2.2 常量与变量 45
    2.2.1 常量 45
    2.2.2 变量 47
    §2.3 基本运算 48
    2.3.1 基本运算符 49
    2.3.2 运算符的优先级与结合性 51
    2.3.3 基本表达式 52
    2.3.4 表达式中的类型转换 53
    §2.4 位运算 56
    2.4.1 位运算的特点 56
    2.4.2 逻辑位运算 57
    2.4.3 移位运算 60
    §2.5 编译预处理命令 62
    2.5.1 宏定义命令 62
    2.5.2 文件包含命令 63
    2.5.3 条件编译命令 65
    §2.6 算法案例程序设计 66
    2.6.1 计算银行存款的本息 66
    2.6.2 日期写法 67
    2.6.3 数字分离 68
    2.6.4 时间戳 69
    本章小结 70
    本章习题 70
    第3章 结构化程序设计 74
    §3.1 顺序结构 74
    3.1.1 顺序结构的引出 74
    3.1.2 数据处理语句 75
    3.1.3 数据的输出 76
    3.1.4 数据的输入 81
    §3.2 程序流程控制机制 83
    3.2.1 关系运算 83
    3.2.2 逻辑运算 85
    3.2.3 条件运算 86
    §3.3 分支结构 87
    3.3.1 单分支结构 87
    3.3.2 双分支结构 88
    3.3.3 if语句的嵌套 89
    3.3.4 多分支结构 91
    §3.4 循环结构 94
    3.4.1 循环结构的引出 94
    3.4.2 while循环结构 95
    3.4.3 do-while循环结构 96
    3.4.4 for循环结构 97
    3.4.5 三种循环结构的比较 99
    3.4.6 循环结构中的辅助语句 99
    3.4.7 循环嵌套结构 102
    §3.5 算法案例程序设计 103
    3.5.1 百钱买百鸡 103
    3.5.2 爱因斯坦的阶梯问题 104
    3.5.3 验证哥德巴赫猜想 105
    3.5.4 五个渔夫捕鱼 106
    本章小结 107
    本章习题 108
    第4章 利用函数编程 113
    §4.1 函数概念与定义 113
    4.1.1 函数的引出 113
    4.1.2 函数的定义 115
    §4.2 函数调用 118
    4.2.1 函数调用方式 118
    4.2.2 函数调用声明 119
    4.2.3 函数参数的传递 121
    4.2.4 简单变量作函数参数 123
    §4.3 函数的嵌套与递归 124
    4.3.1 函数的嵌套调用 124
    4.3.2 函数的递归调用 126
    §4.4 变量的作用域与生存期 127
    4.4.1 变量的作用域 127
    4.4.2 变量的生存期 131
    4.4.3 函数的作用域 136
    §4.5 案例程序设计 137
    4.5.1 “兔子产仔” 137
    4.5.2 汉诺(Hanoi)塔问题 139
    4.5.3 排队购票 140
    4.5.4 谁是最小年龄 142
    本章小结 143
    本章习题 144
    第5章 利用数组编程 149
    §5.1 一维数组 149
    5.1.1 一维数组的引出 149
    5.1.2 一维数组的定义与引用 150
    5.1.3 一维数组的初始化 151
    §5.2 二维数组 153
    5.2.1 二维数组的引出 153
    5.2.2 二维数组的定义与引用 154
    5.2.3 二维数组的初始化 155
    §5.3 字符数组 156
    5.3.1 字符数组的引出 157
    5.3.2 字符数组的定义与引用 157
    5.3.3 字符数组的初始化 157
    5.3.4 字符数组的输入/输出方式 158
    5.3.5 字符串处理函数 159
    §5.4 数组作为函数参数 162
    5.4.1 一维数组作函数参数 162
    5.4.2 二维数组作函数参数 165
    5.4.3 字符数组做函数参数 167
    §5.5 算法案例程序设计 167
    5.5.1 猴子吃桃 168
    5.5.2 猴子爬山 169
    5.5.3 韩信点兵 169
    5.5.4 新郎与新娘配对 171
    本章小结 172
    本章习题 173
    第6章 利用指针编程 178
    §6.1 指针的定义与引用 178
    6.1.1 指针概念的引出 178
    6.1.2 指针与内存地址的关系 179
    6.1.3 指针变量的定义与初始化 181
    6.1.4 指针变量的引用与运算 183
    §6.2 指针与数组 184
    6.2.1 一维数组的指针表示 184
    6.2.2 二维数组的指针表示 187
    6.2.3 字符串的指针表示 189
    6.2.4 指针数组 191
    6.2.5 多级指针 192
    §6.3 指针与函数 194
    6.3.1 指针作为函数的参数 194
    6.3.2 字符串指针作为函数参数 196
    6.3.3 指针作为函数的返回值 197
    6.3.4 指向函数的指针 198
    6.3.5 带指针参数的main函数 201
    §6.4 动态内存分配与动态数组 202
    6.4.1 动态内存分配 202
    6.4.2 void类型指针 204
    6.4.3 动态数组 205
    §6.5 案例程序设计 207
    6.5.1 狸猫换太子 207
    6.5.2 舞伴的搭配 208
    6.5.3 猴子选大王 210
    6.5.4 约瑟夫问题 210
    本章小结 213
    本章习题 213
    第7章 利用构造类型编程 218
    §7.1 结构体类型 218
    7.1.1 结构体的引出与定义 218
    7.1.2 结构体变量的引用与初始化 222
    7.1.3 结构体数组 223
    7.1.4 结构体指针 226
    7.1.5 结构体与函数 228
    §7.2 使用结构体指针处理链表 231
    7.2.1 链表的引出 231
    7.2.2 链表结点定义与动态存储 232
    7.2.3 链表的建立 233
    7.2.4 链表的输出 235
    7.2.5 链表的插入 236
    7.2.6 链表的删除 237
    7.2.7 链表的合并 239
    §7.3 共用体类型 240
    7.3.1 共用体的引出 240
    7.3.2 共用体的定义 241
    7.3.3 共用体变量的引用 243
    §7.4 枚举类型与typedef语句 244
    7.4.1 枚举类型 244
    7.4.2 typedef语句 247
    §7.5 算法案例程序设计 249
    7.5.1 选美比赛 249
    7.5.2 奖学金制度 251
    7.5.3 作业调度方案 253
    7.5.4 机器人控制指令 256
    本章小结 257
    本章习题 258
    第8章 文件操作 262
    §8.1 文件操作概述 262
    8.1.1 文件概念的引出 262
    8.1.2 文件的基本类型 264
    8.1.3 文件缓冲区与类型指针 265
    8.1.4 文件操作的基本步骤 266
    §8.2 文件的打开与关闭 267
    8.2.1 文件的打开 268
    8.2.2 文件的关闭 269
    §8.3 文件的顺序读/写操作 270
    8.3.1 读/写一个字符 270
    8.3.2 读/写一个字符串 272
    8.3.3 读/写一个数据块 273
    8.3.4 格式化读/写函数 275
    §8.4 文件的随机读/写操作 277
    8.4.1 文件定位函数 277
    8.4.2 返回文件当前位置的函数 279
    §8.5 文件读/写出错的检测 280
    8.5.1 文件读/写结束检查函数 280
    8.5.2 文件出错检查函数 281
    8.5.3 文件出错复位函数 281
    §8.6 算法案例程序设计 282
    8.6.1 海上逃生 282
    8.6.2 谁去谁留 284
    8.6.3 探险队走出泥潭 285
    8.6.4 筛选游戏卡 287
    本章小结 288
    本章习题 288
    第9章 C++程序设计 291
    §9.1 C++对C的基本扩充 291
    9.1.1 对输入/输出语句的扩充 291
    9.1.2 对变量说明的扩充 293
    9.1.3 对自定义函数的扩充 293
    9.1.4 对变量的引用扩充 296
    9.1.5 对运算符的扩充 298
    §9.2 类和对象 300
    9.2.1 类的引出 300
    9.2.2 类的声明 301
    9.2.3 类的成员函数 303
    9.2.4 对象声明和引用 305
    §9.3 构造函数和析构函数 307
    9.3.1 构造函数 307
    9.3.2 析构函数 309
    §9.4 友元和静态成员 311
    9.4.1 友元 311
    9.4.2 静态成员 312
    §9.5 类的继承与派生 315
    9.5.1 继承与派生的引出 315
    9.5.2 创建派生类的方法 317
    9.5.3 派生类的访问控制 318
    9.5.4 派生类的构造函数与析构函数 321
    §9.6 算法案例程序设计 323
    9.6.1 学生成绩管理 323
    9.6.2 建立学生成绩派生类 325
    本章小结 326
    本章习题 327
    第10章 综合应用程序设计 330
    §10.1 电子万年历 330
    10.1.1 系统设计目标 330
    10.1.2 系统需求分析 331
    10.1.3 系统总体设计 331
    10.1.4 系统功能实现 335
    §10.2 俄罗斯方块游戏 338
    10.2.1 系统设计目标 338
    10.2.2 系统需求分析 338
    10.2.3 系统总体设计 339
    10.2.4 系统功能实现 343
    §10.3 图书借阅管理系统 345
    10.3.1 系统设计目标 345
    10.3.2 系统需求分析 345
    10.3.3 系统总体设计 346
    10.3.4 系统功能实现 349
    §10.4 学生成绩管理系统 351
    10.4.1 系统设计目标 351
    10.4.2 系统需求分析 351
    10.4.3 系统结构设计 352
    10.4.4 使用结构体设计 354
    10.4.5 使用链表设计 356
    10.4.6 使用类设计 358
    本章小结 360
    本章习题 360
    参考文献 363

最新评论共有 0 位网友发表了评论
发表评论
评论内容:不能超过250字,需审核,请自觉遵守互联网相关政策法规。
用户名: 密码:
匿名?
注册