【C++笔试强训】第十一天 淡淡的烟草味﹌ 2024-04-20 06:13 76阅读 0赞 > **?C++笔试强训** > > -------------------- > > * **博客主页:**[一起去看日落吗][Link 1] > * **分享博主的C++刷题日常,大家一起学习** > * **`博主的能力有限,出现错误希望大家不吝赐教`** > * **分享给大家一句我很喜欢的话:夜色难免微凉,前方必有曙光** ?。 > > -------------------- > > ![在这里插入图片描述][047d8ad26e314dc7bc7aa19a6ce9ccb0.jpeg_pic_center] ? ? -------------------- ## 选择题 ## ### ?第一题 ### 关于内联函数说法错误的是() A 不是任何一个函数都可定义成内联函数 B 内联函数的函数体内不能含有复杂的结构控制语句 C 递归函数可以被用来作为内联函数 D 内联函数一般适合于只有1~5行语句的小函数 关于内联函数我们提过很多次了 A 内联函数是有要求的,所以A正确 B 内联函数不可以太复杂,B正确 C 递归不可以做内联 D 内联函数建议不要太长,C++官方文档建议1-5行 > **`这道题的答案是C`** -------------------- ### ?第二题 ### 以下不是double compare(int,int)的重载函数的是() A int compare(double,double) B double compare(double,double) C double compare(double,int) D int compare(int,int) 关于函数重载,函数名要一样,参数列表要求不一样,和返回值类型没有关系 > **`这道题答案是D`** -------------------- ### ?第三题 ### 假定有类AB,有相应的构造函数定义,能正确执行 AB a(4),b(5),c[3],*p[2]={ &a,&b}; 语句,请问执行完此语句后共调用该类的构造函数次数为\_\_\_ A 5 B 4 C 3 D 9 创建ab各调用一次,创建数组c包含3个对象调用3次,p是个指针数组,存放的是指针,所以p不会调用构造函数 > **`这道题的答案是A`** -------------------- ### ?第四题 ### 下列关于赋值运算符“=”重载的叙述中,正确的是 A 赋值运算符只能作为类的成员函数重载 B 默认的赋值运算符实现了“深层复制”功能 C 重载的赋值运算符函数有两个本类对象作为形参 D 如果己经定义了复制拷贝构造函数,就不能重载赋值运算符 如果用户在类中没有显示定义赋值运算符重载时,编译器自动生成一份——按照浅拷贝方式实现的 A 赋值运算符重载如果重载成普通的成员函数编译器会报错,编译无法通过 B 默认的赋值运算符是编译器自动生成的,按照浅拷贝实现,错误 C 赋值运算符重载只可以放一个类型,前面有一个隐藏的this,错误 D 拷贝构造和重载赋值运算符是两个函数,不冲突,错误 > **`这道题的答案是A`** -------------------- ### ?第五题 ### 下列有关静态成员函数的描述中,正确的是: A 静态数据成员(非const类型)可以在类体内初始化 B 静态数据成员不可以被类对象调用 C 静态数据成员不受private控制符作用 D 静态数据成员可以直接用类名调用 A 静态成员是所有类共享的,所以就不可以在类内初始化 B 可以通过类名+作用域的方式访问 C 静态成员如果是类的成员都要受控制符访问 D 静态数据成员可以直接用类名调用,一般更推荐类名+作用域访问 > **`这道题的答案是D`** -------------------- ### ?第六题 ### 若PAT是一个类,则程序运行时,语句“PAT(\*ad)\[3\];”调用PAT的构造函数的次数是() A 2 B 3 C 0 D 1 ad是一个数组指针,是一个指针,该指针将来只能指向PAT类型的3个连续的空间,没有创建对象,所以不会调用构造函数 > **`这道题的答案是C`** -------------------- ### ?第七题 ### 下面对析构函数的正确描述是() A 系统不能提供默认的析构函数 B 析构函数必须由用户定义 C 析构函数没有参数 D 析构函数可以设置默认参数 ![请添加图片描述][3763f50ce48f4d70af4a4cce2133333d.png] A 系统会提供默认析构 B 析构函数可以由系统提供默认的 C 析构函数没有参数,如果有参数编译器会报错,(所以析构函数不能重载) D 析构函数没有参数,无法设置默认值 > **`这道题的答案是C`** -------------------- ### ?第八题 ### 关于以下代码,哪个说法是正确的() myClass::foo(){ delete this; } .. void func(){ myClass *a = new myClass(); a->foo(); } A 它会引起栈溢出 B 都不正确 C 它不能编译 D 它会引起段错误 delete this 代表把当前对象销毁掉 func里面为a new新空间,然后用a指向foo,然后将a对象销毁掉,所以代码没有任何问题 > **`这道题的答案是B`** -------------------- ### ?第九题 ### 哪种说法是错误的()? A 构造函数可以有形参 B 析构函数可以有形参 C 构造函数无任何函数类型 D 析构函数无任何函数类型 A 构造函数可以有形参,在类中可能有多个成员变量 B 析构函数没有参数 CD 析构函数和构造函数无任何参数类型 > **`这道题的答案是B`** -------------------- ### ?第十题 ### 有如下模板定义: template <class T> T fun(T x,T y){ return x*x+y*y; } 在下列对fun的调用中,错误的是() A fun(1, 2) B fun(1.0, 2) C fun(2.0, 1.0) D fun(1, 2.0) fun在实例化时,其传递的两个参数的类型必须要一致,如果不一致的话需要显示实例化 ![请添加图片描述][e74320d592ae49ad97952c6d0f097ba3.png] > **`这道题的答案是B`** -------------------- ## 编程题 ## ### ?第一题 ### 链接:[最近的公共祖先][Link 2] ![请添加图片描述][96b88d6070ee4e0a936ff9162870b09b.png] * 题目解析 最近公共祖先表示距离两个节点最近的公共父节点,这道题考察二叉树。 * 解题思路 题目所描述的满二叉树如下: 1 / \\ 2 3 / \\ / \\ 4 5 6 7 上述树中子节点与父节点之间的关系为root = child / 2所以如果a != b,就让其中的较大数除以2, 如此循环直到a == b 即是原来两个数的最近公共祖先 比如: 2和7的最近公共祖先:7/2 = 3 —> 3/2 = 1, 2/2 = 1, 得到1为它们的公共祖先 * 代码演示: class LCA { public: int getLCA(int a, int b) { // write code here while(a != b) { if(a > b) a /= 2; else b /= 2; } return b; } }; -------------------- ### ?第二题 ### 链接:[求最大连续bit数][bit] ![请添加图片描述][25b0efee91f4487d994e8e46be3c2408.png] * 题目解析 这道题考察位运算 * 解题思路 根据位运算,获取每一位的二进制值。获取第i位的值: (n >> i) & 1。如果1连续,则计数累加,如果不连续,则从0开始计数。 * 代码演示: #include <iostream> using namespace std; int main() { int n; while (cin >> n) { int count = 0, maxcount = 0; //如果测试用例是-1时无法通过,以为右移动会补符号位 // while (n) { // if (n & 1) { // count++; // maxcount = max(count, maxcount); // } else { // count = 0; // } // n = n >> 1; // } //此时的解决方法是将1往左移,不改变n for(int i = 0;i < 32;i++) { if(n &(1 << i)) { count++; maxcount = max(count,maxcount); } else count = 0; } cout << maxcount << endl; } return 0; } -------------------- [Link 1]: https://blog.csdn.net/m0_60338933?type=blog [047d8ad26e314dc7bc7aa19a6ce9ccb0.jpeg_pic_center]: https://image.dandelioncloud.cn/pgy_files/images/2024/04/20/6e7128acc5324851a5992e5671971453.jpeg [3763f50ce48f4d70af4a4cce2133333d.png]: https://image.dandelioncloud.cn/pgy_files/images/2024/04/20/81dc42f8308a4875bc5580f9e9b77546.png [e74320d592ae49ad97952c6d0f097ba3.png]: https://image.dandelioncloud.cn/pgy_files/images/2024/04/20/341f8ecbf1914e6793e46d0ae930584a.png [Link 2]: https://www.nowcoder.com/practice/70e00e490b454006976c1fdf47f155d9?tpId=8&&tqId=11017&rp=1&ru=/activity/oj&qru=/ta/cracking-the-coding-interview/question-ranking [96b88d6070ee4e0a936ff9162870b09b.png]: https://image.dandelioncloud.cn/pgy_files/images/2024/04/20/3392c366612d41e4b9f39cad94cc197b.png [bit]: https://www.nowcoder.com/practice/4b1658fd8ffb4217bc3b7e85a38cfaf2?tpId=37&&tqId=21309&rp=1&ru=/activity/oj&qru=/ta/huawei/question-ranking [25b0efee91f4487d994e8e46be3c2408.png]: https://image.dandelioncloud.cn/pgy_files/images/2024/04/20/3ecde1736a914f85b8865021e3e7ebfe.png
还没有评论,来说两句吧...