备战秋招 | 笔试强训17

news2024/11/18 13:52:47

目录

一、选择题

二、编程题

三、选择题题解

四、编程题题解


一、选择题

1、假设A为抽象类,下列声明()是正确的

A. int fun(A);

B. A Obj;

C. A fun(int);

D. A *p;

2、虚函数可不可以重载为内联?

A. 可以

B. 不可以

C. 语法错误

3、下面有关虚函数的描述,说法错误的是?

A. 虚函数的作用是实现了继承性

B. 虚函数的作用就是实现“动态联编”,也就是在程序的运行阶段动态地选择合适的成员函数

C. 和类的静态成员函数与非类的成员函数相比,虚函数的效率较低

D. 要正确的实现虚函数,只能用一个基类的指针或者引用来指向派生类对象

4、下面这个代码输出的是()

#include <iostream>
#include <vector>
using namespace std;
int main(void)
{
    vector<int>array;
    array.push_back(100);
    array.push_back(300);
    array.push_back(300);
    array.push_back(300);
    array.push_back(300);
    array.push_back(500);
    vector<int>::iterator itor;
    for(itor=array.begin();itor!=array.end();itor++)
    {
        if(*itor==300)
        {
            itor=array.erase(itor);
        }
    }
    for(itor=array.begin();itor!=array.end();itor++)
    {
        cout<<*itor<<"";
    }
    return 0;
}

A. 100 300 300 300 300 500

B. 100 300 300 300 500

C. 100 300 300 500

D. 100 300

5、在 C++ 中,用于实现动态多态性的是( )。

A. 内联函数

B. 重载函数

C. 模板函数

D. 虚函数

6、调用一成员函数时, 使用动态联编的情况是()

A. 通过对象调用一虚函数

B. 通过指针或引用调用一虚函数

C. 通过对象调用静态函数

D. 通过指针或应用调用一静态函数

7、下面有关继承、多态、组合的描述,说法错误的是?

A. 封装,把客观事物封装成抽象的类,并且类可以把自己的数据和方法只让可信的类或者对象操作,对不可信的进行信息隐藏

B. 继承可以使用现有类的所有功能,并在无需重新编写原来的类的情况下对这些功能进行扩展

C. 隐藏是指派生类中的函数把基类中相同名字的函数屏蔽掉了

D. 覆盖是指不同的函数使用相同的函数名,但是函数的参数个数或类型不同

8、“引用”与多态的关系?

A. 两者没有关系

B. 引用可以作为产生多态效果的手段

C. 一个基类的引用不可以指向它的派生类实例

D. 以上都不正确

9、下面这段程序的输出是什么?

class A
{
public:
    A(){p();}
    virtual void p(){printf("A")}
    virtual ~A(){p();}
};
class B:public A
{
public:
    B(){p();}
    void p(){printf("B")}    
    ~B(){p();}
};
int main(int, char**)
{
    A* a=new B();
    delete a;
    return 0;
}

A. AABB

B. BBAA

C. ABAB

D. ABBA

10、以下代码的运行结果为()

class Base 
{
public:
    Base() 
    {
        echo();
    }
    virtual void echo() 
    {
        printf("Base");
    }
};
class Derived:public Base 
{
public:
    Derived() 
    {    
        echo();
    }
    virtual void echo() 
    {
        printf("Derived");
    }
};
int main() 
{
    Base* base = new Derived();
    base->echo();
    return 0;
}

A. DerivedDerivedDerived

B. DerivedBaseDerived

C. BaseDerivedBase

D. BaseDerivedDerived

二、编程题

1、杨辉三角的变形  题目链接

 2、计算某字符出现次数  题目链接

三、选择题题解

1、假设A为抽象类,下列声明()是正确的

A. int fun(A);

B. A Obj;

C. A fun(int);

D. A *p;

正确答案:D

题解:

         抽象类不能实例化出对象;A选项,传值传参必然需要调用拷贝构造,实例化对象故错误;B选项,定义一个A类,也要实例化A类对象;C选项,传值返回必须调用拷贝构造,则必须实例化出对象;D选项,定义指针不会实例化出对象;

2、虚函数可不可以重载为内联?

A. 可以

B. 不可以

C. 语法错误

正确答案:B

 题解:

        虚函数不能重载为内联函数,因为内联函数并不会有地址,只是在调用出展开;

3、下面有关虚函数的描述,说法错误的是?

A. 虚函数的作用是实现了继承性

B. 虚函数的作用就是实现“动态联编”,也就是在程序的运行阶段动态地选择合适的成员函数

C. 和类的静态成员函数与非类的成员函数相比,虚函数的效率较低

D. 要正确的实现虚函数,只能用一个基类的指针或者引用来指向派生类对象

正确答案:A

题解:

         虚函数是实现多态的条件之一,于继承并无关系;故A选项错误;

4、下面这个代码输出的是()

#include <iostream>
#include <vector>
using namespace std;
int main(void)
{
    vector<int>array;
    array.push_back(100);
    array.push_back(300);
    array.push_back(300);
    array.push_back(300);
    array.push_back(300);
    array.push_back(500);
    vector<int>::iterator itor;
    for(itor=array.begin();itor!=array.end();itor++)
    {
        if(*itor==300)
        {
            itor=array.erase(itor);
        }
    }
    for(itor=array.begin();itor!=array.end();itor++)
    {
        cout<<*itor<<"";
    }
    return 0;
}

A. 100 300 300 300 300 500

B. 100 300 300 300 500

C. 100 300 300 500

D. 100 300

正确答案:C

题解:

         此处考察vector中erase函数时迭代器失效问题,当我们删除vector中一个元素时,返回的是删除元素的下一个元素位置的迭代器,当vector有 100 300 300 300 300 500时,我们进入循环,首先判断第一个元素是否等于300,结果是不等于300,因此对迭代器进行++来到第二个元素的位置,进入下一个循环;继续判断发现迭代器指向的值等于300,因此删除这个元素,并返回下一个元素的位置,此时注意了,我们除了 if 语句后,再次对迭代器进行了++,而正好跳过了一个300,后面依次类推,这就是300没有删除干净的原因,最后答案为C;

5、在 C++ 中,用于实现动态多态性的是( )。

A. 内联函数

B. 重载函数

C. 模板函数

D. 虚函数

正确答案:D

题解:

         我们通过函数重载完成静态的多态,虚函数的重写完成动态多态;故选D;

6、调用一成员函数时, 使用动态联编的情况是()

A. 通过对象调用一虚函数

B. 通过指针或引用调用一虚函数

C. 通过对象调用静态函数

D. 通过指针或应用调用一静态函数

正确答案:B

题解:

         所谓动态联编指的是程序在编译期间,无法确定调用哪个函数,只能在运行期间才可以得知,简单来说,这不就是我们C++里的多态嘛,而形成多态有两个条件,并且缺一不可,其一是虚函数的重写;其二是父类的指针或引用调用;故选B;

7、下面有关继承、多态、组合的描述,说法错误的是?

A. 封装,把客观事物封装成抽象的类,并且类可以把自己的数据和方法只让可信的类或者对象操作,对不可信的进行信息隐藏

B. 继承可以使用现有类的所有功能,并在无需重新编写原来的类的情况下对这些功能进行扩展

C. 隐藏是指派生类中的函数把基类中相同名字的函数屏蔽掉了

D. 覆盖是指不同的函数使用相同的函数名,但是函数的参数个数或类型不同

正确答案:D

题解:

         D选项,覆盖即虚函数的重写,要求函数返回值相同,函数名相同,函数参数列表相同(除协变与析构函数的特殊情况除外);故D错误;

8、“引用”与多态的关系?

A. 两者没有关系

B. 引用可以作为产生多态效果的手段

C. 一个基类的引用不可以指向它的派生类实例

D. 以上都不正确

正确答案:B

题解:

         形成多态的条件之一就是父类的指针或引用来调用虚函数;

9、下面这段程序的输出是什么?

class A
{
public:
    A(){p();}
    virtual void p(){printf("A")}
    virtual ~A(){p();}
};
class B:public A
{
public:
    B(){p();}
    void p(){printf("B")}    
    ~B(){p();}
};
int main(int, char**)
{
    A* a=new B();
    delete a;
    return 0;
}

A. AABB

B. BBAA

C. ABAB

D. ABBA

正确答案:D

题解:

         仔细观出题目,我们的有一对父子类,其构造和析构函数都调用了虚函数p,且p在子类完成了重写;要做这题,首先我们得知道在构造函数与析构函数中,我们调用虚函数不会有多态性;比如在调用构造函数时,虚表还没产生,故没有多态性;我们在看题目我们首先new了一个子类对象,该对象会先调用父类的构造,构造函数中调用函数不会有多态性,因此我们会打印A;随后调用子类的构造,同样调用p函数,打印B;接着我们delete base对象,base对象是父类的指针,且指向的是子类对象,此时达成了多态,先析构子类,在析构父类,析构函数中调用的函数也不会有多态,因此打印分别B、A;最终答案D;

10、以下代码的运行结果为()

class Base 
{
public:
    Base() 
    {
        echo();
    }
    virtual void echo() 
    {
        printf("Base");
    }
};
class Derived:public Base 
{
public:
    Derived() 
    {    
        echo();
    }
    virtual void echo() 
    {
        printf("Derived");
    }
};
int main() 
{
    Base* base = new Derived();
    base->echo();
    return 0;
}

A. DerivedDerivedDerived

B. DerivedBaseDerived

C. BaseDerivedBase

D. BaseDerivedDerived

正确答案:D

题解:

         与第九题一样,构造函数内部调用了虚函数,不会有多态性;因此分别打印Base与Derived;然后我们通过父类对象的指针去调用虚函数,虚函数完成重写,达成多态,打印Derived;最后答案D;

四、编程题题解

1、杨辉三角的变形

思路:本题是一个找规律的题目,如果你再往后多些几行,会发现,奇数行都是第二列是偶数,偶数行分为两种情况,第一种是4的倍数,此时第四列是偶数,第二种情况是2的倍数,次数是第三列是偶数;

#include <iostream>
using namespace std;

int main() 
{
    int n;
    cin >> n;

    if(n < 3)
        cout << -1 << endl;
    else if(n % 2== 1)
        cout << 2 << endl;
    else if((n - 2) % 4 == 0)
        cout << 4 << endl;
    else
        cout << 3 << endl;
    return 0;
}

2、计算某字符出现次数

思路:我们首先输入一个字符串,该字符串包括字母、数字和空格;接着我们输入一个字符,我们计算该字符出现在字符串种的次数;如果搜索的是字母则不区分大小写;此时我们有一种思路,在创建一个字符,若原来字符是大写字母,该字符就是对应的小写字母;若原来字符是小写字母,该字符就是对应的大写字母;若非字母,则该字符就是原来字符;然后进行循环判断,该字符的个数;

#include <iostream>
#include <string>
using namespace std;

int main() 
{
    string str;
    char ch1;
    getline(cin, str);
    cin >> ch1;
    int pos = 0;
    int count = 0;
    char ch2 = ch1;
    if(ch1 >= 'a' && ch1 <= 'z')
        ch2 = ch1 - 32;
    else if(ch1 >= 'A' && ch1 <= 'Z')
        ch2 = ch1 + 32;
    while(pos < str.size())
    {
        if(str[pos] == ch1 || str[pos] == ch2)
            count++;
        pos++;
    }
    cout << count << endl;
    return 0;
}

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/802989.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

WEB 文件包含 /伪协议

首先谈谈什么是文件包含 WEB入门——文件包含漏洞与PHP伪协议_文件包含php伪协议_HasntStartIsOver的博客-CSDN博客 文件包含 程序员在编写的时候 可能写了自己的 函数 如果想多次调用 那么就需要 重新写在源代码中 太过于麻烦了只需要写入 funcation.php然后在需要引用的地…

【HarmonyOS】ArkTS 组件内转场动画,动画播放时颜色异常问题

【关键字】 HarmonyOS、ArkTS、组件内转场动画、颜色异常 【问题描述】 根据组件内转场动画文档中示例编写代码&#xff0c;使用动画转场组件button&#xff0c;并给button设置背景色让button透明度为0&#xff0c;实现动画转场时&#xff0c;会先出现默认蓝色button&#xf…

图片转pdf手机版免费?这几款转换软件看看

图片转pdf手机版免费&#xff1f;将图片转换成PDF文件可以带来很多好处。首先&#xff0c;PDF文件可以更好地保护你的图片。相对于图片文件&#xff0c;PDF文件更难以编辑和改变&#xff0c;因此更适合用于存储重要的图片。其次&#xff0c;将多张图片合并成一个PDF文件可以更好…

LViT:语言与视觉Transformer在医学图像分割

论文链接&#xff1a;https://arxiv.org/abs/2206.14718 代码链接&#xff1a;GitHub - HUANGLIZI/LViT: This repo is the official implementation of "LViT: Language meets Vision Transformer in Medical Image Segmentation" (IEEE Transactions on Medical I…

《吐血整理》进阶系列教程-拿捏Fiddler抓包教程(11)-Fiddler设置安卓手机抓包,不会可是万万不行的!

1.简介 Fiddler不但能截获各种浏览器发出的 HTTP 请求&#xff0c;也可以截获各种智能手机发出的HTTP/ HTTPS 请求。 Fiddler能截获 Android 和 Windows Phone 等设备发出的 HTTP/HTTPS 请求。 今天宏哥讲解和分享Fiddler 如何截获安卓移动端发出的 HTTP/HTTPS 请求。 2.环…

32路智能存储柜锁控板的功能有哪些?

智能存储柜是一款基于物联网可以完成柜门自动开启、物品监控、管理的设备&#xff0c;凭借着出色的智能化和自动化功能&#xff0c;智能柜已逐步取代传统的储物柜。但现有的智能存储柜锁控板性存在着一系列的问题&#xff0c;如控制路数少、稳定性差、成本高、线路连接不便等&a…

CTF线下赛AWD知识点【持续完善ing】

文章目录 CTF线下赛AWD知识点AWD规则前期准备SSH登录口令登录密钥登录 改密码SSH密码修改mysql密码修改 备份数据备份目录备份数据库 查找后门 自动提交flag防御思路基础查杀寻找最近20分钟修改过的文件寻找行数最短的文件关键字查杀查找命令执行函数 文件监控杀不死马0x01.杀进…

带你简单认识淘宝API及相关的业务场景介绍

淘宝API接口是为开发电商类应用程序而设计的一套完整的、跨浏览器、跨平台的接口规范。通过开放接口&#xff0c;开发者可以不改变现有系统&#xff0c;直接在原有系统上实现新功能。该规范于2007年发布&#xff0c;是目前业界唯一完整覆盖电商系统各相关业务领域的接口标准&am…

RCU 使用及机制源码的一些分析

》内核新视界文章汇总《 文章目录 1 介绍2 使用方法2.1 经典 RCU2.2 不可抢占RCU2.3 加速版不可抢占RCU2.4 链表操作的RCU版本2.5 slab 缓存支持RCU 3 源码与实现机制的简单分析3.1 数据结构3.2 不可抢占RCU3.3 加速版不可抢占RCU3.4 可抢占RCU3.5 报告禁止状态3.6 宽限期的开…

tinkerCAD案例:16. Spin Circuit Assembly 自旋电路组装

tinkerCAD案例&#xff1a;16. Spin Circuit Assembly 自旋电路组装 原文 In this tutorial, you’ll learn how to make a monkey with spinning arms using the Spin Circuit Assembly, which combines a spinning hobby gearmotor with 2xAAA batteries. 在本教程中&#…

Intellij IDEA 双击启动报错ClassNotFoundException: com.licel.b.z@

项目场景&#xff1a; 新从官网下载了ideaIU-2023.2.win.zip &#xff0c;安装后双击启动报错&#xff0c; 无法运行idea, 提示信息如下 问题描述 Internal error. Please refer to https://jb.gg/ide/critical-startup-errorsjava.lang.ExceptionInInitializerErrorat java…

会议OA系统会议管理模块开发思路(layui搭建)

目录 一.为什么要进行开发 1.开发目的 2.项目流程 A.发起会议请求过程 1.首先实现我们的多选下拉框功能&#xff01; 2.时间组件功能&#xff0c;并且提交我们新增加的会议内容 3.在进行发起会议编码时遇到的问题&#xff0c;BUG 3.1.有点时候js访问不到路径 3.2在增加…

陪伴关爱,陪诊小程序源码开发带给您温暖服务

在现代社会&#xff0c;随着人们生活压力的增加和健康意识的提高&#xff0c;陪诊服务成为了越来越多人的需求。为了满足用户对于贴心陪诊服务的需求&#xff0c;陪诊小程序应运而生。陪诊小程序是基于微信小程序平台开发的应用程序&#xff0c;旨在为用户提供便捷高效的陪诊服…

列表排序按钮常用方法,实现“向前移动到第一个↑”、“向前移动∧”、“向后移动∨”、“向后移动到最后一个↓”

<el-button title"向前移动到第一个" size"mini" type"primary" icon"el-icon-top" :disabled"tableData.length scope.row.value tableData[0].value :true" click.stop"moveToFirst(scope.row)" circle pla…

螺环化合物:1380300-88-8,具有刚性结构,结构稳定

资料编辑|陕西新研博美生物科技有限公司小编MISSwu​ PART1----产品描述&#xff1a; 螺环化合物&#xff08;CAS号&#xff1a;1380300-88-8&#xff09;&#xff0c;螺环化合物具有刚性结构&#xff0c;结构稳定&#xff0c;其手性配体有较大的比旋光度&#xff0c;在不对称…

如何选择低代码/零代码平台(最全平台总结)

来谈论这个问题之前&#xff0c;我们先来看看到底什么是低代码/零代码—— 低代码 对于“低代码”的宣传其实已经很久很广泛了&#xff0c;但是争议从来都没有停止。 忘记之前在哪里看到过一个“低代码将会取代程序员”之类的说法&#xff0c;觉得很好笑&#xff0c;看了一些…

靶机精讲之Brainpan1

nmap扫描 主机发现 端口扫描 服务扫描 -sT 说明用tcp协议&#xff08;三次握手&#xff09;扫描 -sV扫描版本 O扫描系统 NULL是图片 10000端口是个python服务 UDP扫描 脚本扫描 web渗透 目录爆破 显示/bin/目录有东西 gobuster dir -w /usr/share/dirbuster/wordlists/di…

KVC与KVO

KVO 什么是KVO KVO全称Key Value Observing&#xff0c;其是苹果提供的一套事件通知机制。允许对象监听另一个对象特定属性的改变&#xff0c;并在改变时接收到事件。观察者模式 由于KVO的实现机制&#xff0c;只针对属性才会发生作用&#xff0c;一般继承自NSObject的对象都…

Centos部署Springboot项目详解

准备启动jar包&#xff0c;app.jar放入指定目录。 一、命令启动 1、启动命令 java -jar app.jar 2、后台运行 nohup java -jar app.jar >/dev/null 2>&1 & 加入配置参数命令 nohup java -Xms512M -Xmx512M -jar app.jar --server.port9080 spring.profiles…

k8s webhook实例,java springboot程序实现 对Pod创建请求添加边车容器 ,模拟istio实现日志文件清理

k8s webhook实例&#xff0c;java springboot程序实现 对Pod创建请求添加边车容器 &#xff0c;模拟istio实现日志文件清理 大纲 背景与原理实现流程开发部署my-docker-demo-sp-user服务模拟业务项目开发部署my-sidecar服务模拟边车程序开发部署服务my-docker-demo-k8s-opera…