【C++习题集】-- day6(习题)

news2025/1/16 18:05:54

目录

选择题

编程题

36932-求最小公倍数⭐

【解题思路】


选择题

1. 执行下面语句后的输出为 ( )
int I=1;
if(I<=0)
    printf("****\n") ;
else
    printf("%%%%\n");
A、%%
B、****
C、有语法错,不能正确执行
D、%%%%

正确答案:A


解析:

转换说明符
转换说明符描述
%d有符号十进制整数
%i有符号十进制整数
%u无符号十进制整数
%o八进制整数
%x十六进制整数(小写字母)
%X十六进制整数(大写字母)
%f浮点数
%e用科学计数法表示的浮点数(小写字母e)
%E用科学计数法表示的浮点数(大写字母E)
%g根据数值的大小自动选择%f%e格式
%G根据数值的大小自动选择%f%E格式
%c单个字符
%s字符串
%p指针地址
%n将已打印字符数保存在整型指针中
%%打印一个百分号

---------------------------------------------- 

2. 数组定义为”int a[4][5];”,引用"*(a+1)+2"表示 ( ) (从第0行开始)
A、a[1][0]+2
B、a数组第1行第2列元素的地址
C、a[0][1]+2
D、a数组第1行第2列元素的值

正确答案:B


解析:

        二维数组中的每一个元素array[i],都是一个一维数组。并且都是该对应的一维数组的数组名,即首元素地址。

---------------------------------------------- 
C语言的转义字符:
转义字符
转义字符
释义
\?
在书写连续多个问号时使用,防止他们被解析成三字母词
\'
用于表示字符常量'
\“
用于表示一个字符串内部的双引号
\\
用于表示一个反斜杠,防止它被解释为一个转义序列符
\a
警告字符,蜂鸣
\b
退格符
\f
进纸符
\n
换行
\r
回车
\t
水平制表符
\v
垂直制表符
\ddd
ddd表示1~3个八进制的数字。 如: \130 X
\xdd
dd表示2个十六进制数字。 如: \x30 0
---------------------------------------------- 
3. 有一个类A,其数据成员如下:
class A {
……
private:
    int a;
    public:
    const int b;
    float* &c;
    static const char* d;
    static double* e;
};

则构造函数中,成员变量一定要通过初始化列表来初始化的是:______。

A、a b c
B、b c
C、b c d e
D、b c d
E、b
F、c

正确答案:B


解析:

  • 初始化列表的位置才是真正的初始化,构造函数题中只是赋值
  • 初始化列表中:只能对类中非静态的成员变量进行初始化(因为静态的成员变量是所有成员共享的 - 类外只初始化一次即可)

必须在初始化列表中初始化:(说白了就是编译器无法为我们初始化)

  1. const修饰的成员变量
  2. 引用类型的成员变量
  3. 类类型对象,该类没有默认的构造函数

虽然:static const char* d;里具有const但是需要注意其是static修饰的,是所有成员共享,所以必须在类外初始化。

加深理解:
        编译器无法为我们初始化,那我们就可以使用C++11的补丁实现,不用我们实际写初始化列表让编译器帮我们做,但是其作为真正的初始化,性质还是不变的。

class A
{
public:

private:
    const int a = 0;
    const int& pa = a;
};

int main()
{
    A d;
    return 0;
}

---------------------------------------------- 

4. 下面有关友元函数与成员函数的区别,描述错误的是?

A、友元函数可以让本类和友元类对象调用
B、友元函数和类的成员函数都可以访问类的私有成员变量或者是成员函数
C、类的成员函数是属于类的,调用的时候是通过指针this调用的
D、友元函数是有关键字friend修饰,调用的时候也是通过指针this调用的

正确答案:D


解析:

  成员函数:

  • 具有隐藏的this指针
  • 受访问想限定符的约束
  • 需要通过对象来调用

  友元函数:不是成员函数 - 但是友元函数中可以访问类中私有的成员

D、不是成员函数不能以this(对象)调用

---------------------------------------------- 
5. 类模板的使用实际上是类模板实例化成一个具体的__________。
A、类
B、函数
C、模板类
D、对象

正确答案:A


解析:

        用不同类型的参数使用模板时,称为模板的实例化

        实例化就是实例化成为不同的对象
        如一个使用了泛型模板编程的类SeqList,该SeqList并不是类型,所以是不能将SeqList用于创建对象,其仅仅是一个类模板的名字,唯有如SeqList<int>才是类型,然而这个时候就是实例化的时候,所以使用模板时,称为模板的实例化。

---------------------------------------------- 
6. 以下代码共调用多少次拷贝构造函数:
Widget f(Widget u)
{
    Widget v(u);
    Widget w=v;
    return w;
}

main()
{
    Widget x;
    Widget y=f(f(x));
}
A、1
B、3
C、5
D、7

正确答案:D


解析:

概念:是一个特殊的构造函数,是单参的参数类型必须是类类型&,一般情况下会使用const来进行修饰。

场景:当用已经存在的对象构造新对象时,编译器会自动调用拷贝构造函数。

  • 场景一
A a1;
A a2(a1); // 拷贝构造函数
  • 场景二:
void Func(A a)  // 传参会拷贝构造函数
{}
  • 场景三
A Func()
{
    A a;
    return a; // 拷贝构造函数返回一个临时对象
}

Note:

        a1 = a2调用的是赋值运算符重载,因为拷贝构造函数时用已经存在的对象构造一个新对象才会调用。而Widget w=v;调用的是拷贝构造函数,不是赋值运算符重载,因为构造了一个新的对象。

题解: 经过上述推算,我们可以发现是9次,但是在编译器中类型返回的时候,当类类型作为返回值可能会优化。

编译器优化:

  • 第一次优化是:

        第一次调用f(x)之后返回值再调用f函数,这个时候编译器会优化位直接将第一次调用的临时对象作为第二次调用的参数(临时对象就是u作为使用)。

  • 第二次优化是:

        第二次调用的临时对象就作为y。

        可以理解为直接少掉了临时对象,是直接进行return w;一次拷贝构造给参数Widget u / 变量Widget y。

---------------------------------------------- 
7. 如果友元函数重载一个运算符时,其参数表中没有任何参数则说明该运算符是()
A 、一元运算符
B、二元运算符
C、选项A)和选项B)都可能
D、重载错误

正确答案:D


解析:

        当用户定义了一个类之后,然后想要通过该类的对象直接使用某种运算符 -- 编译器是不支持的(因为:类对象中是很有可能具有多个成员,在用该类的对应进行相应的运算符操作时,该如何处理,编译器时不知道的)

---------------------------------------------- 
悬挂引用:

        悬挂引用(Dangling Reference)是指在程序中使用了一个已经被释放或无效的引用。当一个引用指向一个已经被销毁的对象或者超出其作用域的对象时,就会出现悬挂引用。

悬挂引用通常发生在以下几种情况下:

  1. 引用指向了一个已经被删除的对象。比如,在函数中返回了一个局部变量的引用,当函数执行完毕后,该局部变量就会被销毁,引用就会成为悬挂引用。
  2. 引用指向了一个已经释放的内存。比如,使用delete释放了一个指针所指向的内存块,但之后仍然使用了指向该内存块的引用,这就会导致悬挂引用。

        悬挂引用的问题在于,使用悬挂引用会导致未定义的行为。因为引用指向的对象已经不存在或无效,所以对悬挂引用的操作可能会访问到无效的内存,导致程序崩溃、数据损坏或其他不可预料的结果。

        为了避免悬挂引用的问题,需要确保引用指向的对象在引用使用期间是有效的。可以通过合理的生命周期管理和避免返回局部对象的引用等方式来防止悬挂引用的出现。

实际场景:有关C++悬空引用的误区 - azureology - 博客园 (cnblogs.com)

---------------------------------------------- 
8、在堆排序的过程中,建立一个堆的时间复杂度是 ( )
A、O(n)
B、O(logn)
C、O(nlogn)
D、O(n2)

正确答案:A


解析:

  • 建堆时间复杂度:O(n)

  • 调整堆、插入、删除:O(log2n)
  • 堆排序平均时间复杂度:O(nlog2n)
  • 空间复杂度:O(1)
---------------------------------------------- 
9、C++语言中,类ClassA的构造函数和析构函数的执行次数分别为()
ClassA *pclassa = new ClassA[5];
delete pclassa;
A、5, 1
B、1, 1
C、5, 5
D、1, 5

正确答案:A


解析:

  堆上申请空间并释放空间的方式:

new Data:

  1. 调用operator new(size)申请空间 - 内部封装的是malloc
  2. 调用Data的构造函数对申请的空间初始化

delete p:

  1. 调用析构函数释放p指向对象中的资源
  2. 调用operator delete释放p所指向的空间 - 内部封装的是free

Note:new只能申请单个元素空间,delete只能释放单个元素空间

new Data[N]:

  1. 调用operator new[N](size)申请空间 - 内部封装的是operator new(size)
  2. 调用Data的构造函数N次对申请的空间初始化

delete p:

  1. 调用析构函数N次释放p指向对象中的资源
  2. 调用operator delete[]释放p所指向的空间 - 内部封装的是operator delete

        正是如此,所以上述程序会产生内存泄漏 / 程序崩溃。

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

正确答案:D


解析:

静态数据成员:

        所有成员共享,并不属于具体的某个对象 - 在类中声明,然后需要在类外单独进行定义,一定不能在构造函数初始化链表的位置初始化。

类外访问时:

  • 对象.静态成员变量
  • 类名::静态成员变量

Note:静态成员变量是有一个特殊的。

class A
{
private:
    const static int a = 0;
    // static const int a = 0;
};

        是可以的!所以A是对的,这个是需要注意的。

class A
{
private:
    static int a = 0;
};

        就是错误的!

---------------------------------------------- 

编程题

36932-求最小公倍数⭐

求最小公倍数_牛客题霸_牛客网 (nowcoder.com)

【解题思路】

        最小公倍数 = 两数之积除以最大公约数,这里使用碾转相除法进行最大公约数的求解:即a与b的最大公约数可以转化为a、b之间的余数为两者之间最小的数之间的公约数。所以对于输入的两个数进行连续求余,直到余数为0,求余的分母即为结果。
#include<iostream>
using namespace std;
int gcd(int a, int b)
{
    int r;
    while(r = a%b)
    {
        a = b;
        b = r;
    }
    return b;
}

int main()
{
    int a,b;
    while(cin >> a >> b)
    {
        cout << a*b/gcd(a,b) <<endl;
    }
    return 0;
}

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

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

相关文章

Django基础2——URL路由系统

文章目录 一、基本了解二、url路由分发三、正则匹配四、压缩归档超链接优化一&#xff1a;使用分组名称功能优化二&#xff1a;使用url名称功能4.1 使用功能之前效果展示4.2 使用功能之后效果展示 一、基本了解 概念&#xff1a; 路由系统就是URL路径和视图函数的一个对应关系&…

【数据分析】波士顿矩阵

波士顿矩阵是一种用于分析市场定位和企业发展战略的管理工具。由美国波士顿咨询集团&#xff08;Boston Consulting Group&#xff09;于1970年提出&#xff0c;并以该集团命名。 波士顿矩阵主要基于产品生命周期和市场份额两个维度&#xff0c;将企业的产品或业务分为四个象限…

工具--录屏软件

记录下录屏软件 ScreenToGif 官网 &#xff1a;https://www.screentogif.com/downloads 我下载的是 Installer 版本。 录屏&#xff0c;默认输出为 gif 。录制的 gif 清晰&#xff0c;且容量低。需要录gif的话主推&#xff01; 录制后输出为 mp4 的话提示要下载 FFmpeg &a…

基于 Alpine 环境源码构建 alibaba-tengine(阿里巴巴)的 Docker 镜像

About Alpine&#xff08;简介&#xff09; Alpine Linux 是一款极其轻量级的 Linux 发行版&#xff0c;基于 busybox&#xff0c;多被当做 Docker 镜像的底包&#xff08;基础镜像&#xff09;&#xff0c;在使用容器时或多或少都会接触到此系统&#xff0c;本篇文章我们以该镜…

ubuntu pdf阅读器okular

sudo apt-get install okular安装完毕后&#xff0c;使用如下命令浏览pdf文档 okular xxx.pdf

基于FPGA的FIR低通滤波器实现(附工程源码),matlab+vivado19.2+simulation

基于FPGA的FIR低通滤波器实现(附工程源码) 文章目录 基于FPGA的FIR低通滤波器实现(附工程源码)前言一、matlab设计FIR滤波器&#xff0c;生成正弦波1.设计FIR滤波器1.生成正弦波.coe 二、vivado1.fir滤波器IP核2.正弦波生成IP核3.时钟IP核设置4.顶层文件/测试文件代码 三.simul…

数据通信——RIP协议

一&#xff0c;实验背景 你们公司又订购了一批设备&#xff0c;你以为还要为新员工设计静态路由&#xff0c;结果领导说&#xff0c;不是有动态路由吗&#xff1f;用动态路由&#xff0c;就用什么R的那个。“垃圾RIP&#xff0c;用RIP还不如静态&#xff0c;RIP缺点太多&#x…

⛳ Docker 安装 MySQL

&#x1f38d;目录 ⛳ Docker 安装 MySQL&#x1f69c; 一、搜索 mysql , 查看版本&#x1f3a8; 二、拉取mysql镜像&#x1f463; 三、建立容器的挂载文件&#x1f9f0; 四、创建mysql配置文件&#xff0c;my.conf&#x1f3ed; 五、根据镜像产生容器&#x1f381; 六、远程连…

【Windows 常用工具系列 10 -- linux ssh登录脚本输入密码】

文章目录 脚本输入SSH登录密码scp 脚本免密传输 脚本输入SSH登录密码 sshpass 是一个用于运行时非交互式ssh密码提供的工具&#xff0c;它允许你直接在命令行中为ssh命令提供密码。这就意味着你可以在脚本中使用ssh命令&#xff0c;而不需要用户交互地输入密码。 一般来说&am…

wireshark数据包分析

一、实验目的&#xff1a; 掌握wireshark进行基本的协议分析&#xff0c;掌握TCP的三次握手的过程 二、预备知识&#xff1a; TCP/IP协议的三次握手的设计 三、实验过程&#xff1a; 1.关于wireshark这个软件的基本认识&#xff1a; 首先&#xff0c;每次capure的时候&#…

Python Opencv实践 - 直方图显示

import cv2 as cv import numpy as np import matplotlib.pyplot as pltimg cv.imread("../SampleImages/pomeranian.png", cv.IMREAD_COLOR) print(img.shape)#图像直方图计算 #cv.calcHist(images, channels, mask, histSize, ranges, hist, accumulate) #images&…

大语言模型微调实践——LoRA 微调细节

1. 引言 近年来人工智能领域不断进步&#xff0c;大语言模型的崛起引领了自然语言处理的革命。这些参数量巨大的预训练模型&#xff0c;凭借其在大规模数据上学习到的丰富语言表示&#xff0c;为我们带来了前所未有的文本理解和生成能力。然而&#xff0c;要使这些通用模型在特…

[保研/考研机试] KY196 复数集合 北京邮电大学复试上机题 C++实现

题目链接&#xff1a; 复数集合_牛客题霸_牛客网 一个复数&#xff08;xiy&#xff09;集合&#xff0c;两种操作作用在该集合上&#xff1a; 1、Pop 表示读出集。题目来自【牛客题霸】https://www.nowcoder.com/share/jump/437195121692724009060 描述 一个复数&#xff08;…

腾讯云V265/TXAV1直播场景下的编码优化和应用

// 编者按&#xff1a;随着视频直播不断向着超高清、低延时、高码率的方向发展&#xff0c; Apple Vision的出现又进一步拓展了对3D, 8K 120FPS的视频编码需求&#xff0c;视频的编码优化也变得越来越具有挑战性。LiveVideoStackCon 2023上海站邀请到腾讯云的姜骜杰老师分享腾…

LAMP 架构及Discuz论坛与Wordpress博客搭建

目录 1 LAMP 配置与应用 1.1动态资源与语言 1.2 LAMP 架构的组成 1.2.1 主要功能 2 编译安装Apache http 服务 2.1 环境准备 2.1.1 关闭防火墙及selinux服务 2.1.2 安装依赖环境 2.2 安装软件包 2.2.1 解压软件包 2.2.2 移动apr包 apr-util包到安装目录中&#xff0c;并…

docker第二次作业

1、使用mysql:5.6和 owncloud 镜像&#xff0c;构建一个个人网盘。 拉取镜像 docker pull mysql:5.6 docker pull ow ncloud 运行镜像生成容器 [rootharbor ~]# docker run -d --name mydb1 --env MYSQL_ROOT_PASSWORD123456 mysql:5.6 [rootharbor ~]# docker run -d --name…

操作员管理 微人事 项目 SpringBooot + Vue 前后端分离

操作员管理接口设计 HrController RestController RequestMapping("/system/hr") public class HrController {AutowiredHrService hrService;GetMapping("/")public List<Hr> getAllHr(){return hrService.getAllHr();}}HrService public List<…

解决:Appium Inspector刷新页面一直加载转圈

目录 问题&#xff1a;Appium Inspector刷新页面一直加载转圈 解决办法&#xff1a; 1.进入设置页面-电池-后台耗电管理 2.找到下面3个应用&#xff0c;修改为允许后台高耗电 问题&#xff1a;Appium Inspector刷新页面一直加载转圈 1、手机进行操作后&#xff0c;Appium I…

飞腾架构麒麟V10桌面系统Qt应用程序打包

目录 前言1. linuxdeployqt1.1 编译安装 linuxdeployqt1.2 编译安装 patchelf1.3 可选安装 appimagetool 2.设置环境变量3. 打包4.测试5.添加启动图标5.1 设置桌面图标和开始菜单图标5.2设置任务栏图标 6.总结 前言 本文记录了在飞腾架构麒麟V10桌面系统中打包Qt应用程序及部署…

前端需要理解的CSS知识

CSS&#xff08;层叠样式表&#xff0c;Cascading Style Sheets&#xff09;不是编程语言&#xff0c;而是用来描述 HTML 或 XML&#xff08;包括如 SVG、MathML 或 XHTML 之类的 XML 分支语言&#xff09;文档的表现与展示效果的样式表语言。CSS3是CSS的最新标准&#xff0c;是…