【C++】笔试训练(九)

目录

  • 一、选择题
  • 二、编程题
    • 1、另类加法
    • 2、走方格的方案数

一、选择题

1、某函数申明如下

void Func(int& nVal1);

有int a,下面使用正确的为()
A Func(a)
B Func(&a)
C Func(*a)
D Func(&(*a))

答案:A

2、C++语言中,类ClassA的构造函数和析构函数的执行次数分别为()

ClassA* pclassa = new ClassA[5];
delete pclassa;

A 5,1
B 1,1
C 5,5
D 1,5

答案:A
解析:
1.malloc/calloc/realloc---->free
2.new ----> detele
3.new[] ----> detele
这三种申请空间的方式一定要匹配使用,否则程序可能会产生内存泄露,或者程序可能会崩溃
new T
1.调用operator new(size) 申请空间 ----> 内部是调用malloc循环申请
2.调用T的构造函数对申请的空间进行初始化
delete P
1.调用析构函数释放p指向对象中的资源
2.调用operator delete释放p所指向的空间 ----> 内部真正释放空间的是调用free
注意: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§
题目中使用delete pclassa;释放空间,只释放了p指向的空间中的一个对象,是不严谨的,运行中可能会产生程序崩溃

3、 动态内存分配(C语言中malloc,C++中的new)得到的存储区属于内存中的:
A 静态区
B 堆(heap)
C 栈(stack)
D 堆栈
E 内核内存
F 不确定

答案:B

4、下列静态数据成员的特性中,错误的是()
A 引用静态数据成员时,要在静态数据成员名前加<类名>和作用域符号
B 说明静态数据成员时前边要加关键字static来修饰
C 静态数据成员在类体外进行初始化
D 静态数据成员不是所有对象所共有的

答案:D
解析:
静态数据成员(静态成员变量):所有对象共享的,并不属于具体的某个对象----在类中声明,然后需要在类外单独进行定义,一定不能在构造函数的初始化列表的位置初始化----在类外访问静态成员变量时:对象.静态成员变量 或者 类名::静态成员变量

5、用class关键字定义的类,其成员默认的访问属性为()
A private
B protected
C public
D 无定义

答案:A

6、在重载一个运算符为成员函数时,其参数表中没有任何参数,这说明该运算符是 ( )
A 无操作数的运算符
B 二元运算符
C 前缀一元运算符
D 后缀一元运算符

答案:C
解析:
一元运算符:指的是该元素只需要一个参数,比如:++、- -
成员函数:每个非静态的成员函数都有一个隐藏的this指针
比如:Dete& operator++() 前置++
           Date operator++(int) 后置++

7、有如下程序:

#include<iostream>
using namespace std;
class MyClass {
public:MyClass(int i = 0) { cout << 1; }MyClass(const MyClass& x) { cout << 2; }MyClass& operator=(const MyClass& x) { cout << 3; return*this; }~MyClass() { cout << 4; }
};
int main() {MyClass obj1(1), obj2(2), obj3(obj1);return 0;
}

运行时的输出结果是
A 121,444
B 112,444
C 11,114,444
D 11,314,445
E 11,314,444

答案:B

8、下面有关c++静态数据成员,说法正确的是()
A 不能在类内初始化
B 不能被类的对象调用
C 不能受private修饰符的作用
D 可以直接用类名调用

答案:D
解析:
静态数据成员(静态成员变量):所有对象共享的,并不属于具体的某个对象----在类中声明,然后需要在类外单独进行定义,一定不能在构造函数的初始化列表的位置初始化----在类外访问静态成员变量时:对象.静态成员变量 或者 类名::静态成员变量
有个特殊:const修饰的,可以在类内初始化
class A
{
private:
      const static int a = 10;
      static int b;
};
int A::b = 20;

9、在C++中,为了让某个类只能通过new来创建(即如果直接创建对象,编译器将报错),应该()
A 将构造函数设为私有
B 将析构函数设为私有
C 将构造函数和析构函数均设为私有
D 没有办法能做到

答案:B
解析:
A类:假设A类的构造函数是私有的
在类外:A* pa = new A[];这是错误的
new原理:1.申请空间
                  2.调用构造函数对申请的空间进行初始化
假设A类的构造函数是私有的,就不能在构造函数对申请的空间进行初始化,第二步就不能完成了
创建对象期间,只需要申请空间,operator new这个函数就已经处理了。
delete pa;
delete原理:1.调用A类的析构函数
                     2.释放空间
把析构函数设成私有的,第一步就不能完成了,但是,我们可以给A类增加一个公有的方法:void Release(A*& p) { delete p; }

10、下列的模板声明中,其中几个是正确的()
1)template
2)template<T1,T2>
3)template<class T1,T2>
4)template<class T1,class T2>
5)template<typename T1,T2>
6)template<typename T1,typename T2>
7)template<class T1,typename T2>
8)<typename T1,class T2>
A 2
B 3
C 4
D 5

答案:B
解析:template< class T >、template< typename T >、template< class T1, class T2 >这三种是正确的
其中4、6、7是正确的

二、编程题

1、另类加法

入口:题目链接

题目描述:
在这里插入图片描述

题目解析:
本题的意思是自己实现加法,不用现成的运算符

解题思路:
本题可以通过位运算实现,具体实现:两个数求和,其实就是求和后当前位的数据+两个数求和的进位
例如:
1 + 2: 00000001 + 00000010
求和后当前位的数据: 00000011 ; 求和后的进位数据: 没有进位,则 00000000
两者相加,则得到: 00000011 就是3
2 + 2: 00000010 + 00000010
求和后当前位的数据: 00000000, 1和1进位后当前为变成0了
求和后进位的数据: 00000100, 两个1求和后进位了
相加后得到: 00000100 就是4
求和后当前位的数据:简便的计算方法就是两个数进行异或 00000001 ^ 00000010 -> 00000011
求和后进位的数据:简便的计算方法就是两个数相与后左移一位 (00000010 & 00000010) << 1
所以这道题使用递归更加容易理解

代码展示:

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

2、走方格的方案数

入口:题目链接

题目描述:
在这里插入图片描述

题目解析:
本题为求取路径总数的题目,一般可以通过递归求解,对于复杂的问题,可以通过动态规划求解。

解题思路:
| 1 | 2 | 3 |
| 4 | 5 | 6 |
| 7 | 8 | 9 |
对于上面的n * m(3 * 3)的格子,有两种情况
a. 如果n或者m为1,则只有一行或者一列,从左上角走到右下角的路径数为n + m
比如: 1 * 1格子,可以先向下走,再向右走,到达右下角;或者先向右走,再向下走,到达右下角,共两条,即 1 + 1 = 2,对于1 * m和 n * m的情况同学们自己画一下
b. 如果n,m都大于1,那么走到[n][m]格子的右下角只有两条路径,
<1>: 从[n - 1][m]格子的右下角向下走,到达
<2>: 从[n][m - 1]格子的右下角向右走,到达
所以走到[n][m]格子的右下角的数量为[n-1][m] + [n][m - 1],可以通过递归实现,情况a为递归的终止条件

递归代码展示:

#include <iostream>
using namespace std;
int pathnum(int n, int m)
{if (n == 0 || m == 0){return 1;}return pathnum(n - 1, m) + pathnum(n, m - 1);
}int main() 
{int n, m;while (cin >> n >> m){cout << pathnum(n, m) << endl;}
}

动态规划代码展示:

#include <iostream>
#include <vector>
using namespace std;
int pathnum(int n, int m)
{vector<vector<int>> dp(n + 1, vector<int>(m + 1, 1));for (int i = 1; i <= n; i++){for (int j = 1; j <= m; j++){dp[i][j] = dp[i - 1][j] + dp[i][j - 1];}}return dp[n][m];
}int main() {int n, m;while (cin >> n >> m){cout << pathnum(n, m) << endl;}
}

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

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

相关文章

信号系统之傅里叶变换属性

1 傅里叶变换的线性度 傅里叶变换是线性的&#xff0c;即具有均匀性和可加性的性质。对于傅里叶变换家族的所有四个成员&#xff08;傅里叶变换、傅里叶级数、DFT 和 DTFT&#xff09;都是如此。 图 10-1 提供了一个示例&#xff0c;说明均匀性如何成为傅里叶变换的一个属性。…

Stable Diffusion 3震撼发布模型与Sora同架构

Prompt&#xff1a;Epic anime artwork of a wizard atop a mountain at night casting a cosmic spell into the dark sky that says "Stable Diffusion 3" made out of colorful energy Stability AI发布Stable Diffusion 3文本到图像模型。该模型采用扩散变换架构…

Java项目:27 基于SSM+JSP实现的大学校园兼职平台

作者主页&#xff1a;舒克日记 简介&#xff1a;Java领域优质创作者、Java项目、学习资料、技术互助 文中获取源码 项目介绍 系统介绍 基于SSMJSP实现的大学校园兼职平台分为前台与管理员两块 管理端分为8大模块&#xff0c;分别是用户管理、兼职管理、帖子管理、聊天管理、…

研学活动报名平台系统功能清单

中小学生社会实践活动、研学旅行等素质教育活动报名与管理平台&#xff0c;功能包含&#xff1a;活动分类&#xff0c;活动管理&#xff0c;在线报名缴费&#xff0c;扫码核销&#xff0c;会员特权体系&#xff0c;在线商城&#xff0c;研学互动。系统支持入驻老师自行创建研学…

【Java程序员面试专栏 数据结构】一 高频面试算法题:数组

一轮的算法训练完成后,对相关的题目有了一个初步理解了,接下来进行专题训练,以下这些题目就是汇总的高频题目,本篇主要聊聊数组,包括数组合并,滑动窗口解决最长无重复子数组问题,图形法解下一个排列问题,以及一些常见的二维矩阵问题,所以放到一篇Blog中集中练习 题目…

如何在nginx增加健康检查接口

在docker中部署的nginx或者在nginx部署的nginx一般是需要一个健康检查接口的 这样的话&#xff0c;就可以确定容器当前的状态是否是健康的 那么&#xff0c;如何给nginx增加一个健康检查的接口呢&#xff1f; 接下来呢&#xff0c;我们就演示一个在nginx中如何增加健康检查的…

无人机竞赛常用目标检测方法--色块检测

本次开源计划主要针对大学生无人机相关竞赛的视觉算法开发。 开源代码仓库链接&#xff1a;https://github.com/zzhmx/Using-color-gamut-limitations-such-as-HSV-and-RGB-for-object-detection.git 主要使用传统算法&#xff0c;如果想要使用进阶版机器学习算法&#xff0c;请…

03 表数据基本操作

文章目录 插入(insert)查询(select)where子句更新表记录(update)删除表记录&#xff08;delete&#xff09;表字段的操作(alter)时间类型数据 插入(insert) insert into 表名 values(值1&#xff0c;值2...),(值1&#xff0c;值2...),...; insert into 表名 (字段1,...) value…

使用phpstudy搭建eXtplorer网站并结合内网穿透远程访问本地资源

文章目录 1. 前言2. eXtplorer网站搭建2.1 eXtplorer下载和安装2.2 eXtplorer网页测试2.3 cpolar的安装和注册 3.本地网页发布3.1.Cpolar云端设置3.2.Cpolar本地设置 4.公网访问测试5.结语 1. 前言 通过互联网传输文件&#xff0c;是互联网最重要的应用之一&#xff0c;无论是…

定制红酒:如何开启定制红酒之旅,享受个性化服务

在追求品质生活的今天&#xff0c;人们越来越注重个性化的服务和产品。云仓酒庄洒派定制红酒&#xff0c;就是为满足消费者的这一需求而生。它提供了一个平台&#xff0c;让消费者可以根据自己的喜好和需求&#xff0c;定制专属的红酒&#xff0c;享受个性化的服务。那么&#…

【python】网络爬虫与信息提取--scrapy爬虫框架介绍

一、scrapy爬虫框架介绍 scrapy是一个功能强大的网络爬虫框架&#xff0c;是python非常优秀的第三方库&#xff0c;也是基于python实现网络爬虫的重要技术路线。scrapy不是哟个函数功能库&#xff0c;而是一个爬虫框架。 爬虫框架&#xff1a;是实现爬虫功能的一个软件结构和功…

VegaPrime 2013 VP2013

Vega Prime 2013 VegaPrime 2013 VP2013

ChatGPT回答模式

你发现了吗&#xff0c;ChatGPT的回答总是遵循这些类型方式。 目录 1.解释模式 2.类比模式 3.列举模式 4.限制模式 5.转换模式 6.增改模式 7.对比模式 8.翻译模式 9.模拟模式 10.推理模式 1.解释模式 ChatGPT 在回答问题或提供信息时&#xff0c;不仅仅给出…

文件上传漏洞--Upload-labs--Pass20--数组绕过

一、漏洞原理 漏洞来源&#xff1a;count()函数漏洞。 现自定义一个数组 arr[]&#xff0c;定义arr[0]1,arr[3]2, 此时count(arr)的值为2&#xff0c;则arr[count[arr]]即为arr[2]&#xff0c;但是arr[2]未定义&#xff0c;即为一个空值&#xff0c;若使用count()函数的本意是…

谷粒商城-nginx搭建域名访问环境性能压测

nginx搭建域名访问环境 正向代理与反向代理 正向代理&#xff1a;客户端向代理服务器发请求并指定目标服务器&#xff0c;代理向目标服务器转交请求并将获得的内容返回给客户端。 反向代理&#xff1a;用户直接访问反向代理服务器就可以获得目标服务器的资源。反向代理服务器…

主流的开发语言和开发环境介绍

个人浅见&#xff0c;不喜勿喷&#xff0c;谢谢 软件开发是一个涉及多个方面的复杂过程&#xff0c;其中包括选择合适的编程语言和开发环境。编程语言是软件开发的核心&#xff0c;它定义了程序员用来编写指令的语法和规则。而开发环境则提供了编写、测试和调试代码的工具和平台…

天锐绿盾 | 文件数据\资料防泄漏软件 \ 自动智能透明加密保护

怎么防止公司办公终端文件数据资料外泄? 防止公司办公终端文件数据资料外泄是非常重要的&#xff0c;以下是一些有效的措施&#xff1a; 限制访问权限&#xff1a;根据员工的职责和需求&#xff0c;设定文件和数据资料的访问权限。确保只有授权人员才能访问敏感信息。 加密存…

Codeforces Round 927 (Div. 3)

F. Feed Cats 题目大意 给一长度为的数轴&#xff0c;个区间在数轴上选取一些点作为特殊点在满足个区间中&#xff0c;每个区间内只能有一个特殊点问最多能选多少个特殊点 解题思路 对于每个点有放或不放两种状态考虑表示位置可能放或不放的最优结果若不放&#xff0c;若放…

java.lang.IllegalStateException: Promise already completed.

spark submit 提交作业的时候提示Promise already complete 完整日志如下 File "/data5/hadoop/yarn/local/usercache/processuser/appcache/application_1706192609294_136972/container_e41_1706192609294_136972_02_000001/py4j-0.10.6-src.zip/py4j/protocol.py"…

C#,动态规划(DP)丢鸡蛋问题(Egg Dropping Puzzle)的三种算法与源代码

1 扔鸡蛋问题 动态规划&#xff08;Dynamic Programming&#xff0c;DP&#xff09;是运筹学的一个分支&#xff0c;是求解决策过程最优化的过程。20世纪50年代初&#xff0c;美国数学家贝尔曼&#xff08;R.Bellman&#xff09;等人在研究多阶段决策过程的优化问题时&#xf…