【C/C++笔试练习】内联函数、哪些运算符不能重载、拷贝构造函数、const类型、函数重载、构造函数、空类的大小、井字棋、密码强度等级

文章目录

  • C/C++笔试练习
  • 选择部分
    • (1)内联函数
    • (2)哪些运算符不能重载
    • (3)拷贝构造函数
    • (4)const类型
    • (5)函数重载
    • (6)构造函数
    • (7)程序分析
    • (8)空类的大小
    • (9)程序分析
    • (10)程序分析
  • 编程题 day10
    • 井字棋
    • 密码强度等级

C/C++笔试练习

选择部分

(1)内联函数

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

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

   答案选:C

  当函数代码较小并且被频繁调用的时候。 内联函数的目的是减少函数调用的开销,因此当函数体较小并且被频繁调用时,使用内联函数可以提高程序的执行效率。

   当函数参数是类对象时。对于类对象,调用成员函数时需要进行一次额外的间接引用,而内联函数可以避免这种开销。

  当函数代码较长或有多层嵌套循环时,内联函数的效率可能会降低,因为内联函数的代码会膨胀,导致编译器无法进行优化。当函数中有较多的静态变量时,内联函数也不会带来明显的性能提升。所以答案选C。

  

(2)哪些运算符不能重载

  下列运算符中,在C++语言中不能重载的是:
  A. *     B. >=
  C. ::    D. delete

  这些运算符都不能被重载:.  . *  ::  ?: sizeof

   答案选:C

  

(3)拷贝构造函数

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

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

   答案选:D

  拷贝构造函数是一种特殊的构造函数,它用于创建一个新对象,该对象的内容是另一个已存在的对象的复制。 它被用来初始化新对象,以复制现有对象的内容。

  拷贝构造函数的名称与类名相同,但是没有返回值。

  拷贝构造函数通常有两个参数:一个是对现有对象的引用,另一个是分配给新对象的内存空间。

  并非每个类都必须有一个显式的拷贝构造函数。编译器会自动生成一个缺省的拷贝构造函数,如果没有定义拷贝构造函数。所以选择D。

  

(4)const类型

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

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

   答案选:C

  const void print();:这个函数声明表示一个名为print的函数,它返回void类型(即没有返回值),并且是一个常成员函数,这意味着这个函数不会修改类的任何数据成员。

  void const print();:这个函数声明与第一个类似,也是表示一个名为print的函数,它返回void类型,并且是一个常成员函数。这个声明的含义与第一个相同。

  void print() const;:这个函数声明表示一个名为print的函数,它返回void类型,并且是一个常成员函数。这个声明符合常成员函数的语法规则,因此它是正确的。注意:此时的const修饰this指针,表明在该成员函数中不能修饰非静态成员变量。

  void print(const);:这个函数声明表示一个名为print的函数,它接受一个名为const的参数,并且返回void类型。这个声明不符合常成员函数的语法规则,因此它是错误的。常成员函数不应该有参数。所以答案选C。

  

(5)函数重载

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

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

   答案选:C

   函数重载: 是函数的一种特殊情况,C++允许在同一作用域中声明几个功能类似的同名函数,这些同名函数的形参列表(参数个数 或 类型 或 类型顺序)不同 ,常用来处理实现功能类似数据类型不同的问题。

   重载函数是指在同一作用域内,可以有一组具有相同名字但是参数列表不同的函数,这组函数被称为重载函数。 在调用重载函数时,编译器会根据调用时提供的实参的个数、类型和顺序来选择合适的重载函数版本进行调用。因此,参数个数、参数类型和函数名称都可以作为重载函数的调用的依据,而函数类型不是。

  

(6)构造函数

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

   答案选:B

  当你创建一个对象数组时,a[5]中一共有5对象,所以系统会先调用该类的构造函数5次。然后再创建一个指针数组,其中的指针都指向一个类对象,因为类型是指针,所以不会调用该类的构造函数。所以一共调用了5次构造函数。

  

(7)程序分析

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

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

  这个C++程序创建了一个Container类,这个类初始化了两个Printer对象:a和b。而Printer类的构造函数接受一个字符串参数,并打印这个字符串。

  现在的问题是,当创建Container对象c时,a和b的初始化顺序是怎样的?

  成员初始化的顺序是按照它们在类中的声明顺序。 因此,a会先于b被初始化。因此,打印出的顺序应该是“ab”。

  所以,程序的输出是ab。

在这里插入图片描述

  

(8)空类的大小

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

   答案选:B

  在32位系统中,每个对象都会有一个内存地址,即使这个对象是空的。因此,即使是一个空的类A,sizeof(A)的值也会大于0,于是就用1来表示这里有一个空类。

   根据C++的标准,sizeof(A)返回的是类A在内存中的大小,这个大小至少应该包含一个指针,即至少为4字节(32位系统的指针大小)。然而,由于类A是空的,没有任何成员变量,因此sizeof(A)的值实际上为1,即一个指针的大小。所以答案选B。

  

(9)程序分析

  下面 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

   答案选:B

  递归分析:fun(A(0))+fun(A(1))+fun(A(2))+fun(A(3))+fun(A(4))=15。

在这里插入图片描述

  

(10)程序分析

  以下程序输出是____。

#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

   答案选:D

  C++中const修饰变量,如果该变量已经是一个常量,那么const还具有替换的作用。编译器在编译带没带时候,在程序中看到对常量中内容读取时,会直接使用常量中的内容替换该常量。

在这里插入图片描述

            

编程题 day10

井字棋

井字棋

  井字棋有四种情况表示当前玩家获胜,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) {
        int row = board.size();
        //检查每一行的和是是否等于row
        int i, j, sum;
        for (i = 0; i < row; i++) {
            sum = 0;
            for (j = 0; j < row; j++) {
                sum += board[i][j];
            }
            if (sum == row)
                return true;
        }
        //检查每一列的和是是否等于row
        for (i = 0; i < row; i++) {
            sum = 0;
            for (j = 0; j < row; j++) {
                sum += board[j][i];
            }
            if (sum == row)
                return true;
        }
        //检查主对角线的和是是否等于row
        sum = 0;
        for (i = 0; i < row; i++) {
            sum += board[i][i];
        }
        if (sum == row)
            return true;
        //检查副对角线的和是是否等于row
        sum = 0;
        for (i = 0; i < row; i++) {
            sum += board[i][row - i - 1];
        }
        if (sum == row)
            return true;
        return false;
    }
};

  

密码强度等级

密码强度等级

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

#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;
}

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

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

云数据安全:在数字时代保护您的宝贵资产

在数字化时代&#xff0c;云计算已经成为企业和个人数据存储和处理的主要方式。然而&#xff0c;与之相伴而来的是日益严峻的数据安全挑战。本文将探讨云数据安全的重要性以及如何在云环境中保护您的数据。 一、云计算的崭新时代 云计算为组织提供了无与伦比的灵活性和效率&…

Elasticsearch 作为 GenAI 缓存层

作者&#xff1a;JEFF VESTAL&#xff0c;BAHA AZARMI 探索如何将 Elasticsearch 集成为缓存层&#xff0c;通过降低 token 成本和响应时间来优化生成式 AI 性能&#xff0c;这已通过实际测试和实际实施进行了证明。 随着生成式人工智能 (GenAI) 不断革新从客户服务到数据分析…

大数据毕业设计选题推荐-智慧消防大数据平台-Hadoop-Spark-Hive

✨作者主页&#xff1a;IT毕设梦工厂✨ 个人简介&#xff1a;曾从事计算机专业培训教学&#xff0c;擅长Java、Python、微信小程序、Golang、安卓Android等项目实战。接项目定制开发、代码讲解、答辩教学、文档编写、降重等。 ☑文末获取源码☑ 精彩专栏推荐⬇⬇⬇ Java项目 Py…

迅为iTOP-RK3588开发板多屏同显多屏异显异触

迅为iTOP-RK3588开发板多屏同显多屏异显异触 iTOP-RK3588开发板采用四核Cortex-A76处理器和Cortex-A55架构&#xff0c;芯片内置VOP控制器&#xff0c;最多可以支持7个屏幕显示&#xff0c;支持HDMI、LVDS、MIPI、EDP四种显示接口的多屏同显、异显和异触&#xff0c;可有效提高…

如何查看网站的https的数字证书

如题 打开Chrome浏览器&#xff0c;之后输入想要抓取https证书的网址&#xff0c;此处以知乎为例点击浏览器地址栏左侧的锁的按钮&#xff0c;如下图 点击“连接是安全的”选项&#xff0c;如下图 点击“证书有效”选项卡&#xff0c;如下图 查看基本信息和详细信息 点击详细信…

点亮一个灯

.text .global _start _start: RCC时钟使能 GPIOE RCC_MP_AHB$ENSETR[4]->1 LDR R0,0x50000a28 LDR R1,[R0] ORR R1,R1,#(0x1<<4) ORR R1,R1,#(0x1<<5) STR R1,[R0]设置PE10为输出模式 GPIOE_MODER[21:20]->01 先清0 LDR R0,0x50006000 LDR R1,[R0] BI…

Geotrust证书

GeoTrust是著名的证书颁发机构DigiCert的品牌。GeoTrustSSL产品在Internet上提供从基本域名验证到扩展验证SSL标准支持的最高级验证的安全性。 GeoTrust OV&#xff08;组织验证&#xff09;证书验证域所有权和组织的存在。在颁发证书之前&#xff0c;会检查该组织在公共数据库…

商业计划书PPT怎么做?这个AI软件一键在线生成,做PPT再也不求人!

商业计划书是一份重要的书面文件&#xff0c;它通常被用作商业估值、筹资和进一步扩大业务的基础。一个好的商业计划书能够让团队向投资者、潜在客户和业务合作伙伴展示其企业的价值&#xff0c;并且清楚地阐述企业的产品或服务能够如何满足市场需求。作为商业计划书的重要组成…

Java 数据结构篇-实现双链表的核心API

&#x1f525;博客主页&#xff1a; 小扳_-CSDN博客 ❤感谢大家点赞&#x1f44d;收藏⭐评论✍ 文章目录 1.0 双链表的说明 1.1 双链表 - 创建 1.2 双链表 - 根据索引查找节点 1.3 双链表 - 根据索引插入节点 1.4 双链表 - 头插节点 1.5 双链表 - 尾插 1.6 双链表 - 根据索引来…

时间序列预测(1) — 时间序列预测研究综述

目录 1 什么是时间序列预测? 2 时间序列预测的应用场景与分类 3 时间序列数据的特性 4 时序预测评价指标 5 基于深度学习的时间序列预测方法 5.1 卷积神经网络 5.2 循环神经网络 5.3 Transformer类模型 1 什么是时间序列预测? 时间序列&#xff1a;指对某种事物发展…

下一代图片格式AVIF,赶紧用起!

介绍AVIF图片格式的特点和在Web端显示AVIF格式图片的两种方案。 1 简介 AVIF是一种基于AV1视频编码的新图像格式&#xff0c;相对于JPEG、Wep等图片格式压缩率更高&#xff0c;并且画面细节更好。AVIF通过使用更现代的压缩算法&#xff0c;在相同质量的前提下&#xff0c;AVI…

对比了10+网盘资源搜索工具,我最终选择了这款爆赞的阿里云盘、百度网盘、夸克网盘资源一站式搜索工具

盘友圈&#xff08;https://panyq.com&#xff09;是一个综合性的网盘搜索站&#xff0c;与其他网盘搜索工具相比&#xff0c;它具有多个独特的优点&#xff0c;使其成为用户们首选的平台。 首先&#xff0c;盘友圈汇集了阿里云盘、百度网盘和夸克网盘等主流网盘资源&#xff…

Git的进阶操作,在idea中部署gie

&#x1f3c5;我是默&#xff0c;一个在CSDN分享笔记的博主。&#x1f4da;&#x1f4da; ​​ &#x1f31f;在这里&#xff0c;我要推荐给大家我的专栏《git》。&#x1f3af;&#x1f3af; &#x1f680;无论你是编程小白&#xff0c;还是有一定基础的程序员&#xff0c;这…

【Linux网络】手把手实操Linux系统网络服务DHCP

目录 一、什么是dhcp 二、详解dhcp的工作原理 三、dhcp的实操 第一步&#xff1a;3台机器的防火墙和安全机制都需要关闭&#xff01;&#xff01;&#xff01; 第二步&#xff1a;Linux下载dhcp软件&#xff0c;并查看配置文件位置 第三步&#xff1a;读配置文件&#xf…

electron安装报错:Electron failed to install correctly...解决方案

问题描述&#xff1a; 按照官方文档在yarn dev时报错&#xff1a; 一般遇到Electron failed to install correctly&#xff0c;please delete node_moules/electron and try installing again这种错误时&#xff0c;就是electron本体没有下载成功 解决方案&#xff1a; 1、…

新品上市|米尔RZ/G2UL核心板上市,助力工业4.0发展!

浩瀚的芯片海洋中能被人记住的寥寥无几&#xff0c;那些在人们脑海中留下印记的往往是踩中了时代的脉搏。32位ARMv7架构的A7/A8系列处理器自发布以来&#xff0c;以ARM9处理器的价格&#xff0c;升级了工业领域绝大部分应用需求&#xff0c;成为最近十年最受欢迎的通用工业级AR…

使用反射调用私有内部类方法

使用反射调用私有内部类方法 通过反射机制调用私有内部类方法,反射机制允许在运行时检查和操作类和方法。可以使用反射机制创建内部类的实例,并调用其私有方法 🍓情况一: 注意这里的内部类是私有静态内部类 待测类如下: package jj;import java.lang.reflect.Constru…

深度学习之基于YoloV5的火灾检测系统

欢迎大家点赞、收藏、关注、评论啦 &#xff0c;由于篇幅有限&#xff0c;只展示了部分核心代码。 文章目录 一项目简介 二、功能三、系统四. 总结 一项目简介 火灾检测系统基于YoloV5的介绍 火灾检测是一项重要的安全任务&#xff0c;它旨在及时发现和报警火灾风险。基于深度…

SQL第四次上机实验

1.查询借阅了计算机类或者文学类图书的读者的借书证号 USE TSGL GO SELECT DISTINCT Reader.Lno FROM Book,Lend,Reader WHERE Book.ISBNLend.ISBN AND Lend.LnoReader.Lno AND Class 计算机类 OR Class 文学类2.查询同时借阅了计算机类和文学类图书的读者的借书证号 USE T…

分享一个JavaScript后台管理项目超实用的提示框

目录 新建js文件 设置css样式 html布局 script代码 调用方式 展示效果 新建js文件 首先我们需要新建一个js文件夹&#xff0c;将下方代码丢进去 "use strict";function _typeof(obj) { "babel/helpers - typeof"; if (typeof Symbol "f…