wordpress优化版模板,整站优化cms,杭州百度推广代理公司哪家好,旅游网站建设调研目录 一、选择题 二、算法题 1.Fibonacci数列 2.合法括号序列判断 一、选择题
1、 解析#xff1a;内联函数是一种可以提高函数执行效率的方法#xff0c;它的原理是编译时在函数调用点直接展开函数体的代码#xff0c;从而避免了函数调用的开销。
但是#xff0c;内联函… 目录 一、选择题 二、算法题 1.Fibonacci数列 2.合法括号序列判断 一、选择题
1、 解析内联函数是一种可以提高函数执行效率的方法它的原理是编译时在函数调用点直接展开函数体的代码从而避免了函数调用的开销。
但是内联函数也有一些限制和缺点比如
内联函数不能包含复杂的结构控制语句例如循环语句和 switch 语句否则会导致代码膨胀和效率降低。内联函数不能是直接递归函数即自己内部还调用自己的函数否则会造成无限循环或栈溢出。内联函数的定义必须出现在内联函数第一次被调用之前否则编译器无法展开函数体。内联函数只是对编译器的一个建议编译器可以根据函数的复杂度和调用频率来决定是否真正进行内联。
因此适宜采用内联函数的情况是函数代码少、频繁调用并且没有复杂的流程控制和递归调用。这样可以最大程度地利用内联函数的优势提高程序的运行速度。答案选C。 2、 解析缺省参数(默认参数):在声明和定义函数时可以给函数的参数带上一个默认值;在调用函数时如果用户没有传递实参则使用定义时所给的默认值如果用户传递了实参就使用用户传递的实参。全缺省参数:每个参数都有默认值半缺省参数:部分参数具有默认值并且默认值必须从右往左依次给出例如
void f(int a, int b 20, int c 10)编译成功 void f(int a 10, int b, int c 20)编译失败。答案为D。 3、 解析类定义2种方式: 1、可以将声明和成员函数的定义全部放在类中 2、类中只放成员变量和成员函数的声明成员函数的定义可以放在.cpp文件中定义注意:成员函数名前必须添加类名 class:默认访问权限privatestruct:默认的访问权限public 建议:将成员变量设置为private将成员函数设置为public。答案为A。 4、 解析构造函数的特点有以下几点
构造函数的名称必须与类名相同区分大小写构造函数没有返回值也不能用void修饰构造函数可以用任何访问修饰符public、protected和private修饰构造函数不能用static、final、abstract和synchronized等关键字修饰构造函数不能被覆写override构造函数可以被重载overload以参数的个数、类型及顺序区分重载意味着一个类里可以有多个构造函数构造函数1可以调用构造函数2完成对象初始化通过this关键字this参数1参数2…实现答案为C。 5、 解析一般来说使用初始化列表比在构造函数内部赋值更高效因为初始化列表可以直接调用成员变量的构造函数而不需要先调用默认构造函数再进行赋值。而且有些情况下必须使用初始化 1常量成员因为常量只能初始化不能赋值所以必须放在初始化列表里面 2引用类型引用必须在定义的时候初始化并且不能重新赋值所以也要写在初始化列表里面 3没有默认构造函数的类类型因为使用初始化列表可以不必调用默认构造函数来初始化而是直接调用拷贝构造函数或其他合适的构造函数初始化。答案选B。 6、 解析如果将运算符符重载成类的成员函数形参个数要比该运算符需要的参数个数少1因为成员函数具有隐藏的this指针。如果类中具有单个参数的构造函数该构造函数具有类型转换的作用对于B选项编译器在编译代码节点会调用单参构造函数将3转换为BigNumber的对象 但是D选项第一个参数不是对象没有this指针所以错误
7、 解析友元函数是C中的一种特殊函数它具有访问类中私有成员的权限即使该函数不是类的成员函数。友元函数可以在类内部声明为友元或在类外部声明为友元。 D是错误的友元函数是有关键字friend修饰但是调用的时候不是通过指针this调用的因为友元函数不属于任何类没有this指针。 二、算法题
1.Fibonacci数列 解析找到两个斐波那契数使得F[i]nfF[i1]然后计算n到两个数之间的距离。
代码
#include iostream
using namespace std;int main() {int n;while(cinn){int f00,f11,f21;int step0;while(nf2){f0f1;f1f2;f2f1f0;}step(f2-n)(n-f1)?(f2-n):(n-f1);coutstep;}
} 2.合法括号序列判断 解析本题考察对栈的应用。用栈结构实现栈中存放左括号当遇到右括号之后检查栈中是否有左括号如果有则出栈如果没有则说明不匹配。当把字符串遍历完全之后检查栈是否为空为空则说明是合法括号序列。
代码
class Parenthesis {public:bool chkParenthesis(string A, int n) {stackchar sc;for (auto ele : A) {switch (ele) {case (:sc.push(ele);break;case ): {if (sc.empty() || sc.top() ! ()return false;elsesc.pop();}break;default:return false;}}return true;}
};