C++笔试强训11

news2024/11/25 4:22:40

文章目录

  • 一、选择题
    • 1-5题
    • 6-10题
  • 二、编程题
    • 题目一
    • 题目二


一、选择题

1-5题

在这里插入图片描述

A. 不是任何一个函数都可定义成内联函数:这是正确的。因为内联函数需要在编译时展开,如果函数体过大或包含复杂的控制结构(如循环、递归等),那么将其内联可能会导致编译后的代码体积急剧增大,甚至可能超过不内联时的代码体积,从而得不偿失。因此,编译器会忽略某些不适合内联的函数定义。

B. 内联函数的函数体内不能含有复杂的结构控制语句:这也是正确的。如前所述,内联函数应避免包含复杂的控制结构,如循环、递归等,因为这些结构可能导致编译后的代码体积过大。

C. 递归函数可以被用来作为内联函数:这是错误的。递归函数本质上是通过函数调用自身来解决问题的,如果将其定义为内联函数,那么在编译时展开递归调用将会导致无限循环的展开,这显然是不可能的。因此,递归函数不能作为内联函数。

D. 内联函数一般适合于只有1~5行语句的小函数:这是正确的。内联函数最适合用于那些体积小、执行快、调用频繁的函数,以便通过减少函数调用的开销来提高程序的执行效率。

综上选C


在这里插入图片描述
D返回值不同是构不成重载的
故D错误选D


在这里插入图片描述
a(4)一次、b(5)一次,c[3]三次,共五次
故选A。


在这里插入图片描述

A正确
B,默认的拷贝构造函数是浅拷贝
C一个本类对象作为形参(this指针不包括在内,包括this的话那就两个)
D,拷贝构造和复制重载可以同时实现
故选A

A. 赋值运算符只能作为类的成员函数重载

  • 这是正确的。赋值运算符=必须被重载为类的成员函数,而不能作为友元函数或普通函数来重载。这是因为赋值运算符需要访问类的私有和保护成员,而且赋值操作通常涉及到左侧对象(即调用对象)状态的改变,这要求操作必须是成员函数。

B. 默认的赋值运算符实现了“深层复制”功能

  • 这是错误的。默认的赋值运算符(即未显式定义的赋值运算符)实现的是“浅拷贝”(shallow copy)。它仅仅复制了对象的成员变量的值,如果成员变量是指针,那么它复制的是指针的值(即地址),而不是指针所指向的内存区域的内容。这可能导致两个对象共享同一块内存区域,从而引发一系列问题,如双重释放等。

C. 重载的赋值运算符函数有两个本类对象作为形参

  • 这是错误的。重载的赋值运算符函数通常只有一个参数,即要赋值给当前对象的对象(通常通过引用传递,以避免不必要的拷贝)。赋值运算符的左侧对象(即调用对象)是隐式传递的,不需要显式作为参数。

D. 如果己经定义了复制拷贝构造函数,就不能重载赋值运算符

  • 这是错误的。复制拷贝构造函数(copy constructor)和赋值运算符(assignment operator)是两个独立的功能,分别用于对象的初始化和赋值。你可以同时定义它们,而且通常建议如果定义了其中一个,也应该定义另一个,以保持对象管理的对称性。特别是在涉及到动态内存分配时,确保两者都正确实现“深层复制”是非常重要的。

在这里插入图片描述
A:静态数据成员类内声明,类外初始化,C++11之后const类型的整型静态数据成员可以在类内进行初始化。
B:静态数据成员可以被类对象调用
C:受访问控制符的控制
D正确‘故选D

A. 静态数据成员(非const类型)可以在类体内初始化
这是不正确的。在C++中,静态数据成员(无论是否为const类型)都不能在类体内直接初始化。静态数据成员需要在类体外进行定义和初始化(对于非const和非整型静态数据成员,还需要提供初始值)。对于const整型静态数据成员,可以在类体内使用constexpr进行初始化(C++11及以后)。

B. 静态数据成员不可以被类对象调用
这是不准确的描述。静态数据成员确实可以通过类名来访问,但同样也可以通过类的对象来访问。不过,通过类对象访问静态成员并不是推荐的做法,因为它会让人误以为这些成员与对象的状态有关,而实际上它们是与类关联的,而不是与类的某个特定对象关联的。

C. 静态数据成员不受private控制符作用
这是不正确的。静态数据成员(包括静态成员函数)同样受到访问控制符(如private、protected、public)的作用。如果静态数据成员被声明为private,那么它就不能从类的外部被直接访问,包括通过类名访问。但是,类的成员函数(无论静态还是非静态)都可以访问类的private成员,包括静态数据成员。

D. 静态数据成员可以直接用类名调用
这是正确的。静态数据成员是与类相关联的,而不是与类的任何特定对象相关联的。因此,它们可以通过类名直接访问,而无需创建类的实例。访问静态成员的一般语法是 类名::静态成员名。如果静态成员在类中被声明为public或protected(并且是在友元类或函数中),则还可以通过类的对象来访问,但这并不是推荐的做法。


6-10题

在这里插入图片描述
ad是一个数组指针,指向一个数组,该数组里有三个PAT类型的成员
没new呢,所以不会调用构造函数
故选C。


在这里插入图片描述

A:可以提供默认析构函数
B:不是必须用户定义,也可以编译器默认生成
C:正确,析构函数没参数
D:见C

故选C

A. 系统不能提供默认的析构函数:这个说法是不准确的。对于没有显式定义析构函数的类,编译器会自动生成一个默认的析构函数。这个析构函数是空的,但它确实存在。

B. 析构函数必须由用户定义:这也是不准确的。用户可以根据需要定义析构函数来执行清理操作(如释放资源),但如果用户没有定义,编译器会自动生成一个默认的析构函数。

C. 析构函数没有参数:这是正确的。析构函数的定义不允许有任何参数,也不允许有返回类型(除了void,但实际上析构函数不声明返回类型)。这是析构函数的一个基本特性。

D. 析构函数可以设置默认参数:这是错误的。析构函数不能有参数,因此也不能有默认参数。


在这里插入图片描述
没啥问题,这里delete this其实就相当于delete a,不过这种写法不推荐,大家可以去自己的编译器上试试,是没问题的。
故选B


在这里插入图片描述
选B,基础知识不赘述了


在这里插入图片描述
重点是你不显式指定,编译器就会自己推,这里x,y的类型是一样的
B中x会推断成浮点型,y会推断成整型,类型不一致,故B错。
选B。


二、编程题

题目一

题目链接:
最近公共祖先
在这里插入图片描述

提交代码:

class LCA {
  public:
    int getLCA(int a, int b) {
        while (a != b) {
            if (a > b) {
                a /= 2;
            } else if (b > a) {
                b /= 2;
            } else {
                return a;
            }
        }
        return a;
    }
};

运行结果:
在这里插入图片描述


题目二

题目链接:
求最大连续bit数
在这里插入图片描述

提交代码:

#include <iostream>
using namespace std;

int main() {
    int number;
    while(cin>>number){
        int count=0,maxcount=0;
        while(number){
            if(number&1){
                ++count;
            }
            else{
                maxcount=max(count,maxcount);
                count=0;
            }
            number=number>>1;
        }
        maxcount=max(count,maxcount);
        cout<<maxcount;
    }
}
// 64 位输出请用 printf("%lld")

运行结果:
在这里插入图片描述

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

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

相关文章

Linux/C 高级——分文件编程

1.头文件&#xff1a;.h结尾的文件 头文件引用、宏定义、重命名typedef、结构体、共用体、枚举的定义、函数声明、外部引用extern。 一般全局变量不会定义在头文件中 2.源文件&#xff1a;.c结尾的文件 包含main函数的.c文件&#xff1a;main函数 包含子函数的.c文件&#xff1…

【LLM】-17-会话存储

目录 1、会话存储类型 2、版本代码说明 3、对话缓存存储 3.1、示例代码 3.2、响应response说明 3.3、流式输出 3.4、添加提示词模板 3.5、指定回答语言 4、限制令牌数存储 4.1、trim_messages 4.1.1、自定义tokens计数器 4.1.2、自定义tokens计数器 4.2、完整chat…

HookNet- 用于病理全切片图像的多分辨率语义分割模型|顶刊精析·24-08-08

小罗碎碎念 今天分享的这篇文章是关于一种名为HookNet的新型语义分割模型&#xff0c;它专为病理学全切片图像设计&#xff0c;于2021年发表于《Med Image Anal》&#xff0c;目前IF10.7。 作者角色姓名单位&#xff08;中文翻译&#xff09;第一作者Mart van Rijthoven荷兰Ra…

Spring-boot 集成 SocketIO(看这一篇就够了)

1 前言 1.1 什么是 SocketIO ? Socket.IO 是一个可以在浏览器与服务器之间实现实时、双向、基于事件的通信的工具库。 Socket.IO 能够在任何平台、浏览器或设备上运行,可靠性和速度同样出色。 1.2 websocket和socket.io区别&#xff1f; websocket a&#xff1a;一种让客户…

video标签,去除上下默认边距

不知道为什么&#xff0c;video标签上下会有空白 清除方法 style"width 100%; height100%; object-fit: fill"

校园二手物品交易网站/校园闲置物品交易系统

摘 要 本文论述了校园二手物品交易网站的设计和实现&#xff0c;该网站从实际运用的角度出发&#xff0c;运用了计算机网站设计、数据库等相关知识&#xff0c;网络和JSP技术、SSM框架Mysql数据库设计来实现的&#xff0c;网站主要包括学生注册、学生登录、浏览商品、搜索商品…

Vue+Element Plus后台管理主界面搭建实现

​ 续接Django REST Framework&#xff0c;使用Vite构建Vue3的前端项目 1. 后台管理系统主界面框架搭建 后台系统主界面搭建 新建后台管理文件目录 完成后台整体布局 // 1.主界面 index.vue<script setup lang"ts"></script><template><el-…

应用层HTTP协议

文章目录 应用层HTTP协议1、HTTP协议概念2、URL&#xff08;统一资源定位符&#xff09;2.1、URL的encode&#xff08;编码&#xff09;和decode&#xff08;解码&#xff09; 3、HTTP请求和响应报头格式3.1、请求报头3.2、响应报头 4、HTTP的方法4.1、GET方法4.2、POST方法4.3…

生成模型VAE

VAE likelihood-basedELBOVAESGVB估计器和AEVB算法重参数化 likelihood-based likelihood-based generative models是生成模型的一类范式&#xff0c;通过最大化所有观测数据的似然函数来学习模型参数。 该怎么去理解likelihood-based&#xff0c;基于似然的生成模型&#xf…

互联网重构“规则制定权”,周期性谋咒开始轮转!

周期“魔咒”又开始轮转了。 产业趋势叠加资本周期&#xff0c;使得任何产业都有其周期性规律&#xff0c;传统资源产业是如此&#xff0c;科技产业亦非例外。 刚刚迎来30周年庆的中国互联网赛道就正处于新一轮小周期的节点。随着移动用户量逐渐被开发利用至阶段性顶峰&#…

学习c语言第24天(练习)

编程题 第一题 最大公约数最小公倍数求和 //求最大公约数和最小公倍数之和 //暴力求解 //int main() //{ // int n 0; // int m 0; // while (scanf("%d %d", &n, &m)2) // { // int min n < m ? n : m; // int max n > m ? n : m; //…

原神4.8版本角色数据

<!DOCTYPE html> <html lang"zh-CN"><head><meta charset"UTF-8"><meta name"viewport" content"widthdevice-width, initial-scale1.0"><title>原神4.8版本角色数据</title><style>…

【浏览器插件】Chrome扩展V3版本

前言&#xff1a;Chrome从2022年6月开始&#xff0c;新发布插件只接受V3版。2024年V2版已从应用商店下架。 浏览器扩展插件开发API文档 chrome官网&#xff08;要翻墙&#xff09;&#xff1a; https://developer.chrome.com/docs/extensions/mv3 MDN中文&#xff1a;https:/…

gitee拉取项目,提交代码

1&#xff0c;安装git 2&#xff0c;gitee配置成员仓库权限 3&#xff0c;克隆项目 git clone gitgitee.com:sky474775788/Python_API_AUTO.git 4&#xff0c;配置用户信息 git config --global user.name 林俊xxx git config --global user.email ohnxxxsee1xxx.com 5&…

机器学习·L2W4-决策树

决策树 从根节点的所有示例开始计算所有可能特征的分割信息增益&#xff0c;并选择信息增益最高的特征根据所选特征分割数据集&#xff0c;并创建树的左分支和右分支不断重复分割过程&#xff0c;直到满足停止条件 信息增益 也可以理解为信息熵的减少 p p p是结果为positive…

住宅代理和数据中心代理:指纹浏览器用哪个更安全?

在当今的数字时代&#xff0c;确保您的在线安全至关重要。这就是住宅和数据中心代理发挥作用的地方&#xff0c;它们可以保护您的身份和个人信息。指纹浏览器解决了账号所在环境指纹参数隔离的安全问题&#xff0c;而IP解决环境的定位与隔离问题&#xff0c;就像Maskfog中提供的…

洛伦兹微分方程与混沌理论

前言 这一段时间在看书中关于深度学习与神经网络的内容&#xff0c;其中有一节介绍神经网络用于预测洛伦兹微分方程的数值解&#xff0c;还提到了“吸引子”这一概念&#xff0c;当时也没太理解是什么&#xff0c;下午搜集了一本书上关于混沌理论的介绍——《混沌的本质》。 这…

【线性回归】——解决运筹优化类问题

目录 文章目录 前言 一、模型原理 1.线性规划模型的三要素 &#x1f60f;&#x1f60f;&#x1f60f; 2.模型特点 3.线性规划的表现形式 二、模型建立步骤 1.找决策变量 2.确定目标函数 3.找到约束条件 4.运用Matlab中的Linprog函数 总结 前言 在实际生活应用中&#xff0c;我…

Unity入门5——材质

创建材质 点击Assets → Create → Material&#xff0c;得到一个默认材质球的副本。 使用材质 直接把材质球拖拽到物体上&#xff0c;或设置mesh renderer组件下的Materials 数组中第一个元素

etcd高可用集群部署

文章目录 一、环境准备二、安装部署2.1 下载安装包2.2 将etcd和etcdctl复制到/usr/local/bin中2.3 创建目录并赋予权限2.4 修改节点配置2.4.1 配置etcd.conf文件2.4.2 配置/etc/systemd/system/etcd.service文件 2.5 启动ectd服务2.6 查看集群成员信息2.7 查看集群状态 在生产环…