首页 > 其他分享 >第一章练习1-9

第一章练习1-9

时间:2024-01-21 15:57:15浏览次数:29  
标签:函数 int 练习 value 第一章 template 实参 模板

1.解释为什么程序1-7的交换函数没有把形参x和y所对应的实参的值交换。如何修改代码,使实参的值得到交换?

程序1-7 交换两个整数的不正确的代码
void swap(int x,int y)
{//交换整数x和y
    int temp=x;
    x=y;
    y=temp;
}

调用swap函数是将实参的值复制一份给x和y,本质是交换了x和y而没有交换实参,swap函数使用结束后x和y的值也被释放,使用实参值没有被修改。

代码修改如下
void swap(int &x,int &y) //使用引用传参传进来的值是实参的值
{//交换整数x和y
    int temp=x;
    x=y;
    y=temp;
}

2.编写一个模板函数count,返回值是a[0:n-1]中value出现的次数。测试你的代码。

template<class T>
int count(T* a,int n,const T& value)
{
    int sum = 0;
    for(int i=0;i<n;++i)
        if(a[i]==value)
            ++sum;
    return sum;
}

3.编写一个模板函数fill,给数组a[start:end-1]赋值value。测试你的代码。

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

4.编写一个模板函数inner_product,返回值是$\sum\limits_{i = 0}^{{\rm{n - 1}}} {a[i]*b[i]} $。测试你的代码。

template<class T>
int inner_product(T* a,T* b,int n)
{
    T sum = 0;
    for(int i=0;i<n;++i)
        sum+=a[i]*b[i];
    return sum;
}

5.编写一个模板函数iota,使a[i]=value+i,0≤i<n。测试你的代码。

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

6.编写一个模板函数is_sorted,当且仅当a[0:n-1]有序时,返回值是true。测试你的代码。

template<class T>
bool is_sorted(const T* a, int size) {
    //only one item, ordered
    if (1 == size) {
        return true;
    }
    bool asc_ordered = false, desc_order = false;
    for (int i = 0; i < size - 1; ++i) {
        if (a[i] == a[i + 1]) {
            continue;
        } else if (a[i] < a[i + 1]) {
            asc_ordered = true;
        } else {
            desc_order = true;
        }
        if (asc_ordered && desc_order) {
            return false;
        }
    }
    return true;
}

7.编写一个模板函数mismatch,返回值是使不等式a[i]≠b[i]成立的最小索引i,0≤i<n。

template <class T>
int mismatch(T* a, T* b, int n)
{
   for (int i=0;i<n;++i)
      if (a[i]!=b[i])
         return i;
   return n;
}

8.下面的函数头是具有不同签名的函数吗?为什么?

1) int abc(int a,int b,int c)
2) float abc(int a,int b,int c)

是相同签名(int,int,int),函数签名是由函数的形参类型以及形参个数确定的。

9.假设有一个程序包含了程序1-1和程序1-2的abc函数。下面的语句分别调用了哪一个abc函数?哪一条语句会出现编译错误?为什么?

1)cout<<abc(1,2,3)<<endln;          // 调用 int 版本
2)cout<<abc(1.0F,2.0F,3.0F)<<endln; // 调用 float 版本
3)cout<<abc(1,2,3.0F)<<endln;       // 报错:调用重载函数不明确
4)cout<<abc(1.0,2.0,3.0)<<endln;    // 报错:形参类型是 double 而不是 float

ps:实际执行会报错:无法重载仅按返回类型区分的函数

标签:函数,int,练习,value,第一章,template,实参,模板
From: https://www.cnblogs.com/2333ljy/p/17977718

相关文章

  • 蓝桥杯准备---练习日志
    2024-01-17利用Cubemx配置usart中Asyn...和Syn....的意思是什么? 使用串口时报错如下------解决办法:添加st官方提供的串口驱动文件 修改底层printf内部的fputs代码---实现printf函数通过串口输出,需要利用LIB什么的......我猜测这个函数是向某个文件流中写......
  • 《程序是怎样跑起来的》第一章
    我是现代信息技术学院的李燕飞。第一章主要讲述了CPU对程序员来说到底是什么。CPU本质上是由名为集成电路的电子部件与大量的晶体管构成,而从功能上来区分,可以分成:寄存器,控制器,运算器,时钟。如同它们的名字,寄存器负责存储数据,控制器负责将数据写入与读出数据到寄存器,运算器负责对寄......
  • 前端学习-简单项目练习01-小兔鲜
    一些笔记使用flex-wrap换行(一行一个元素)ul{display:flex;flex-wrap:wrap;}ulli{flex:100%;}html中让img撑满整个divdiv要设置宽高,img也要有宽高且均为100%,最重要的是img要给display:block。<divid="mainDiv"style="width:100%;height:100%">......
  • 读后感第一章《系统科学方法概论》
    阅读完《系统科学方法概论》的第一章,我深感启发。这一章详细阐述了系统思想的发展史,系统的概念,内部关系,规律,方法,为我们打开了一个全新的视角,让我们对系统科学有了更深入的理解。首先,我被书中对系统科学的定义和范围的阐述所吸引。系统科学不仅是对单个系统的研究,更是对各种不同层......
  • 《程序是怎样跑起来的》第一章观后感
    我是计应232的学生张凯源,今天写《程序是怎样跑起来的》第一章观后感。这本书的第一章向我介绍了计算机最重要的组成部分之一“CPU”以及程序的基本概念和程序是如何运转的,通过学习第一章,我对计算机有了更为深入的了解,我知道了CPU的组成结构、它对于计算机的作业、程序的运行机制......
  • 《程序是如何跑起来的》第一章
    1.1节先向我们展现了程序运行流程接着阐述了CPU的内部组成部分,即寄存器、控制器、运算器和时钟这4个部分。最后解释了内存和程序的运行机制。1.2节提到了汇编语言,汇编语言通过助记符来编写程序,每一个原本是电气信号的机器语言的指令都会有一个与其相对应的助记符,汇编语言和机......
  • 《程序是怎样跑起来的》第一章
    心得:知道了许多关于CPU的知识,了解了低级编程语言(机械语言、汇编语言)和高级编程语言等(但我理解的比较浅)知识点(我觉得是的):1、程序是指令和数据的组合体2、CPU能够直接识别和执行的只有机器语言(CPU是用来表示计算机内部元件功能的术语)3、硬盘和磁盘等媒介上保存的程序被复制到内......
  • 程序是怎么跑起来的第一章阅读
    读了这本书的第一张,让我对电脑cpu结构的更加有所了解,刚开始只知道cpu是电脑运行效果的影响和温度的显示,后来才知道原来cpu对电脑这么的重要,一个电脑的好坏也取决于它cpu的性能如何,它的内部由寄存器,控制器,运算器和时钟四个部分构成,由程序员输入的命令在电脑后台变成程序编码,然后寄......
  • 第一章——对程序员来说CPU是什么
    这本书的第一章主要讲解的是CPU。那对于程序员来说CPU到底是什么呢?这一章便给出了答案。cpu是什么?CPU是CentralProcessingUnit(中央处理器)的缩写,也就是相当于计算机的大脑。它由寄存器、控制器、运算器、时钟构成,各部分之间由电流信号相互连通。CPU是寄存器的集合体,我们也需要......
  • 第一章读后感
    读第一章,我首先明白了程序是指示计算机每一步动作的一组指令,程序是由指令和数据组成的,CPU可以直接识别并使用的语言就是机器语言,正在运行的程序存储在内存里,内存中,用来表示命令和数据存储位置的数值就是内存地址,计算机的构成元件中,负责程序的解释和运行的是CPU这些概念。 这些......