目录
第一题-选择题1
答案:无法编译错误
1.不能在析构函数中delete this,如果这样做,代码可以编译但是运行会崩溃
2.析构函数作用,对象销毁时,释放对象中的资源,但不是所有的对象都是从堆上new出来的
3.this指针实际上是类类型* const this,所以this指向不能被修改
第二题-二进制插入
思路:
首先将m的每一位都取出来,然后将每一位移动到n中对应的位置,需要执行m的长度次
class BinInsert {
public:
int binInsert(int n, int m, int j, int i) {
// write code here
for(int k = 0; k <= i-j; ++k)
{
n |= ((m>>k)&1)<<(k+j);
}
return n;
}
};
第三题-查找组成一个偶数最接近的两个素数
思路:
素数是指质数,一个大于1的自然数,除了1 和它自身外,不能整除其他自然数的数叫做质数。
首先取输入数据的中间值,然后从中间值开始依次判断是否为素数,如果不是那么其中一个中间值减1,另一个中间值加1.
#include<iostream>
#include<math.h>
using namespace std;
//素数判断
bool is_preme(int num)
{
for(int i = 2; i <= sqrt(num); ++i)
{
if(num%i == 0)
{
return false;
}
}
return true;
}
int main ()
{
int n;
while(cin>>n)
{
for(int i = (n/2); i > 0; --i)
{
if(is_preme(i) && is_preme(n-i))
{
cout<<i<<endl<<(n-i)<<endl;
break;
}
}
}
return 0;
}