C++笔试强训10

文章目录

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


一、选择题

1-5题

在这里插入图片描述
前面做过很多次了,记住就好,不在赘述,选C。

内联函数经常使用的场景包括:

  1. 小型函数:当函数体非常小,只包含几条语句时,使用内联函数可以显著减少函数调用的开销。这是因为小型函数的函数体本身就很小,直接展开到调用点并不会显著增加代码大小,反而可以减少因函数调用而产生的额外开销。

  2. 频繁调用的函数:如果某个函数在程序中被频繁调用,那么将其定义为内联函数可以显著提高程序的执行效率。这是因为每次函数调用都会有一定的开销,如果这个函数被频繁调用,那么这些开销的累积就会非常显著。

  3. 不会改变函数参数或全局状态:内联函数通常不应该修改其参数或全局状态,因为内联展开后,这些修改可能会影响到程序的其他部分,导致难以追踪的错误。因此,那些只进行简单计算或数据转换,不改变外部状态的函数,更适合作为内联函数。

  4. 模板函数:在模板编程中,模板函数的实例化可能会导致大量的函数生成。如果这些模板函数很小且被频繁使用,将它们定义为内联函数可以减少代码膨胀并提高执行效率。


在这里插入图片描述
选C,解释如下:
在C++中,有些运算符是不能被重载的,这些运算符主要包括以下几类:

  1. 条件运算符(?:)

    • 条件运算符用于三元条件判断,其形式为exp1 ? exp2 : exp3
    • 不能重载的原因是,如果允许重载,则无法保证运算符的跳转性质,即只执行exp2exp3中的一个。
  2. 成员访问运算符(.)

    • 用于访问类的成员变量和成员函数。
    • 不能重载的原因是,重载后可能无法明确引用对象的成员,导致运算符意义的混淆。
  3. 域运算符(::)

    • 用于访问类的静态成员、命名空间的成员等。
    • 不能重载的原因是,该运算符只是在编译时进行域解析,没有运算的参与,且其运算对象是类型而不是变量或一般表达式,不具备重载的特征。
  4. 长度运算符(sizeof)

    • 用于返回数据类型或变量的大小。
    • 不能重载的主要原因是内部许多指针和操作都依赖它,重载后可能导致混乱和不可预测的行为。
  5. 成员指针访问运算符(->* 和 .*)

    • ->*用于通过指向类成员的指针访问类的成员。
    • .*用于通过对象直接访问类的成员指针所指向的成员。
    • 这两个运算符也不能被重载,因为它们涉及到类成员的指针访问,重载后可能破坏原有的语义和功能。

在这里插入图片描述
A:构造函数没返回值,故A错
B: 该函数只有一个参数,是对自身对象的引用,不是某个对象,故B错
C:若没有手动实现,编译器确实会自动生成,但访问权限不是protected而是共有的public,故C错。
D:符合构造函数的作用,正确。

故选D。


在这里插入图片描述
const成员函数,const加在函数名()的后面,此处的const实际上修饰的是this指针,表明在该成员函数中,不能修改非静态的成员变量。


在这里插入图片描述
函数类型即返回值类型不能作为重载函数的调用依据。
故选C。


6-10题

在这里插入图片描述
MyClass a[5],这个语句会调用5次构造函数,因为在栈上创建了五个该类型的对象。

MyClass* b[6],这个语句不会调用构造函数,因为它只是一个指针数组,里面存放的类型是MyClass*,此时还没有new,new的时候才会调用构造函数。

故选B。


在这里插入图片描述
此处考的是:
在初始化列表中初始化成员的次序:与该成员在初始化列表中出现的先后次序无关,真正的初始化次序与成员变量在类中声明的先后次序保持一致。

本题中声明次序是:
Printer a;
Printer b;
故会先初始化a,后初始化b,和初始化列表中a,b的顺序无关,故会输出ab
故选C。


在这里插入图片描述
在主流编译器中空类的大小一般都是1,如果空类的大小为0的话,比如说类A创建了三个对象a、b、c,那在内存上,这三对象不就在同一个内存位置了嘛?怎么区分呢?所以一般主流编译器都把空类大小设置成1。
主流编译器,vs或者g++上都是这样的。
其他的不能说太死
故选B。
在这里插入图片描述


在这里插入图片描述

如下图,选B。

在这里插入图片描述


在这里插入图片描述
a是const int类型的,&a就是const int*类型的,此处强转成int*类型赋值给p,然后通过p修改了值为20,然后打印出a的值和*p的值。按我们的认知应该都是20才对,但实际上不是,a是10,*p是20,原因如下:

C++中被const修饰的变量:该变量已经是一个常量了,还具有替换的作用编译器在编译代码,在程序中看到对常量中内容读取时,会直接使用常量中的内容替换该常量

  1. 声明和初始化:

    const int a = 10;
    

    编译器知道 aconst 并将其值设置为 10。它可能会将 a 放置在只读内存区域。

  2. 指针赋值:

    int * p = (int *)(&a);
    

    a 的地址被转换为 int * 并赋值给 p。这个操作本身无害,但为潜在的未定义行为做了准备。

  3. 尝试修改:

    *p = 20;
    

    这一行尝试修改 a 的内存地址中的值。由于 aconst,这会导致未定义行为。在许多系统上,这可能实际上不会改变 a 的值。

  4. 输出:

    cout << "a = " << a << ", *p = " << *p << endl;
    

    此处,编译器可能会直接使用 a 的常量值(10),因为它假设 a 未被改变。*p 访问修改后的内存位置,显示 20。

因此,打印的值是:

a = 10, *p = 20

结论
a 保持不变而 *p 显示 20 的关键原因是编译器优化和 a 可能被放置在只读内存中。const 修饰符通知编译器 a 不应被更改,导致输出中观察到的行为。


二、编程题

题目一

题目链接:
井字棋
在这里插入图片描述

提交代码:

class Board {public:bool checkWon(vector<vector<int> > board) {bool ret = false;for (int i = 0; i < board.size(); i++) {if (board[i][0] == 1 && board[i][1] == 1 && board[i][2] == 1) {return true;}else if (board[0][i] == 1 && board[1][i] == 1 && board[2][i] == 1) {return true;}}if(board[0][0] == 1 && board[1][1] == 1 && board[2][2] == 1){return true;}return false;}
};

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


题目二

题目链接:
密码强度等级
在这里插入图片描述

提交代码:

#include <iostream>
#include<string>
using namespace std;int main() {string str;cin >> str;int score = 0;size_t size = str.size();if (size <= 4) score += 5;else if (size >= 5 && size <= 7) score += 10;else score += 25;int number = 0, bigchars = 0, smallchars = 0, character = 0;for (auto s : str) {if (s >= 'a' && s <= 'z') smallchars++;else if (s >= 'A' && s <= 'Z') bigchars++;else if (s >= '0' && s <= '9') number++;else character++;}if (number == 0) score += 0;else if (number == 1) score += 10;else score += 20;if (bigchars == 0 && smallchars == 0) score += 0;else if ((bigchars == 0 && smallchars != 0) || (bigchars != 0 &&smallchars == 0)) score += 10;else score += 20;if (character == 0) score += 0;else if (character == 1) score += 10;else score += 25;if (bigchars != 0 && smallchars != 0 && number != 0 &&character != 0) score += 5;else if (((bigchars == 0 && smallchars != 0) || (bigchars != 0 &&smallchars == 0)) && number != 0 && character != 0) score += 3;else if (((bigchars == 0 && smallchars != 0) || (bigchars != 0 &&smallchars == 0)) && number != 0) score += 2;if (score >= 90) {cout << "VERY_SECURE" << endl;} else if (score >= 80) {cout << "SECURE" << endl;}else if (score >= 70) {cout << "VERY_STRONG" << endl;} else if (score >= 60) {cout << "STRONG" << endl;} else if (score >= 50) {cout << "AVERAGE" << endl;} else if (score >= 25) {cout << "WEAK" << endl;} else {cout << "VERY_WEAK" << endl;}return 0;
}
// 64 位输出请用 printf("%lld")

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

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

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

相关文章

【C++】模板的特化

文章目录 概念函数模板特化类模板特化全特化偏特化 概念 通常情况下&#xff0c;使用模板可以实现一些与类型无关的代码&#xff0c;但是有一些类型需要特殊处理&#xff0c;否则可能会得到一些错误的结果。 比如&#xff0c;在比较两个数的大小时&#xff0c;如果传入两个变量…

手动上电电路(电路收藏)

SW1按下 V1栅极对地 V1通 Vout给Mcu工作 GPIO2 高电平 V2通 SW1松开 V1栅极依然通过V2对地 维持V1通 Vout。再次按下SW1 GPIO1 对地 使Mcu收到中断 将GPIO2 输出低电平 V2关 松开SW1 V1栅极悬空 V1断开 Vout被截断

产品思维之什么是好的设计?

点击下方“JavaEdge”&#xff0c;选择“设为星标” 第一时间关注技术干货&#xff01; 免责声明~ 任何文章不要过度深思&#xff01; 万事万物都经不起审视&#xff0c;因为世上没有同样的成长环境&#xff0c;也没有同样的认知水平&#xff0c;更「没有适用于所有人的解决方案…

原生微信小程序wxml2canvas生成海报并包保存至本地

Wxml2Canvas是什么&#xff1f; Wxml2Canvas 是一个用于微信小程序开发的工具库&#xff0c;主要用途是将小程序页面的内容绘制成图片&#xff0c;以便生成海报或保存分享图片到相册等功能。具体用途包括&#xff1a; ①海报生成功能&#xff1a;允许开发者将当前页面的特定部…

【机器学习】决策边界的基本概念以及如何在逻辑回归中找到决策边界

引言 在机器学习中&#xff0c;决策边界是分类算法用来区分不同类别数据点的线、面或超平面。这些边界通常是模型的预测规则&#xff0c;用于将特征空间中的点分配到不同的类别。决策边界可以是线性的&#xff0c;也可以是非线性的&#xff0c;取决于数据的分布和所使用的分类算…

鸿蒙 HarmonyOS NEXT端云一体化开发-云数据库篇

一、概述 云数据库是一款基于对象模型的数据库&#xff0c;采用存储区、对象类型和对象三级结构。 数据模型 存储区 存储区是一个独立的数据存储区域&#xff0c;多个数据存储区之间相互独立&#xff0c;每个存储区拥有完全相同的对象类型定义 --类似于关系型数据库中的da…

ECMA6Script学习笔记(五)

【摘要】 本文是对自己学习ES6的学习笔记回顾,后面是概要: 本文介绍了ES6中的对象创建和拷贝方法。对象创建方面&#xff0c;ES6通过class关键字支持了面向对象的语法糖&#xff0c;包括属性设置、getter和setter方法、构造器、静态方法以及私有属性的定义。同时&#xff0c;展…

专业做护眼灯的有哪些品牌?五款市面主流护眼灯专业测评

专业做护眼灯的有哪些品牌&#xff1f;市面上出现的品牌毫不夸张的说&#xff0c;真的算得上是琳琅满目&#xff0c;而且每一个品牌都在说自己的产品才是最值得的&#xff0c;这种情况下来&#xff0c;很多人一时之间根本就不知道要选择哪一款比较好。而且还有一些还会买到低劣…

vue基础知识总结(2)--- axios的使用

一.下载Vue3&#xff1a; 选择自己想要下载的项目文件夹&#xff0c;cmd回车打开命令栏&#xff0c;执行 &#xff1a; cnpm init vuelatest 然后等待一会就可以创建一个项目&#xff0c;并更改项目名&#xff1a; √ 请输入项目名称&#xff1a; ... vue-project 之后按照…

华为仓颉语言测试申请

1. 申请网址 HarmonyOS NEXT仓颉语言开发者预览版 Beta招募- 华为开发者联盟 点击立即报名登录华为账号 勾选选项 , 点击同意 按要求填写信息即可 2. 申请通过后官方会通过邮件的方式发送相关下载途径 , 根据文档进行下载即可 package Cangmain(): Int64 {println("你…

AI技术修复奥运珍贵历史影像,《永不失色的她》再现百年奥运女性光彩

Greatness of HER &#xff01; AI致敬 , 了不起的「她」。 7月25日&#xff0c;在国际奥委会和各方力量的支持下&#xff0c;阿里云以AI技术修复奥运珍贵历史影像&#xff0c;让百年奥运女性的伟大光彩被看见&#xff0c;并在巴黎推出《永不失色的她》全球首映礼。 国际奥委会…

Graph Contrastive Learning via Interventional View Generation

发表于:WWW24 推荐指数: #paper/⭐⭐ 框架与动机: 整体框架 动机: 如上四个: b.HLCL 生成随机增强视图,并分别用高通过滤器和低通过滤器过滤 c.生成同配异配视图,都用低通过滤器 d.生成同配视图异配视图,同配视图用低通过滤器,异配视图用高通过滤器 通过图d,我们可以得出:d&g…

基于Material studio拉伸-断裂过程的Perl脚本

在材料科学的研究中&#xff0c;拉伸-断裂过程一直是科学家们探索的焦点。这一过程涉及复杂的力学行为和材料内部微观结构的变化&#xff0c;对于理解材料的性能至关重要。然而&#xff0c;传统的实验方法不仅耗时耗力&#xff0c;而且难以捕捉到微观尺度上的所有细节。 为了满…

网站如何实现HTTPS访问

要实现网站通过HTTPS协议访问&#xff0c;主要依赖于为网站部署SSL/TLS证书。 SSL&#xff08;Secure Sockets Layer&#xff09;是用于在互联网上加密数据传输的安全协议。部署了SSL证书之后&#xff0c;网站就可以通过HTTPS&#xff08;超文本传输安全协议&#xff09;来提供…

C# Unity 面向对象补全计划 之 初识继承方法与多态

本文仅作学习笔记与交流&#xff0c;不作任何商业用途&#xff0c;作者能力有限&#xff0c;如有不足还请斧正 本系列旨在通过补全学习之后&#xff0c;给出任意类图都能实现并做到逻辑上严丝合缝 1.继承方法 C# & Unity 面向对象补全计划 之 继承&#xff08;字段与属性&…

Java真人版猫爪老鼠活动报名平台系统

&#x1f43e;“真人版猫爪老鼠活动报名平台系统”——趣味追逐&#xff0c;等你来战&#xff01;&#x1f42d; &#x1f431;【萌宠变主角&#xff0c;现实版趣味游戏】 厌倦了电子屏幕的虚拟游戏&#xff1f;来试试“真人版猫爪老鼠活动”吧&#xff01;在这个平台上&…

PHP进阶-CentOS7部署LNMP服务架构的项目

在开发和部署Web应用时&#xff0c;LNMP&#xff08;Linux、Nginx、MySQL、PHP&#xff09;的组合是非常常见的。这篇博客将介绍如何通过一个简单的脚本&#xff0c;在CentOS 7上部署LNMP&#xff0c;并将PHP项目自动部署到服务器上。这不仅可以节省大量的时间&#xff0c;还能…

一个接口未做超时处理,引发数据库hang了

前言 在代码开发过程中&#xff0c;你是否会经常遇到以下问题&#xff1f; 数据库连接被瞬间占用&#xff0c;出现性能瓶颈 系统资源被大量占用&#xff0c;出现锁等待或性能下降 事务日志大量增长 上述这些状况的出现可能是未提交事务引发的。该类事务开启后&#xff0c;…

什么是五力分析?5分钟带你了解它在企业财务经营中的应用与价值!

如今&#xff0c;随着全球化进程的不断加速&#xff0c;市场环境复杂多变&#xff0c;市场竞争日益激烈&#xff0c;财务经营已经成为了企业应对复杂市场环境、保持自身竞争力的关键。体系化的五力分析平台能够为企业提供一套全面的解决方案&#xff0c;帮助企业在盈利能力、偿…

【随机链表的复制】python刷题记录

R3-哈希表 参考k神题解 哈希表法&#xff1a; """ # Definition for a Node. class Node:def __init__(self, x: int, next: Node None, random: Node None):self.val int(x)self.next nextself.random random """class Solution:def copy…