【C++笔试强训】第十天

news2024/11/20 9:39:34

🎇C++笔试强训


  • 博客主页:一起去看日落吗
  • 分享博主的C++刷题日常,大家一起学习
  • 博主的能力有限,出现错误希望大家不吝赐教
  • 分享给大家一句我很喜欢的话:夜色难免微凉,前方必有曙光 🌞。

在这里插入图片描述

💦 🔥


选择题

💦第一题

内联函数在以下场景中最有用的()

A 当函数代码较长且多层嵌套循环的时候
B 当函数中有较多的静态变量的时候
C 当函数代码较小并且被频繁调用的时候
D 以上都不对

在C++中被inline修饰的函数是内联函数

A 函数代码较长不建议内联
B 函数有较多静态变量不建议内联
C 当函数代码较小并且被频繁调用的时候适合内联

这道题的答案是C


💦第二题

下列运算符中,在C++语言中不能重载的是:

A *
B >=
C ::
D delete

这道题注意是不能被重载,C++并不是所有运算符都可以被重载

. .* :: ?: sizeof 需要记一下,这五个不可以被重载

这道题的正确答案是C


💦第三题

拷贝构造函数的特点是()

A 该函数名同类名,也是一种构造函数,该函数返回自身引用
B 该函数只有一个参数,是对某个对象的引用
C 每个类都必须有一个拷贝初始化构造函数,如果类中没有说明拷贝构造函数,则编译器系统会自动生成一个缺省拷贝构造函数,作为该类的保护成员
D 拷贝初始化构造函数的作用是将一个已知对象的数据成员值拷贝给正在创建的另一个同类的对象

拷贝构造是一个特殊的构造函数

请添加图片描述

A 构造函数无返回值
B 一定是对本类类型对象的引用,不是某个
C 是作为该类public成员,不是保护成员
D 这种说法是拷贝构造的调用场景

这道题的答案是D


💦第四题

print()函数是一个类的常成员函数,它无返回值,下列表示中正确的是()

A const void print();
B void const print();
C void print() const;
D void print(const);

常成员函数 即 const成员函数 const应该在参数列表之后,如果是返回值前代表返回值不能修改

请添加图片描述

这道题的答案是C


💦第五题

不能作为重载函数的调用的依据是:

A 参数个数
B 参数类型
C 函数类型
D 函数名称

重载函数和函数类型没有关系,作用域,函数名都必须相同

这道题的答案是C


💦第六题

如果MyClass为一个类,执行”MyClass a[5], *b[6]”语言会自动调用该类构造函数的次数是()

A 2
B 5
C 4
D 9

请添加图片描述
指针在调用期间并不会调用构造函数

这道题的答案是B


💦第七题

下面的程序输出可能是什么?

class Printer{
public:
	Printer(std::string name) {std::cout << name;}
};
class Container{
public:
	Container() : b("b"), a("a") {}
	Printer a;
	Printer b;
};
int main(){
	Container c;
	return 0;
}

A 可能是 “ab” 或 “ba”。 依赖于具体的实现
B 一直都是 “ba”
C 一直都是 “ab”

这道题就是将形参打印一下

请添加图片描述

注意是和生成的先后次序一致

这道题的答案是C


💦第八题

在Windows 32位操作系统中,假设字节对齐为4,对于一个空的类A,sizeof(A)的值为()?

A 0
B 1
C 2
D 4

请添加图片描述

请添加图片描述

这道题的答案是B


💦第九题

下面 C++ 程序的运行结果是()

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

class A {
friend long fun(A s) {
if (s.x < 3) {
	return 1;
}
	return s.x + fun(A(s.x - 1));
}
public:
	A(long a) {
		x = a--;
	}
private:
	long x;
};
int main() {
	int sum = 0;
	for (int i = 0; i < 5; i++) {
		sum += fun(A(i));
	}
	cout << sum;
	return 0;
	}
}

A 21
B 15
C 9
D 36

注意A(long a)是后置–:先使用a的值再-1

看主函数的话,会循环5次

fun里面是一个递归函数,需要列举出来依次解题

请添加图片描述

这道题的答案是B


💦第十题

以下程序输出是____。

#include <iostream>
using namespace std;
int main(void)
{
	const int a = 10;
	int * p = (int *)(&a);
	*p = 20;
	cout<<"a = "<<a<<", *p = "<<*p<<endl;
	return 0;
}

A 编译阶段报错运行阶段报错
B a = 10, *p = 10
C a = 20, *p = 20
D a = 10, *p = 20
E a = 20, *p = 10

请添加图片描述

这道题&a的类型是const int* ,理论上const指向的内容是可以改变的,但是c++中的编译器具有替换作用,在读取的时候会使用常量的内容替换,这里需要注意一下

这道题的答案是D


编程题

🔥第一题

链接:井字棋

请添加图片描述

  • 题目解析:

井字棋,是一种在3*3格子上进行的连珠游戏,三个相同就代表获胜。

  • 解题思路:

井字棋有四种情况表示当前玩家获胜,1代表当前玩家棋子 1. 行全为1, 即行的和为3 2. 列全为1, 列的和为3 3. 主对角全为1, 对角和为3 4. 副对角全为1, 对角和为3 5. 如果扩展为N*N的话,判断和是否等于N,下面代码适用任何情况

  • 解题思路:
class Board {
public:
    bool checkWon(vector<vector<int> > board) {
        // write code here
        int row = board.size();
        int col = board[0].size();
        //每一行是否连续
        for(int i = 0; i < row ;i++)
        {
            int sum = 0;
            for(int j = 0;j < col ;j++)
            {
                sum += board[i][j] ;
            }
            if(sum == col)
                return true;
        }
        //每一列是否连续
        for(int i = 0; i < col ;i++)
        {
            int sum = 0;
            for(int j = 0;j < row ;j++)
            {
                sum += board[j][i] ;
            }
            if(sum == row)
                return true;
        }
        //对角线是否连续
        int sum = 0;
        for(int i = 0;i < row ;i++)
        {
            sum += board[i][i];
        }
        if(sum == row)
            return true;
        //副对角线是否连续
        sum = 0;
        for(int i = 0;i < row;i++)
        {
            sum += board[i][col - i - 1];
        }
        if(sum == row)
            return true;

        return false;
    }
};

🔥第二题

链接:密码强度等级

描述
密码按如下规则进行计分,并根据不同的得分为密码进行安全等级划分。

一、密码长度:
5 分: 小于等于4 个字符
10 分: 5 到7 字符
25 分: 大于等于8 个字符

二、字母:
0 分: 没有字母
10 分: 密码里的字母全都是小(大)写字母
20 分: 密码里的字母符合”大小写混合“

三、数字:
0 分: 没有数字
10 分: 1 个数字
20 分: 大于1 个数字

四、符号:
0 分: 没有符号
10 分: 1 个符号
25 分: 大于1 个符号

五、奖励(只能选符合最多的那一种奖励):
2 分: 字母和数字
3 分: 字母、数字和符号
5 分: 大小写字母、数字和符号

最后的评分标准:

= 90: 非常安全
= 80: 安全(Secure)
= 70: 非常强
= 60: 强(Strong)
= 50: 一般(Average)
= 25: 弱(Weak)
= 0: 非常弱(Very_Weak)

对应输出为:

VERY_SECURE
SECURE
VERY_STRONG
STRONG
AVERAGE
WEAK
VERY_WEAK

请根据输入的密码字符串,进行安全评定。

注:
字母:a-z, A-Z
数字:0-9
符号包含如下: (ASCII码表可以在UltraEdit的菜单view->ASCII Table查看)
!"#$%&'()*+,-./ (ASCII码:0x21~0x2F)
:;<=>?@ (ASCII码:0x3A~0x40)
[]^_` (ASCII码:0x5B~0x60)
{|}~ (ASCII码:0x7B~0x7E)

提示:
1 <= 字符串的长度<= 300
输入描述:

输入一个string的密码
输出描述:

输出密码等级

请添加图片描述

  • 解题思路:
    这里对于不同种类的字符得分不同,同学们可以现对每一个维度进行单独判断,即对于长度,字母,数字,符号单独判断,最后把所有的单项值根据题目要求相加,输出对应的安全级别。

  • 代码演示:

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

int score_count(string& str) {
    int digit = 0, symbol = 0;
    int lower = 0, upper = 0, charc = 0;
    int size = 0, sum = 0;
    for (auto ch : str) {
        if (ch >= 'a' && ch <= 'z') {
            lower++;
            charc++;
        } else if (ch >= 'A' && ch <= 'Z') {
            upper++;
            charc++;
        } else if (ch  >= '0' && ch  <= '9') {
            digit++;
        } else if ((ch >= 0x21 && ch <= 0x2F) ||
                   (ch >= 0x3A && ch <= 0x40) ||
                   (ch >= 0x5B && ch <= 0x60) ||
                   (ch >= 0x7B && ch <= 0x7E)) {
            symbol++;
        }
    }

    size = str.size();
    if (size <= 4)
        sum += 5;
    else if (size <= 7)
        sum += 10;
    else
        sum += 25;
    if (lower > 0 && upper > 0)
        sum += 20;
    else if (lower == charc || upper == charc)
        sum += 10;
    if (digit == 1)
        sum += 10;
    else if (digit > 1)
        sum += 20;
    if (symbol == 1)
        sum += 10;
    else if (symbol > 1)
        sum += 25;
    if (lower > 0 && upper > 0 && digit > 0 && symbol > 0)
        sum += 5;
    else if ((lower > 0 || upper > 0) && digit > 0 && symbol > 0)
        sum += 3;
    else if ((lower > 0 || upper > 0) && digit > 0 && symbol == 0)
        sum += 2;
    return sum;
}

int main() {
    string str;
    while (cin >> str) {
        int score = score_count(str);
        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;

}

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

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

相关文章

操作系统的地址、数据存储和大小端问题

文章目录基本概念什么是位&#xff0c;什么是字节&#xff1f;地址总线内存地址物理地址虚拟地址寻址空间存储单元CPU位数CPU寻址大端存储和小端存储原理为什么会有大小端模式的区分基本概念 什么是位&#xff0c;什么是字节&#xff1f; 位表示的是二进制位&#xff0c;一般…

C语言中用sizeof和strlen观察数组的变化2

目录 一.前言 二.用sizeof观察字符串数组的变化 代码 运行结果 结果解释 图解 三.用sizeof观察字符数组的变化 代码 注意 运行结果 图解 注意 证明 一.前言 数组名大部分情况下是首元素的地址&#xff0c;只有两种情况除外&#xff1a; sizeof&#xff08;数组名&…

哈希桶的基本操作 || HashMap和HashSet介绍(手撕源码)

目录 前言&#xff1a; 哈希表介绍 哈希冲突 闭散列 开散列&#xff08;哈希桶&#xff09; 模拟实现哈希桶中插入和获取方法 代码实现 HashMap介绍 手撕源码 HashSet介绍 手撕源码 小结&#xff1a; 前言&#xff1a; &#x1f388;一棵搜索树的最快查找数据的时间复杂度是O(…

Java------String类和正则表达式

String在设计时被定义成了final类&#xff08;最终类&#xff09;&#xff0c;所以不能定义String类的子类&#xff0c;String用来表示字符串常量&#xff0c;是引用数据类型&#xff0c;一旦String类对象的字符序列被定义&#xff0c;那么这个字符序列的值是不能再变化的。 创…

今年十八,喜欢SQL注入

#1024程序员节&#xff5c;用代码&#xff0c;改变世界# 前言 &#x1f340;作者简介&#xff1a;被吉师散养、喜欢前端、学过后端、练过CTF、玩过DOS、不喜欢java的不知名学生。 &#x1f341;个人主页&#xff1a;被吉师散养的职业混子 &#x1fad2;每日emo&#xff1a;怀揣…

牛客竞赛每日俩题 - Day5

DP贪心 年终奖_牛客题霸_牛客网 思路&#xff1a; 定义f(i,j)表示从左上角走到坐标(i&#xff0c;j)处能获得的最大奖励。 搜索所有从左上角走到右下角的路径&#xff0c;找到最优路径。 f(i,j)分三种情况&#xff1a; 第一列&#xff1a;f(i, 0) f(i-1, 0) board(i, 0) 如果…

Java:企业应该用Java构建供应链软件吗?

很多公司使用Java编程语言&#xff0c;Java是最流行的编程语言之一&#xff0c;它帮助开发人员简化复杂企业解决方案的应用程序开发过程。 供应链是零售和制造业的重要组成部分&#xff0c;6%的零售业公司使用Java&#xff0c;另一方面&#xff0c;4%的制造公司使用编程语言&am…

基于莱维飞行扰动策略的麻雀搜索算法-附代码

基于莱维飞行扰动策略的麻雀搜索算法 文章目录基于莱维飞行扰动策略的麻雀搜索算法1.麻雀优化算法2. 改进麻雀算法2.1 莱维飞行搜索机制2.2 莱维飞行扰动策略2.3 初始化混沌搜索机制3.实验结果4.参考文献5.Matlab代码6.Python代码摘要&#xff1a;为了解决麻雀搜索算法存在迭代…

(02)Cartographer源码无死角解析-(04) 熟悉bag文件,配置.launch与.lua文件,初步调参

本人讲解关于slam一系列文章汇总链接:史上最全slam从零开始&#xff0c;针对于本栏目讲解(02)Cartographer源码无死角解析-接如下: (02)Cartographer源码无死角解析- (00)目录_最新无死角讲解&#xff1a;https://blog.csdn.net/weixin_43013761/article/details/127350885 文…

算法 | 详解斐波那契数列问题

14天阅读挑战赛 本篇是学习了《趣学算法&#xff08;第2版&#xff09;》 第一章之后总结的。 上一篇讲到了等比数列求和问题&#xff0c;求Sn122223...263&#xff1f;S_n 1 2 2^2 2^3 ... 2^{63} &#xff1f;Sn​122223...263&#xff1f;&#xff0c;该函数属于爆…

1024,我们节日

文章目录1024的前奏1024应该锻炼身体1024 &#xff1f;为何是1024其他的1024代码有Bug&#xff0c;世界却温暖特殊的一类人群&#xff08;一&#xff09;特殊的一类人群&#xff08;二&#xff09;写在最后1024的前奏 写博文的时间是23号&#xff0c;距离1024这个标志性的节日…

趣学算法14天阅读|Day2

14天阅读挑战赛 文章目录前言什么是算法&#xff1f;算法复杂度如何评定好算法案例案例一&#xff1a;棋盘的麦子案例二&#xff1a;兔子数列总结前言 &#x1f4eb; 作者简介&#xff1a;「六月暴雪飞梨花」&#xff0c;专注于研究Java&#xff0c;就职于科技型公司后端中级工…

@AutoConfigurationPackage注解详解

AutoConfigurationPackage是在springboot启动类注解SpringBootApplication下的EnableAutoConfiguration下。AutoConfigurationPackage作用是指定springboot扫描包&#xff0c;默认就是扫描启动类同包下的类。可以通过AutoConfigurationPackage来附加其他路径&#xff0c;然后sp…

asp.net园林绿化服务交易网站

本设计的目的是通过对园林绿化的初步了解&#xff0c;在巩固网站设计所学知识的基础上。运用于实践&#xff0c;在实践中强化理论知识&#xff0c;做到理论联系实践。在设计中学会搜集资料地方法&#xff0c;学会查阅设计规程。掌握设计步骤&#xff0c;同时培养创新能力&#…

【图像评价】基于matlab GUI图像评价系统【含Matlab源码 2185期】

一、图像质量评价 图像质量评价对图像处理算法的可行性分析以及某类算法达成效果的比较都起着非常重要的指导作用。随着图像处理技术的发展&#xff0c;对于图像质量评价的研究也日益深入&#xff0c;新的评价指标和评价算法不断涌现&#xff0c;共同推动了图像质量评价的进步…

【模型训练】YOLOv7旋翼无人机检测

YOLOv7旋翼无人机检测 1、YOLOv7算法旋翼无人机检测模型训练2、YOLOv7模型模型评估3、模型和数据集下载1、本项目采用YOLOv7算法实现对空中旋翼无人机的检测,在一万多张旋翼无人机检测数据集中训练得到,我们训练了YOLOv7模型,经评估我们得出了各个模型的评价指标; 2、目标类…

研发效能工程实践开篇

背景 随着技术的发展&#xff0c;大至一线互联网公司、小至几十人研发团队的公司都开始开展devops运动。大公司有能力自研&#xff0c;小公司则采用开源解决方案。如何实施devops业界已经有非常成熟的方案&#xff0c;所以本系列不再谈devops工具链以及如何实施。本系列想谈谈…

初识C++ - 类与对象(中篇·下半)

目录 赋值运算符重载 以下是一个日期类的运算符重载的案例(重点) 关于流插入与流提取的使用 方法一&#xff1a;定义与声明分离 方法二&#xff1a;使用内联函数 const成员 概念 关于上述日期类代码为什么需要在函数后面加入const 取地址及const取地址操作符重载 …

5G核心网技术基础自学系列 | 网络切片

书籍来源&#xff1a;《5G核心网 赋能数字化时代》 一边学习一边整理内容&#xff0c;并与大家分享&#xff0c;侵权即删&#xff0c;谢谢支持&#xff01; 附上汇总贴&#xff1a;5G核心网技术基础自学系列 | 汇总_COCOgsta的博客-CSDN博客 支持网络切片是设计5G架构的主要驱…

【牛客刷题--SQL篇】必会的常用函数之条件函数SQL26计算25岁以上和以下的用户数量(多种写法)

&#x1f496;个人主页&#xff1a;与自己作战 &#x1f4af;作者简介&#xff1a;CSDN博客专家、CSDN大数据领域优质创作者、CSDN内容合伙人、阿里云专家博主 &#x1f49e;牛客刷题系列篇&#xff1a;【SQL篇】】【Python篇】【Java篇】 &#x1f4cc;推荐刷题网站注册地址&a…