🌈欢迎来到笔试强训专栏
- (꒪ꇴ꒪(꒪ꇴ꒪ )🐣,我是Scort
- 目前状态:大三非科班啃C++中
- 🌍博客主页:张小姐的猫~江湖背景
- 快上车🚘,握好方向盘跟我有一起打天下嘞!
- 送给自己的一句鸡汤🤔:
- 🔥真正的大师永远怀着一颗学徒的心
- 作者水平很有限,如果发现错误,可在评论区指正,感谢🙏
- 🎉🎉欢迎持续关注!
在()情况下适宜采用 inline 定义内联函数
A 函数体含有循环语句
B 函数体含有递归语句
C 函数代码少、频繁调用
D 函数代码多,不常调用
复习一下内联函数
inline
是一个建议性的关键字 —— 具体情况看编译器,由编译器决定答案选C
在 C++ 语言中,对函数参数默认值描述正确的是()
A 函数带默认值的参数只能有一个
B 一个函数的参数若有多个,则参数默认值的设定可以不连续
C 函数参数必须设定默认值
D 在设定了参数的默认值后,该参数后面定义的所有参数都必须设定默认值
void f(int a, int b = 20, int c = 10)
—— 编译成功答案选D
下面关于类定义的说法中,正确的是:
A 类定义中包括数据成员和函数成员的声明
B 类成员的缺省访问权限是保护的
C 数据成员必须被声明为私有的
D 成员函数只能在类体外进行定义
类的两种定义:
类名::
类成员的缺省访问权限是私有的(private),数据成员被声明成私有是错误的;成员函数也可以在类中定义
答案选A
假定一个类的构造函数为A(int aa,int bb){a=aa–;b=a*bb;},则执行A x(4,5);语句后,x.a和x.b的值分别为()
A 20和5
B 3和15
C 5和4
D 4和20
答案选D
下列关于构造函数的描述正确的是?
A 构造函数可以声明返回类型
B 构造函数不可以用private修饰
C 构造函数必须与类名相同
D 构造函数不能带参数
复习一下:
public
,因此在类外创建对象时,编译器要调用构造函数(特殊情况:单例模式 —— 一个类只能创建一个对象,将构造函数设置为private)答案选C
有一个类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
const
修饰的成员变量答案选B
C++ 中,有如下类模板定义:
template class BigNumber{long n;
public:BigNumber(T i) :n(i) {}BigNumber operator+(BigNumber b) {return BigNumber(n + b.n);}
};
已知 b1, b2 是 BigNumber 的两个对象,则下列表达式中错误的是()
A 3+3
B b1+3
C b1+b2
D 3+b1
A:内置类型直接相加是可以的;
B:b1+3;+是对两个BigNumber的对象相加的。
如果类中具有单个参数的构造函数,该构造函数具有类型转换的作用
b1+3
;编译器在编译代码节点,会调用单参构造函数将3转换成BigNumber的对象
D:第一个参数一定要是BigNumber的对象,因为是this
答案选D
下面有关友元函数与成员函数的区别,描述错误的是?
A 友元函数可以让本类和友元类对象调用
B 友元函数和类的成员函数都可以访问类的私有成员变量或者是成员函数
C 类的成员函数是属于类的,调用的时候是通过指针this调用的
D 友元函数是有关键字friend修饰,调用的时候也是通过指针this调用的
答案选D
对于以下代码,说法正确的是()
char * p = new char[100];
A p 和 new出来的内存都在栈上
B p 和 new出来的内存都在堆上
C p在栈上 new出来的在堆上
D p在堆上 new出来的在栈上
指针p
在全局作用域中在数据段中,若在函数体中则是在栈上答案选C
类模板的使用实际上是类模板实例化成一个具体的__________。
A 类
B 函数
C 模板类
D 对象
这个当然是实例化成具体的类!
答案选A
题目地址: 传送
匹配不成功
解题思路:
class Parenthesis {
public:bool chkParenthesis(string A, int n) {stack arr;for(auto ch : A){if(ch == '('){arr.push(ch);}else if(ch == ')'){if(arr.empty()){return false;}arr.pop();}else{return false;//不是括号字符返回false}}return arr.empty();}
};
题目地址:传送
题目思路:
min(N - left , right - N)
#include
using namespace std;int main() {int a = 0, b = 1, c;int N, left=0, right=0;cin >> N;while(1){c = a + b;a = b;b = c;//通过不断循环找到了左边最小的fib数if(c < N){left = c;//左边的fib数}else{right = c;//右边的fib数break;}}cout << min(N - left , right - N) <