【C++】刷题日记(day2)

简介: 每天进步一点点,我们就能遇见更好的自己,开启第二题刷题日记,一起来打卡加油!本文为大家讲解了5道C++高频选择题,2道牛客编程题。希望大家读后能够有所收获。

每天进步一点点,我们就能遇见更好的自己,开启第二题刷题日记,一起来打卡加油!

微信图片_20220620151051.jpg

我们都会在各自喜欢的事情里,变得可爱!


提示:以下是本篇文章正文内容,下面案例可供参考


一、选择题

1、下面程序段包含4个函数,其中具有隐含this指针的是()

int f1();

classT{

public:static int f2();

private:friend int f3();

protect:intf4();

;

A、f1

B、f3

C、f2

D、f4

答案:D。分析:

1、静态变量没有this指针

2、友元函数没有this指针

3、类外面的变量没有this指针

4、类里面的普通成员函数有指针

所以,f1, f2, f3都没有this指针。


2、C++中关于堆和栈的说法,哪个是错误的()

A、堆的大小仅受操作系统的限制,栈的大小一般较小

B、堆和栈都可以静态分配

C、在堆上频繁的调用new/aelete容易产生内存碎片,栈没有这个问题

D、堆和栈都可以动态分配

答案:B。分析:

栈和堆都能动态分配地址,但是堆没有静态的堆


3、关于虚函数的描述正确的是()

A、派生类必须重新定义基类的虚函数

B、派生类的虚函数与基类的虚函数具有不同的参数个数和类型

C、内联函数不能是虚函数

D、虚函数可以是一个static型的函数

答案:A。分析:派生类必须重新定义基类的虚函数,完成重写才能调用。虚函数不可以是一个static函数。


4、C++将父类的析构函数定义为虚函数,下列正确的是哪个()

A、这样做是错误的

B、释放父类指针时能正确释放子类对象

C、释放子类指针时能正确释放父类对象

D、以上全错

答案:D。分析:在释放父类指针时,如果父类指针指向了一个子类对象,那么可以调用子类的析构继而调用父类的析构,删除这个对象,防止内存泄漏问题。


5、当一个类对象的生命周期结束后,关于调用析构函数的描述正确的是:()

A.如果派生类没有定义析构函数,则只调用基类的析构函数

B.如果基类没有定义析构函数,则只调用派生类的析构函数

C.先调用派生类的析构函数,后调用基类的析构函数

D.先调用基类的析构函数,后调用派生类的析构函数

答案:C。分析:析构过程和构造相反,先调用派生类的析构函数,后调用基类的析构函数。


二、牛客编程题

1、查找组成一个偶数最接近的两个素数

image.png

image.png

解题思路:暴力破解:写一个函数判断是不是质数

代码示例:

#include<iostream>#include<algorithm>#include<string>usingnamespacestd;
boolisPrime(intn) {
if (n<=3) {
returnn>1;
    }
for (inti=2; i<n; i++) {
if (n%i==0) {
returnfalse;
        }
    }
returntrue;
}
intmain()
{
intn;
cin>>n;
if (n<=2&&n%2!=0) return0;
inta=n/2, b=n/2;
while (a<n&&b>0)
    {
if (isPrime(a) &&isPrime(b))
        {
break;
        }
a++;
b--;
    }
cout<<b<<endl<<a;
return0;
}

2、二进制插入

image.png

思路  

                     i       j        

   1024:100000000    00    

  19    :        10011    

  可以看到上面得出,只要我们用1011与1024的第j位到第i位做或运算(|)即可。    

  我们想到可以让10011左移j位就可以正常做运算了。    

  10000000000    

  00001001100    

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

  10001001100 ---->1100(十进制)

代码示例:

classBinInsert {
public:
intbinInsert(intn, intm, intj, inti) {
m<<=j;
returnn|m;
    }
};

总结

1646036764469.jpg

本文为大家讲解了5道C++高频选择题,2道牛客编程题。希望大家读后能够有所收获。








相关文章
|
算法 C语言 C++
从C语言的使用转换到C++(上篇)——刷题、竞赛篇
从C语言的使用转换到C++(上篇)——刷题、竞赛篇
277 0
|
存储 C++
【五一创作】C++刷题 【入门4】数组
【五一创作】C++刷题 【入门4】数组
131 0
|
机器学习/深度学习 存储 人工智能
【c++百日刷题计划】 ———— DAY12,奋战百天,带你熟练掌握基本算法
【c++百日刷题计划】 ———— DAY12,奋战百天,带你熟练掌握基本算法
216 0
|
6月前
|
算法 C++
【数据结构与算法】:关于时间复杂度与空间复杂度的计算(C/C++篇)——含Leetcode刷题-2
【数据结构与算法】:关于时间复杂度与空间复杂度的计算(C/C++篇)——含Leetcode刷题
|
6月前
|
算法 C++
【数据结构与算法】:关于时间复杂度与空间复杂度的计算(C/C++篇)——含Leetcode刷题-1
【数据结构与算法】:关于时间复杂度与空间复杂度的计算(C/C++篇)——含Leetcode刷题
|
7月前
|
C语言 C++
【C语言/C++】牛客网刷题训练-12
【C语言/C++】牛客网刷题训练-12
|
7月前
|
存储 自然语言处理 C++
刷题用到的非常有用的函数c++(持续更新)
刷题用到的非常有用的函数c++(持续更新)
89 1
|
存储 C语言 C++
【C/C++刷题——leetcode】查找字符串中最大的子串
【C/C++刷题——leetcode】查找字符串中最大的子串
335 0
|
机器学习/深度学习 人工智能 C++
【c++百日刷题计划】 ———— DAY16,刷题百天,养成刷题好习惯
【c++百日刷题计划】 ———— DAY16,刷题百天,养成刷题好习惯
192 0
【c++百日刷题计划】 ———— DAY16,刷题百天,养成刷题好习惯
|
存储 算法 C++
【c++百日刷题计划】 ———— DAY13,奋战百天,带你熟练掌握基本算法
【c++百日刷题计划】 ———— DAY13,奋战百天,带你熟练掌握基本算法
360 0