数据结构、算法于应用 C++ 语言描述 第二版 第一章习题

AI权益加码!Claude Code、Cursor等20+工具免费用! 购周边限时加赠Coding Plan Lite,畅享主流AI工具!学习进阶更高效! 阅读详情

c++  回顾 

1.函数交换不能交换实际参数的值,因为x和y是值参数。调用交换(a, b)导致实际参数a和b的值分别复制到形式参数x和y中。然后,在swap的主体中交换x和y的值,函数终止。在终止时,x和y的新值不会复制回实际参数中。因此,实际参数的值不受函数的影响。为了使函数正常工作,我们应该改为

void swap(int&, int&y)
{
    int temp = x;
     x= y;
    y=temp;
}

2.编写一个函数模板count 返回值为数组a[0:n-1] 中value出现的次数。

template <class T>
int count(T a[],  const T& value)
{// Return number of occurrences of value in a[0:n-1].

   int theCount = 0;
   for (int i = 0; i < n; i++)
      if (a[i] == value)
         theCount++;
   return theCount;
}

3.编写一个函数模板fill 给数组a[start:end-1] 赋值value

template <class T>
void fill(T* a, int start, int end, const T& value)
{// Set a[start:end-1].
   for (int i = start; i < end; i++)
      a[i] = value;
}

5.编写一个函数模板iota 使a[i]=value+i,0<=i<n;

template <class T>
void iota(T* a, int n, const T& value)
{// Set a[i] = a[i] + value, 0 <= i < n.
   for (int i = 0; i < n; i++)
      a[i] += value;
}

7.编写一个函数模板mismatch, 返回值使不等式a[i] 不等于b[i]成了的最小索引i, 0<=i<n;

template <class T>
int mismatch(T* a, T* b, int n)
{// Return smallest i such that a[i] != b[i].
 // Return n if no such i.
   for (int i = 0; i < n; i++)
      if (a[i] != b[i])
         return i;

   // no mismatch
   return n;
}

9.下面语句调用分别调用哪个abc函数?那一句会出现错误?为什么?

1.count<<abc(1, 2, 3)<<endln
函数调用的签名与程序1.1中abc函数的签名一致。因此,调用程序1.1的abc函数
2.count<<abc(1.0F, 2.0F, 3.0F)<<endln
函数调用的签名与程序1.2的abc函数的签名一致。因此,调用程序1.2的abc功能
3.count<<abc(1, 2, 3.0F)<<endln
函数调用的签名与abc函数的签名不一致。由于可以实现从float到int和从int到float的类型转换,c++无法解决使用哪个函数,并给出编译时错误。
4.count<<abc(1.0, 2.0, 3.0)<<endln
实际参数的类型是double。c++无法解决使用哪个函数,并给出一个编译时错误,因为可以将double类型转换为int和float类型

11. 从做练习2 当n<1 时抛出char* 异常。

template <class T>
int count(T a[], int n, const T& value)
{// Return number of occurrences of value in a[0:n-1].
   if (n < 1)
      throw "n must be >= 1";

   int theCount = 0;
   for (int i = 0; i < n; i++)
      if (a[i] == value)
         theCount++;
   return theCount;
}

 

13编写一个函数模板 changeLength1D 它将原始一维数组由原有长度变为新长度 ,把原数组的千 min(oldLength, newLength)长度的数据复制到新数组中,释放原数组的内存。

template<class T>
void changeLength1D(T*& a, int oldLength, int newLength)
{
   if (newLength < 0)
      throw illegalParameterValue("new length must be >= 0");

   T* temp = new T[newLength];              // new array
   int number = min(oldLength, newLength);  // number to copy
   copy(a, a + number, temp);
   delete [] a;                             // deallocate old memory
   a = temp;
}

15

1.数据成员元的类型为long。赋值给无符号long类型的变量的最大值是2^{32}- 1。美分的最大允许值是99美分。
因此,当使用程序1.13的表示法时,允许的最大货币值是2^{32}- 1美元99美分。
因为我们是分开存储符号的,所以最小的货币值就是最大值的负数。
2.赋值给int类型的变量的最大值是2^{31}- 1。美分的最大允许值是99美分。
当美元和美分的数据类型改为int时,允许的最大货币值是2^{31}- 1美元和99美分。
因为我们是分开存储符号的,所以最小的货币值就是最大值的负数。
3.为了避免在转换中出现错误,结果(a1和a2)不应该超过MAX_VALUE = 2^{32}-1。
因此,美元金额不应该超过MAX_VALUE / 100。即使美元数量可能不超过MAX_VALUE / 100,
该方法也可能不会给出正确的结果。为了确保结果正确,金额的总和不应该超过MAX_VALUE / 100。

17. 使用程序 1-19 的代码完成练习 16.

void input()
{
   // input the amount as a double
   cout << "Enter the currency amount as a real number" << endl;
   double theValue;
   cin >> theValue;
   
   // set the value
   setValue(theValue);
}
   
currency subtract(const currency& x)
{// Return *this - x.
   currency result;
   result.amount = amount - x.amount;
   return result;
}
   
currency percent(float x)
{// Return x percent of *this.
   currency result;
   result.amount = (long) (amount * x / 100);
   return result;
}
   
currency multiply(float x)
{// Return this * x.
   currency result;
   result.amount = (long) (amount * x);
   return result;
}
   
currency divide(float x)
{// Return this / x.
   currency result;
   result.amount = (long) (amount / x);
   return result;
}

 

数据结构习题(包含答案) c语言数据结构期末考试题(包含答案) 阅读详情

相关推荐

数据结构c语言严蔚敏第二课后答案

数据结构c语言第二课后答案严蔚敏 1.自学编程,难免思路阻塞,收集更新了严蔚敏,吴伟民数据结构-C语言》各章节的课本源码和配套习题集答案解析,目的是为了整理数据结构中的知识点,并与网友交流意见,集思广益,共同进步。这里是所有的源码和课后习题实现目录: 这些源码和答案还有 数据结构 严蔚敏(c语言第二PDF书籍 下载地址在文章最下方: 02.本源码与解析涵盖了《数据结构》课本和习题集...

bookanddream的博客 1万+

数据结构算法应用 C++语言描述》- 第1章 练习题答案

解释:因为形参没有使用引用。形参是通过对实参的值进行的复制得到的,所以函数体中任何对形参的修改都不会作用于实参。

七哥地盘 887

数据结构算法应用 C++语言描述》原书第2源码详解

数据结构是计算机存储、组织数据的方式,它决定了数据操作的效率和算法的实现复杂度。对于任何IT专业人员来说,无论是进行软件开发还是系统分析,深刻理解数据结构都是必不可少的基础技能。数据结构(Data Structure)是数据元素的集合以及数据元素之间关系的描述,它不仅关注数据本身,还关注数据之间的关联方式。从逻辑上划分,数据结构主要分为两大类:线性结构和非线性结构。节点(Node):通常包含一个数据字段和一个指向下一个节点的指针。链表(LinkedList)

weixin_42515392的博客 783

数据结构C++)》:第一章数据结构概论

第一章数据结构概论0.简单介绍1.数据结构的概念1.1 数据与数据结构1.2 数据结构的分类(1)**线性结构(linear structure)**(2)**非线性结构(nonlinear structure)**(3)用集合和关系形式化描述数据结构1.3 数据结构的存储(物理)结构(1)**顺序存储方法(sequential storage)**(2)**链接存储方法(linked storage)**(3)**索引存储方法(indexed storage)**(4)**散列存储方法(hashing

让步如故的博客 1689

数据结构算法分析(C++语言)_张琨 第一章课后习题答案

第一章 绪论 一、选择题 1. A B  2.B  3.B  4. D  5.A  6.A  7.C  8. B  9.D  10. A 二、填空题 1. 逻辑关系  2.树形结构 图状结构 3.链式存储结构  4. 没有 1 没有 1 5. 前驱 1 后继 多个  6. 多个 7.有穷性 确定性 可行性 8.确定性 9.顺序存储结构  10.空间复杂度 三、判断题

sgzqc的专栏 1万+

数据结构算法应用C++描述——第一章习题代码

1-1修改后的代码为 //chp1_1 //修改交换函数 void swapChp1(int& x, int& y) {//交换整数x和y int temp = x; x = y; y = temp; } 1-2编写一个模板函数count,返回值是数组a[0:n-1]中value出现的次数。测试你的代码。 //chp1_2 //编写一个模板函数count,返回值为数组a[0:n-1]中value出现的次数 //函数参数为数组,待查询的值,数组长度 template

敲困难的代码猿的博客 2922

数据结构算法应用C++语言描述 课后习题答案(持续更新中)

这个系列的专栏记载了本书的一些课后习题的答案(编程题目,画图题及问答题不涉及) 第一章 点击查看 第二章 点击查看 第五章 点击查看 第六章 点击查看

xufuqiang2017的博客 1万+

数据结构算法应用 C++语言描述 第一章课后习题

数据结构算法应用 C++语言描述 第一章课后习题 Q12 #include <iostream> using namespace std; template <class T> void make2dArray(T ** &x, int numberOfrows, int *rowSize) { // 先将x实例化,传入的参数只有一个名字,没有实际位置 x = new T *[numberOfrows]; for(int i=0;i<nu

xufuqiang2017的博客 2980

数据结构算法分析(C++语言)张琨 课后答案———第一章

数据结构算法分析(C++语言)张琨答案———第一章 资源来自网络,有错误请联系我更正(772173629),侵权请联系我删除,谢谢!

zim123zim的博客 4203

数据结构算法应用 C++语言描述 第二习题

数据结构算法应用 C++语言描述 第二习题 Q36 #include <iostream> using namespace std; int t1(int n) { if(n == 0) { return 2; } else { return 2 + t1(n - 1); } } int t5(int n) { if(n == 0) return 1; else

xufuqiang2017的博客 1352

数据结构算法应用c++语言描述(答案)

https://www.cise.ufl.edu/~sahni/dsaac/view.htm

Beyond欣 1万+

数据结构算法应用 C++语言描述 第5章课后习题

数据结构算法应用 C++语言描述 第5章课后习题 开始之前需要强调一下,由于所有的问题都是在模板类下实现,且模板类不能分开实现(即不能分别用.h文件和.cpp文件),所以函数的定义和实现都在.h文件中实现。 首先构造虚基类linearList.h 这些都是从书上抄下来的 #ifndef LINEARLIST_H #define LINEARLIST_H #include <iostream> // 只有一系列待实现的方法,没有数据成员 template<class T> c

xufuqiang2017的博客 2380

数据结构算法应用C++语言描述第二第一章部分练习参考答案

1、 void swap(int& x,int& y) {//交换x,y int temp=x; x=y; y=temp; } 2、 template size_t count(const T (&a)[N],const T& value) { size_t c_num=0; for(size_t i=0;i<N;i++) //使用支持c++11的编译器还可以直接使用

chenmoshashou2的博客 7162

数据结构算法应用 C++语言描述 第6章习题

数据结构算法应用 C++语言描述 第6章习题1、chain.h文件 所包含的部分算法2、extendChain.h 部分习题3、doubleLinkedList.h4、doubleCircleList.h5、circleListWithHeader.h6、doubleCircularListWithHeader.h linearList.h 和之前章节的相同 1、chain.h文件 所包含的部分算法 #ifndef CHAIN_H #define CHAIN_H #include "linearLis

xufuqiang2017的博客 2583

探索数据结构算法的奥秘:《数据结构算法应用C++语言描述》资源库推荐

探索数据结构算法的奥秘:《数据结构算法应用C++语言描述》资源库推荐 去发现同类优质开源项目:https://gitcode.com/ 项目介绍 在计算机科学的学习旅程中,数据结构算法无疑是核心中的核心。为了帮助广大学习者更好地掌握这一领域的知识,我们隆重推荐《数据结构算法应用C++语言描述》一书的配套资源库。这个开源项目不仅提供了书中所有习题的详细解答,还包含了各个章节的代码示例...

gitblog_09798的博客 889

【亲测免费】 探索数据结构C++的奥秘:《殷人昆数据结构用面向对象方法与C++语言描述第二》扫描资源推荐

探索数据结构C++的奥秘:《殷人昆数据结构用面向对象方法与C++语言描述第二》扫描资源推荐 【下载地址】殷人昆数据结构用面向对象方法与C语言描述第二扫描 本仓库提供的是《殷人昆数据结构用面向对象方法与C++语言描述第二》的扫描资源文件。这本书虽然在网上有一些争议和吐槽,但仍然被一些学校作为教材使用 ...

gitblog_09802的博客 717
上一篇: win32程序权限提升 杨大毛windows核心编程视频记录
下一篇: IE中JS与C++交互 MFC
__嘉宾
博客等级 码龄9年 109粉丝 13原创
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值