C++笔试强训9

news2024/11/18 21:36:39

文章目录

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


一、选择题

1-5题

在这里插入图片描述

函数形参是个int类型的引用,传参的时候直接传一个int类型的变量就行
故选A


在这里插入图片描述
1.malloc/calloc/realloc—>free
2. new / delete
3. new[] / delete[]
一定要匹配起来使用,否则程序可能会产生内存泄漏或者程序可能会崩溃

new T 底层过程
1.先调用operator new(size)申请空间
2.然后调用T的构造函数对申请的空间进行初始化
delete p 底层过程
1.先调用析构函数释放p指向对象中的资源
2.然后调用operator delete释放p所指向的空间

注意: new只能申请单个元素的空间 delete只能释放单个元素的空间

new T[N] 底层过程
1.调用operator new申请空间
—>operator new(size)
2.调用N次T的构造函数
delete[] p 底层过程
1.调用N次析构函数释放p指向的N个对象
2.调用operator delete释放空间
—>operator delete(p

本题中就是没有配对使用导致的问题,new class A[5]会调用5次构造函数,但在释放的时候应该使用delete[] pclassa才对,这里使用的是delete pclassa会导致未定义行为,题目不太严谨,此处应该给出出现未定义行为才对,不过如果非要选一个的话,那就是析构了一次,因为delete只能释放单个元素的空间

故选A


在这里插入图片描述
malloc和new出来的内存在堆heap上,常识不多解释。
如果对这块只是不太了解,可以点击下面的超链接,去看一看我写的另一篇文章。
C&C++内存管理

故选B


在这里插入图片描述
静态数据成员的特性

  1. 所有对象共享:类的所有对象共享同一个静态数据成员,因此,通过任何对象所做的修改都会影响所有对象。

  2. 访问:静态数据成员可以通过类名和作用域解析运算符(::)来访问,也可以通过类的对象来访问,但后者通常不推荐,因为它可能会误导读者认为该成员是非静态的。

  3. 初始化:静态数据成员必须在类外部定义和初始化(除非它们是const整型或枚举类型,并且使用C++11或更高版本的初始化器列表在类内初始化)。

  4. 存储位置:静态数据成员存储在全局数据区,而不是在类的任何特定对象内。

  5. 生命周期:静态数据成员的生命周期与程序相同,从程序启动到程序结束。

  6. 默认访问级别:如果静态数据成员没有在类定义中指定访问修饰符(如publicprotectedprivate),则它们默认为private。但是,由于它们通常需要在类外部访问和修改,因此通常将它们声明为public

故选D


在这里插入图片描述

C++中类class的默认访问权限是private,结构体struct中默认是public
补充一下,在C++中结构体struct也被封装成了类,和class的区别就是默认访问权限不同。

故选A。


6-10题

在这里插入图片描述
参数表没有任何参数表名只有一个隐含的this指针,说明是个一元运算符,例如++、–这种
为了区分前后置++,会在后置++的参数表中加一个int参数,此处没参数,说明是前置一元运算符
Date& operator++()前置++
Date operator++(int)后置++

故选C


在这里插入图片描述
调用构造函数输出1,调用拷贝构造输出2,调用复制重载输出3,调用析构函数输出4.
然后重点看下图,第一个obj1(1)和第二个obj2(2)都是调用的单参数构造函数,输出俩1,第三个obj3(obj1)调用的拷贝构造,输出一个2,最后三个都析构,输出三个4

故选112,444
故选B
在这里插入图片描述


在这里插入图片描述
C++中的静态数据成员是类的成员,但它不是类的任何特定对象的实例的一部分。静态数据成员在类的所有对象之间共享,即类的所有对象都访问同一个静态成员变量。静态数据成员在程序开始时分配内存,并在程序结束时销毁。

静态数据成员的特性

  1. 所有对象共享:类的所有对象共享同一个静态数据成员,因此,通过任何对象所做的修改都会影响所有对象。

  2. 访问:静态数据成员可以通过类名和作用域解析运算符(::)来访问,也可以通过类的对象来访问,但后者通常不推荐,因为它可能会误导读者认为该成员是非静态的。

  3. 初始化:静态数据成员必须在类外部定义和初始化(除非它们是const整型或枚举类型,并且使用C++11或更高版本的初始化器列表在类内初始化)。

  4. 存储位置:静态数据成员存储在全局数据区,而不是在类的任何特定对象内。

  5. 生命周期:静态数据成员的生命周期与程序相同,从程序启动到程序结束。

  6. 默认访问级别:如果静态数据成员没有在类定义中指定访问修饰符(如publicprotectedprivate),则它们默认为private。但是,由于它们通常需要在类外部访问和修改,因此通常将它们声明为public

综上,故选D。


在这里插入图片描述
A:将构造函数设为私有,new都创建不了,因为new一个对象的时候会调用该对象的构造函数,现在构造函数私有的,就不能创建了,故A错
C:和A同理,也错

B:把析构函数设置为私有的,new的时候肯定没问题了,但是delete却无法调用析构函数了,可以在类里写个公有成员函数,比如close,在这里面进行delete操作就好。

void release(A* a)
{
	delete a;
}

故B可以,选B
在这里插入图片描述


在这里插入图片描述
template<class T>
template<typename T>
class和typename都可以

467是对的,共三个
故选B


二、编程题

题目一

题目链接:

另类加法
在这里插入图片描述

提交代码:

class UnusualAdd {
  public:
    int addAB(int A, int B) {
        if (A == 0) return B;
        if (B == 0) return A;
        int a = A ^ B;//求和后当前位的数据
        int b = (A & B) << 1;//求和后进位的数据
        return addAB(a, b);//递归两个数进行相加,任意为0时截止
    }
};

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


题目二

题目链接:
走方格的方案数

在这里插入图片描述

提交代码:

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

int main() {
    int m, n;
    cin >> n >> m;
    vector<vector<int>> arr(n + 2, vector<int>(m + 2, 0));
    if (n == 1 || m == 1) {
        cout << m + n;
        return 0;
    }
    arr[0][2] = 1;
    arr[2][0] = 1;
    for (int i = 1; i < n + 2; i++) {
        for (int j = 1; j < m + 2; j++) {
            arr[i][j] = arr[i - 1][j] + arr[i][j - 1];
        }
    }
    cout << arr[n + 1][m + 1];
    return 0;
}
// 64 位输出请用 printf("%lld")

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

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

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

相关文章

猫头虎分享:Numpy知识点一文带你详细学习np.random.randn()

&#x1f42f; 猫头虎分享&#xff1a;Numpy知识点一文带你详细学习np.random.randn() 摘要 Numpy 是数据科学和机器学习领域中不可或缺的工具。在本篇文章中&#xff0c;我们将深入探讨 np.random.randn()&#xff0c;一个用于生成标准正态分布的强大函数。通过详细的代码示…

ADS 使用教程(二十九)Understanding Bounding Area Layer for FEM

上一篇&#xff1a;ADS 使用教程&#xff08;二十八&#xff09;Working with FEM Mesh & Field Data in ADS 这一节&#xff0c;我们来一起了解一下有限元法&#xff08;FEM&#xff09;中的边界区域层&#xff08;Bounding Area Layer&#xff09;&#xff0c;这是定义仿…

python项目实例和源码权限管理系统

✌网站介绍&#xff1a;✌10年项目辅导经验、专注于计算机技术领域学生项目实战辅导。 ✌服务范围&#xff1a;Java(SpringBoo/SSM)、Python、PHP、Nodejs、爬虫、数据可视化、小程序、安卓app、大数据等设计与开发。 ✌服务内容&#xff1a;免费功能设计、免费提供开题答辩P…

浅谈HOST,DNS与CDN

首先这个是网络安全的基础&#xff0c;需得牢牢掌握。 1.什么是HOST HOSTS文件&#xff1a; 定义&#xff1a; HOSTS文件是一个操作系统级别的文本文件&#xff0c;通常位于操作系统的系统目录中&#xff08;如Windows系统下的C:\Windows\System32\drivers\etc\hosts&#xf…

黑马头条vue2.0项目实战(二)——登录注册功能的实现

1. 布局结构 目标 能实现登录页面的布局 能实现基本登录功能 能掌握 Vant 中 Toast 提示组件的使用 能理解 API 请求模块的封装 能理解发送验证码的实现思路 能理解 Vant Form 实现表单验证的使用 这里主要使用到三个 Vant 组件&#xff1a; NavBar 导航栏 Form 表单 F…

windows 安装 Linux 子系统 Ubuntu,并编译安装nginx

1. 安装Ubuntu 首先可以在 Microsoft Store 自行搜索安装 Ubuntu&#xff0c;个人建议安装 22 版本的即可。Ubuntu安装完成后&#xff0c;以管理员身份打开CMD&#xff0c;运行如下命令&#xff1a; wsl --install 此时打开Ubuntu已经可以正常使用了。 2. 安装C/C编译器 对于…

动态规划专题:线性dp、背包问题,区间

目录 方块与收纳盒 舔狗舔到最后一无所有 可爱の星空 数字三角形 花店橱窗 [NOI1998]免费馅饼 [NOIP2002]过河卒 [NOIP2008]传球游戏 「木」迷雾森林 [NOIP2004]合唱队形 [NOIP1999]拦截导弹 数学考试 小A买彩票 购物 牛牛的旅游纪念品 [NOIP2001]装箱问题 [N…

网络轮询器 NetPoller

网络轮询器 NetPoller 网络轮询器是 Go 语言运行时用来处理 I/O 操作的关键组件&#xff0c;它使用了操作系统提供的 I/O 多路复用机制增强程序的并发处理能力。网络轮询器不仅用于监控网络 I/O&#xff0c;还能用于监控文件的 I/O&#xff0c;它利用了操作系统提供的 I/O 多路…

How can I fix my Flask server‘s 405 error that includes OpenAi api?

题意&#xff1a;解决包含OpenAI API的Flask服务器中出现的405错误&#xff08;Method Not Allowed&#xff0c;即方法不允许&#xff09; 问题背景&#xff1a; Im trying to add an API to my webpage and have never used any Flask server before, I have never used Java…

MATLAB进阶:函数和方程

经过前几天的学习&#xff0c;matlab基础我们已经大致了解&#xff0c;现在我们继续学习matlab更进一步的应用。 常用函数 在求解有关多项式的计算时&#xff0c;我们无可避免的会遇到以下几个函数 ypolyval(p,x)&#xff1a;求得多项式p在x处的值y&#xff0c;x可以是一个或…

ComfyUI反推提示词节点报错:Load model failed

&#x1f3a0;报错现象 反推提示词的时候会提示报错&#xff1a; Error occurred when executing WD14Tagger|pysssss: [ONNXRuntimeError] : 3 : NO_SUCHFILE : Load model from F:\ComfyUI-aki\custom_nodes\ComfyUI-WD14-Tagger\models\wd-v1-4-convnext-tagger-v2.onnx fa…

创建mysql库,及webserver使用编译

首先安装mysql sudo apt update sudo apt install mysql-server sudo systemctl status mysql #检查mysql是否安装成功 sudo mysql #进入mysqlSHOW DATABASES; create database yourdb; #创建一个名为yourdb的数据库USE yourdb; #使用刚才创建好的数据库 CREATE TABLE …

Go语言----reflect.DeepEqual函数

在使用go语言进行编程的时候&#xff0c;我们通常会对模块进行测试&#xff0c;在测试的过程中&#xff0c;经常会使用reflect.DeepEqual函数&#xff0c;这个函数是在reflect包中&#xff0c;其提供了运行时反射机制的标准库。其中的reflect.DeepEqual()函数是用来比较两个值是…

【知识梳理】Shell的变量计算

转载说明&#xff1a;如果您喜欢这篇文章并打算转载它&#xff0c;请私信作者取得授权。感谢您喜爱本文&#xff0c;请文明转载&#xff0c;谢谢。 Shell中有很多变量的计算&#xff0c;会用到多种运算符。例如这几种&#xff1a; 1. Shell中常见的算术运算符 运算符意义&…

springboot-定时任务源码分析

springboot-定时任务源码分析 前言我们都知道开启 springboot的定时任务需要先使用 EnableScheduling 注解&#xff0c;在可以开启&#xff0c;那么 EnableScheduling 就是定时任务的源头&#xff0c;所以先从 EnableScheduling 开始分析 EnableScheduling 这个注解核心就是…

基于cubeMX的STM32的定时器使用

1、设置cubeMX 这里使用STM32F103RCT6芯片&#xff0c;以定时器2为例&#xff0c;时钟源选择内部时钟 参数设置&#xff0c;预分频7200&#xff0c;定时器周期10000&#xff0c;则表示定时1秒钟 打开定时器2通用中断 其他设置不用修改。时钟页面配置如下 最后生成代码。 2、在…

05.java中常用的类

1.包装类 基本类型包装类booleanBooleancharCharacterbyteByteintIntegerlongLongfloatFloatdoubleDoubleshortShort 从byte开始的包装类都是继承的Number&#xff0c;然后Number继承的object 从byte上面的都是直接继承的oblect (1).装箱和拆箱 装箱&#xff1a;基本类型--…

DSP教学实验箱_数字图像处理操作_案例分享:5-13 灰度图像二值化

一、实验目的 学习灰度图像二值化的原理&#xff0c;掌握图像的读取方法&#xff0c;并实现在LCD上显示二值化前后的图像。 二、实验原理 图像二值化 图像的二值化处理就是将图像上的点的灰度置为 0 或 255&#xff0c;也就是将整个图像呈现出明显的黑白效果。即将 256 个亮…

JAVA零基础学习3(Scanner类,字符串,StringBuilder,StringJoinder,ArrayList成员方法)

JAVA零基础学习&#xff13; Scanner类输入示例代码代码解释完整代码1. 读取字符串2. 读取整数3. 读取浮点数4. 读取布尔值5. 读取单个单词6. 读取长整型数7. 读取短整型数8. 读取字节数注意事项总结 API 字符串解释示例解释解决方法示例&#xff1a;使用 StringBuilder String…

阻塞队列-PriorityBlockQueue

PriorityBlockingQueue 优先级队列不满足FIFO原则它将插入元素进行排序排序的实现是基于数组结构实现的二叉堆排序 二叉堆 在分析优先级别队列时候&#xff0c;需要了解一下二叉堆是什么 二叉堆是一种完全二叉树&#xff0c;除了最底层外&#xff0c;其它层被完全填充。二叉堆…