• C++程序设计题解与拓展(第2版)/面向新工科专业建设计算机系列教材
  • C++程序设计题解与拓展(第2版)/面向新工科专业建设计算机系列教材
  • C++程序设计题解与拓展(第2版)/面向新工科专业建设计算机系列教材
  • C++程序设计题解与拓展(第2版)/面向新工科专业建设计算机系列教材
21年品牌 40万+商家 超1.5亿件商品

C++程序设计题解与拓展(第2版)/面向新工科专业建设计算机系列教材

12 2.0折 59 八五品

库存2件

山西晋中
认证卖家担保交易快速发货售后保障

作者翁惠玉、俞勇 著

出版社清华大学出版社

出版时间2019-09

版次1

装帧平装

货号136

上书时间2024-08-25

陶陶公子的书店

已实名 已认证 进店 收藏店铺

   商品详情   

品相描述:八五品
图书标准信息
  • 作者 翁惠玉、俞勇 著
  • 出版社 清华大学出版社
  • 出版时间 2019-09
  • 版次 1
  • ISBN 9787302532828
  • 定价 59.00元
  • 装帧 平装
  • 开本 16开
  • 纸张 胶版纸
  • 页数 361页
  • 字数 0.55千字
【内容简介】


本书是与c程序设计: 思想与方法(慕课版第3版)(翁惠玉、俞勇编著)配套的辅助教材。
本书与主教材的章安排接近相同。每一章首先结了主教材中对应章的主要内容以及重点、难点解答了主教材中的所有题。作为对主教材的补充本书在某些章后还增加了进一步拓展部分。通过对本书的学可以帮助读者进一步巩固程序设计的知识提高编程能力。
本书概念清楚题丰富可作为高等院校计算机专业或其他相关专业的“程序设计”课程的配套教辅也可作为计算机专业入学试的辅导书还可作为其他专业人员的参书。

【作者简介】


作者于上海交通大学,获博士,现为上海交通大学计算机系副教授。长期承担程序设计和数据结构的工作,主讲acm试点班和电信学院的程序设计和数据结构课程,这两门课程分别是上海市精品课程和重量精品课程。出版过教材三本:c程序设计:思想与方法(获上海交大很好教材)、数据结构:思想与实现(获上海市很好教材并入选十二五规划教材)、计算机网络。出版过教辅两本:数据结构:题解与拓展、计算机网络300题

精彩内容:

第    3    章分支程序设计3.1知识点回顾    分支程序设计可以根据不同的情况执行不同的处理过程。实现分支程序设计首先要能够区分不同的情况然后要有一个能够根据不同的情况执行不同语句的控制机制。前者由关系表达式和逻辑表达式完成后者由分支语句完成。    3.1.1关系表达式和逻辑表达式    关系运算符用于比较两个对象。c提供了6个关系运算符: (大于)、=(大于或等于)、==(等于)、!=(不等于)。前4个运算符的优先级相同后两个运算符的优先级相同。前4个运算符的优先级高于后两个。    用关系运算符可以将两个表达式连接起来形成一个关系表达式关系表达式的格式如下: 表达式关系运算符表达式参加关系运算的表达式可以是c的各类合法的表达式包括算术表达式、逻辑表达式、赋值表达式以及关系表达式本身。关系表达式的计算结果是布尔型的值: true和fale。    除了关系运算符外c还定义了3个逻辑运算符即!(逻辑非)、(逻辑与)和‖(逻辑或)它们可以将关系表达式组合起来形成更加复杂的情况。由逻辑运算符连接而成的表达式称为逻辑表达式。    !是一元运算符和‖是二元运算符。它们之间的优先级: !很高次之‖大力度优惠。事实上!运算是所有c运算符中优先级很高的。它们的准确意义可以用真值表来表示。给定布尔变量p和q运算、‖运算和!运算的真值表如表3?1所示。    当c程序在计算exp1  exp2或exp1 ‖ exp2形式的表达式时是先计算exp1。一旦exp1的值能确定整个表达式的值时终止计算不再计算exp2这称为短路求值。短路求值的一个好处是可以减少计算量另一个好处是个条件能控制第二个条件的执行。在很多情况下复合条件的第二部分只有在部分满足某个条件时才有意义。例如要表达以下两个条件: 整型变量x的值非零;x能整除y。由于表达式y%x只有在x不为0时才计算用c语言可表达这个条件测试为(x != 0)  (y % x = = 0)而该表达式在其他语言中可能出现除0的错误。表3?1运算、‖运算和!运算的真值表pqp  qp ‖ q!pfalefalefalefaletruefaletruefaletruetruefalefaletruefaletruetruetruetrue〖3〗c程序设计题解与拓展(第2版)第3章分支程序设计〖3〗3.1.2分支语句    c提供两种分支语句: 两分支语句(if)和多分支语句(witch)。    if语句用于处理两分支的情况它有以下两种形式: if (条件)语句    if (条件)语句1ele 语句2种形式表示如果条件为真执行条件后的语句否则什么也不做;第二种形式表示条件为真时执行语句1否则执行语句2。条件为true时所执行的语句称为if语句的then子句;条件为fale时执行的语句称为ele子句。    条件部分原则上应该是一个关系表达式或逻辑表达式但事实上在c的if语句中的条件可以为任意类型的表达式可以是算术表达式也可以是赋值表达式。表达式的结果为0表示fale非0表示true。语句部分可以是对应于某种情况所需要的处理语句。如果处理很简单只需要1条语句能完成则可放入此语句。如果处理相当复杂需要许多语句才能完成可以用一个程序块,即用一对大括号{}将一组语句括起来在语法上大括号及其中的语句相当于1条语句。    对于一些很好简单的分支情况c语言提供了另一个更加简单的机制: “? :”运算符。这个运算符被称为问号冒号由问号冒号运算符连接起来的表达式称为条件表达式。条件表达式有3个运算数。它的一般形式如下: 条件 ? 表达式1 : 表达式2c程序遇到“? :”运算符时首先计算条件的值。如果条件结果为true则计算表达式1的值并将它作为整个表达式的值;如果条件结果为fale则计算表达式2的值,并将它作为整个表达式的值。    当一个程序逻辑上要求根据特定条件做出真判断并执行相应动作时if语句是理想的解决方案。然而还有一些程序需要有两个以上的可选项这些选项被划分为一系列互相排斥的情况。这时可以用witch语句。witch语句的语法如下: witch (控制表达式){    cae常量表达式1:语句1;    cae常量表达式2:语句2;    ?    cae常量表达式n:语句n;    default:语句n1;    }witch语句的主体分成许多独立的由关键字cae或default开头的语句组。一个cae关键字和紧随其后的下一个cae或default之间所有语句合称为cae子句。default关键字及其相应语句合称为default子句。    witch语句的执行过程如下。先计算控制表达式的值。当控制表达式的值等于常量表达式1时执行语句1到语句n1;当控制表达式的值等于常量表达式2时执行语句2到语句n1;以此类推当控制表达式的值等于常量表达式n时执行语句n到语句n1;当控制表达式的值与任何常量表达式都不匹配时执行语句n1。    default子句可以省略。当default子句被省略时如果控制表达式找不到任何可匹配的cae子句时退出witch语句。    在多分支的情况中通常对每个分支的情况都有不同的处理因此希望执行完相应的cae子句后退出witch语句。这可以通过break语句实现break语句的作用是跳出当前的witch语句。将break语句作为每个cae子句的很后一个语句可以使各个分支互不干扰。这样witch语句可以写成witch (控制表达式){    cae常量表达式1:语句1;break;    cae常量表达式2:语句2;break;    ?    cae常量表达式n: 语句n;break;    default:语句n1;    }3.2题解答〖4/5〗3.2.1简答题1. 写出测试下列情况的关系表达式或逻辑表达式。    (1) 测试整型变量n的值为0~9包含0和9。    (2) 测试整型变量a的值是整型变量b的值的一个因子。    (3) 测试字符变量ch中的值是一个数字。    (4) 测试整型变量a的值是奇数。    (5) 测试整型变量a的值是5。    (6) 测试整型变量a的值是7的倍数。    【解】    (1) n = 0  n     (2) b % a == 0    (3) ch = 0  ch     (4) a % 2 == 1或a % 2    (5) a == 5    (6) a % 7 == 0    2. 设myflag声明为布尔型变量下面的if语句会有什么问题?if (myflag == true)【解】 这个语句的语法和运行结果都是正确的但有冗余判断。表达式myflag == true的值与变量myflag是一样的所以只要写成if(myflag)可以。    3. 设a=3、b=4c=5写出下列各逻辑表达式的值。    (1) abc  b==c    (2) a‖bc  bc    (3) !(ab)  !c    (4) (a!=b)‖(b    【解】    (1) abc  b==c    = true  fale    = fale    (2) a‖bc  bc    = true‖bc  bc    = true    (3) !(a  b)  !c    = true  fale    = fale    (4) (a!=b)‖(b     = true‖(b     = true    4. 用一个if语句重写下列代码。if (ch ==e)c;    if (ch ==e) cout     counte;    ele if (ch ==a ‖ ch ==a)    counta;    ele if (ch ==i ‖ ch ==i)    counti;    ele    cout     cae e: cae e:counte; break;    cae a : cae a: counta; break;    cae i : cae i: counti;; break;    default : cout     }6. 如果a=5、b=0、c=1写出下列表达式的值以及执行了表达式后变量a、b、c的值。    (1) a‖(b = c)    (2) b  c  a    (3) c = ( a == b)    (4) (a= 5) ‖ b ‖c    (5) b     【解】    这些表达式的结果如表3?2所示。续表表3?26题序号a的值b的值c的值表达式的值(1)501true(2)501true(3)5000(4)010fale(5)501true7. 修改下面的witch语句使之更简洁。witch (n) {    cae 0: n = x; x; break;    cae 1: x; break;    cae 2: x; break;    cae 3: m = mn; x; n = 2; break;    cae 4: n = 2;    }【解】 观察上述witch语句发现cae 1和cae 2的处理接近相同cae 0的很后一个语句与cae 1相同这3个部分可以合并在一起。cae 3的很后一个语句与cae 4接近相同因此也可以合并在一起。很终形成的witch语句如下:witch (n) {    cae 0: n = x;    cae 1:    cae 2: x; break;    cae 3: m = mn; x;    cae 4: n = 2;    }8. 某程序需要判断变量x的值是否在0~10(不包括0和10)程序采用语句如下:if (0     ele cout     【解】 在c中“    ele cout     1. 从键盘输入3个整数输出其中的优选值、很小值和均值。    【解】 首先,将个数既作为优选值max也作为很小值min。然后,处理第二个数。将第二个数与很小值相比如果小于很小值将第二个数作为很小值。再将第二个数与优选值相比如果大于优选值将第二个数作为优选值。很后,处理第三个数处理过程与第二个数相同。现在max中保存的数是三个数中的优选值min中保存的数是三个数中的很小值。均值avg是将这3个整数相加然后除以3。这个算法的实现过程如代码清单3?1。    代码清单3?1求3个整数的优选值、很小值和均值的程序include     uing namepace td;    int main()    {    double avg;    int num1 num2 num3 max min;    cout     cin  num1  num2  num3 ;    max = min = num1;    if (num2  max) max = num2;    if (num2     if (num3  max) max = num3;    if (num3     avg = (num1  num2  num3 ) / 3.0;    cout     cout     cout     return 0;    }2. 编写一个程序输入一个整数判断输入的整数是奇数还是偶数。例如输入11输出为11是奇数【解】 判断一个整数是奇数还是偶数可以通过检验这个整数除2后的余数。如果余数为0是偶数否则是奇数。这个简单的判断可以通过条件表达式来实现。完整的程序如代码清单3?2所示。    代码清单3?2判断奇偶数的程序include     uing namepace td;    int main()    {    int num;    cout     cin  num;    cout     return 0;    }3. 输入两个二维面上的点判断哪个点离原点更近。    【解】 二维面上的点(xy)离原点的距离为x2y2只要对输入的两个点分别计算x2y2并比较两个值的大小。具体实现如代码清单3?3。    代码清单3?3判断两个点中哪个点离原点更近include     uing namepace td;    int main()    {    double x1 x2 y1 y2;    cout     cin  x1  y1;    cout     cin  x2  y2;    if ((x1?x1  y1 ? y1)    cout     eleif ((x1?x1  y1 ? y1)  (x2?x2  y2?y2))    cout     ele cout     return 0;    }4. 有一个函数其定义如下:    y=x(x    2x1(1≤x    3x11(x≥10)    编一程序输入x输出y。    【解】 这个函数有3种不同的情况可以用if语句区分3种情况并针对3种情况做出不同的处理完成了这个功能。具体程序如代码清单3?4。    代码清单3?4函数计算程序include     uing namepace td;    int main()    {    double x y;    cout     cin  x;    if (x     ele if (x     ele y = 3 ? x  11;    cout     }5. 编写一个程序输入一个二次函数判断该抛物线开向上还是向下输出顶点坐标以及抛物线与x轴和y轴的交点坐标。    【解】 二次函数f(x)=ax2bxc是一条抛物线。根据二次函数的质可知: 当a大于0时抛物线开向上否则开向下;顶点坐标是(b/(2a) (4?a?cb?b)/4/a);与x轴的交点是方程的两个根如果方程无根则无交点;与y轴的交点是x等于0时的y值也是c的值。据此可得代码清单3?5。    代码清单3?5输出抛物线的各个特征值include     include     uing namepace td;    int main()    {    double a b c;    cout     cin  a b  c;    if(a == 0) {    cout     return 1;    }    if (a  0) cout     ele cout     cout     if(b?b  4 ? a ? c     elecout     cout     return 0;    }6. 编写一个程序输入一个二维面上的直线方程判断该方程与x轴和y轴是否有交点输出交点坐标。    【解】 设直线方程为axbyc=0。如果a等于0且b不等于0方程简化为byc=0这是一条与x轴行的线所以与x轴无交点。但注意有个特例即当c等于0时该直线与x轴重叠即有无数个交点。如果a不等于0该直线与x轴的交点是y等于0时的x值即c/a。    如果b等于0且a不等于0方程简化为axc=0这是一条与y轴行的线所以与y轴无交点。但注意有个特例即当c等于0时该直线与y轴重叠即有无数个交点。如果b不等于0该直线与y轴的交点是x等于0时的y值即c/b。具体程序如代码清单3?6。    代码清单3?6求直线方程与x和y轴的交点include     uing namepace td;    int main()    {    double a b c;//ax  by  c = 0    cout     cin  a  b  c;    if (a == 0  b == 0 ) {    cout     return 1;    }    if (a == 0 )    if (c != 0 ) cout     ele cout     ele cout     if (b == 0 )    if (c != 0 ) cout     el
【目录】


章绪论1
1.1知识点回顾1
1.1.1计算机组成1
1.1.2程序设计语言2
1.1.3程序设计过程3
1.2题解答5
1.2.1简答题5
1.2.2编程题12
1.3进一步拓展12
1.3.1计算机为什么采用二进制12
1.3.2算法的评价13
第2章程序的基本组成14
2.1知识点回顾14
2.1.1c++程序的基本结构14
2.1.2常量与变量14
2.1.3数据的输入输出18
2.1.4算术运算18
2.1.5赋值运算19
2.2题解答21
2.2.1简答题21
2.2.2程序设计题27
2.3进一步拓展34
2.3.1“按位与”运算35
2.3.2“按位或”运算37
2.3.3“按位异或”运算38
2.3.4“取反”运算39
2.3.5“左移”运算402.3.6“右移”运算40
第3章分支程序设计43
3.1知识点回顾43
3.1.1关系表达式和逻辑表达式43
3.1.2分支语句44
3.2题解答45
3.2.1简答题45
3.2.2程序设计题48
〖3〗c++程序设计题解与拓展(第2版)〖3〗第4章循环程序设计63
4.1知识点回顾63
4.1.1循环63
4.1.2while循环64
4.1.3dowhile循环64
4.1.4break和continue语句65
4.2题解答65
4.2.1简答题65
4.2.2程序设计题67
4.3进一步拓展81
4.3.1goto语句81
4.3.2结构化程序设计82
4.3.3位运算的进一步讨论83
第5章批量数据处理——数组84
5.1知识点回顾84
5.1.1一维数组84
5.1.2二维数组85
5.1.3字符串86
5.2题解答88
5.2.1简答题88
5.2.2程序设计题90
5.3进一步拓展104
5.3.1特殊矩阵104
5.3.2对称矩阵105
5.3.3三角矩阵105
5.3.4稀疏矩阵106
第6章过程封装——函数107
6.1知识点回顾107
6.1.1函数的概念107
6.1.2函数的定义107
6.1.3函数的参数和返回值108
6.1.4数组作为函数的参数108
6.1.5重载函数109
6.1.6函数模板109
6.1.7变量的作用域与存储类别110
6.1.8递归程序设计111
6.1.9c++11的扩展112
6.2题解答113
6.2.1简答题113
6.2.2程序设计题117
6.3进一步拓展138
6.3.1模拟计算机程序的运行138
6.3.2模拟器的设计139
第7章间接访问——指针144
7.1知识点回顾144
7.1.1指针的概念144
7.1.2指针运算与数组144
7.1.3指针与动态内存分配145
7.1.4字符串的指针表示146
7.1.5指针、数组和字符串传递146
7.1.6引用与引用传递147
7.1.7多级指针与指向函数的指针148
7.1.8main函数的参数149
7.1.9lambda表达式149
7.2题解答150
7.2.1简答题150
7.2.2程序设计题151
第8章数据封装——结构体161
8.1知识点回顾161
8.1.1记录的概念161
8.1.2结构体变量的使用162
8.1.3结构体作为函数的参数163
8.1.4链表163
8.2题解答164
8.2.1简答题164
8.2.2程序设计题165
8.3进一步拓展174
第9章模块化开发177
9.1知识点回顾177
9.1.1自顶向下分解177
9.1.2模块划分177
9.1.3设计自己的库177
9.2题解答178
9.2.1简答题178
9.2.2程序设计题179
9.3进一步拓展195
9.3.1软件危机195
9.3.2软件工程196
0章创建新的类型199
10.1知识点回顾199
10.1.1面向对象的思想199
10.1.2面向对象程序设计的特点199
10.1.3类的定义200
10.1.4对象的使用201
10.1.5对象的构造与析构201
10.1.6c++11对构造的扩展202
10.1.7常量对象和常量成员函数204
10.1.8常量数据成员205
10.1.9静态数据成员与静态成员函数205
10.1.10友元206
10.2题解答206
10.2.1简答题206
10.2.2程序设计题209
10.3进一步拓展244
10.3.1不要随便改变复制构造的意义244
10.3.2计算机模拟程序245
1章运算符重载249
11.1知识点回顾249
11.1.1什么是运算符重载249
11.1.2运算符重载的方法249
11.1.3自定义类型转换函数250
11.2题解答251
11.2.1简答题251
11.2.2程序设计题255
11.3进一步拓展277
2章组合与继承278
12.1知识点回顾278
12.1.1组合278
12.1.2继承278
12.1.3虚函数与运行时的多态280
12.1.4虚析构函数280
12.1.5纯虚函数和抽象类281
12.2题解答281
12.2.1简答题281
12.2.2程序设计题284
12.3进一步拓展308
12.3.1避随意地继承308
12.3.2多态与switch语句308
3章泛型机制——模板310
13.1知识点回顾310
13.1.1类模板的定义310
13.1.2类模板的实例化310
13.1.3类模板的友元311
13.2题解答312
13.2.1简答题312
13.2.2程序设计题313
4章输入输出与文件320
14.1知识点回顾320
14.1.1基于控制台的输入输出321
14.1.2基于文件的输入输出323
14.2题解答326
14.2.1简答题326
14.2.2程序设计题327
5章异常处理351
15.1知识点回顾351
15.1.1异常抛出351
15.1.2异常检测和处理351
15.1.3异常规格声明352
15.2题解答352
15.2.1简答题352
15.2.2程序设计题354
6章容器和迭代器358
16.1知识点回顾358
16.1.1容器358
16.1.2迭代器358
16.2题解答359
16.2.1简答题359
16.2.2程序设计题359
参文献362

点击展开 点击收起

—  没有更多了  —

以下为对购买帮助不大的评价

此功能需要访问孔网APP才能使用
暂时不用
打开孔网APP