济南建设网站的公司吗,建网站一定要备案吗,网站违规词处罚做网站的,自学app软件开发选择题 解析#xff1a;内联函数#xff08;inline#xff09;一般用于代码较少#xff0c;代码块里面没有递归且频繁调用的函数#xff0c;是一种以空间换时间#xff08;不是指内存#xff0c;而是指令变多编译出来的可执行程序会变大#xff09;的做法。内联函数在预…选择题 解析内联函数inline一般用于代码较少代码块里面没有递归且频繁调用的函数是一种以空间换时间不是指内存而是指令变多编译出来的可执行程序会变大的做法。内联函数在预编译的时候展开会用函数体替换函数调用内联函数可能会使目标文件变大但是少了调用开销增加程序运行的效率。 解析函数默认的参数可以有多个当参数为多数的时候参数默认值应该从右往左进行缺省参数可以不用设置默认值。 解析对于类的默认访问权限class默认访问权限是私有(private)的struct默认访问权限是公有的(public) 类定义有2种方式1.可以将声明和成员函数的定义全部放在类中2.类中只放成员变量和成员函数的声明成员函数的定义可以类外其他.cpp文件中但是要注意成员函数名前要添加类名::。 成员可以声明为私有的也可以声明为公共的通常建议将成员变量设置为private成员函数设置为public。 解析调用构造函数时候传参为aa 4 ,bb 5a aa--后置--是先使用再--所以a 4b a * bb所以b 20。下面为该类的实现其中类中的成员为private所以只能在类里面进行访问。 解析这道题是考察构造函数。无参的构造函数、全缺省的构造函数及编译器自动生成的构造函数都被称为默认构造函数。 A 构造函数是没有返回值的不可以声明返回类型 B 一般情况下构造函数的权限都是public因为在类外创建对象时编译器要调用构造函数但也有特殊情况构造函数可以用private进行修饰但是修饰之后就不会在外部进行调用单例模式一个类只能创建一个对象这时候会将构造函数设置为private所以错误 C 构造函数必须与类名相同正确 D 构造函数也是个函数可以带参数。 解析必须用初始化列表初始化的是自定义类型const修饰的类型引用类型。所以b,c需要用初始化列表进行初始化。静态变量虽然有cosnt修饰但是也是静态变量静态变量必须在全局进行初始化。 如果将运算符重载成类的成员函数形参个数要比该运算符操作数个数少1因为成员函数含有隐藏的this指针 A 正确是普通整形之间的加法 B中左操作数是 BigNumber类型可以调用重载运算符相当于b1.operator(3)可以将3类型转换成BigNumber类正确 C 中相当于b1.operator(b2)this指针代表左操作数正确 D 3不是BigNumber类型的对象不能调用类中的函数更不能够代表this指针所以错误。可以写成类的友元函数方便这样使用。 解析友元函数可以让本类和友元类对象调用友元函数和类的成员函数都可以访问类的私有成员变量或者是成员函数类的成员函数是属于类的调用的时候是通过指针this调用的对于友元函数是没有this指针的友元函数打破了类访问限定符的限制可以访问私有成员变量或者成员函数。所以D选项错误。 解析变量p是在栈上创建的它是由操作系统分配的new和malloc的功能类似new出来的东西在堆区是用户进行申请的。 解析类模板实例化之后就会变成一个具体的类。 编程题
1.Fibonacci数列 解析简单dp问题。我们先通过迭代找到距离N最相近的两个斐波那契数然后通过比较计算得到哪个更近。注意在迭代的时候要先进行交换再计算third的值。 #include iostream
using namespace std;int main() {int N 0;cin N;int first 0;int second 1;int third 1;//当N为0时要单独进行计算if(N 0){cout 0;return 0;}while(third N){ //一定要先进行交换再计算thirdfirst second;second third;third first second;}int count1 third - N;int count2 N - second;int min (count1 count2) ? count1:count2;cout min;return 0;
}答案解析本题是对于Fibonacci数列的一个考察Fibonacci数列的性质是第一项和第二项都为1后面的项形成递归F(n) F(n - 1) F(n - 2)。 【解题思路】本题可以通过先找到距离N最近的两个Fibonacci数这两个数分别取自距离N的最近的左边一个数L和右边一个数R然后通过min(N - L, R - N)找到最小步数。 #include iostream
using namespace std;
int main(){int N, f, l 0,r 0,f0 0,f1 1;cin N;while(1){f f0 f1;f0 f1;f1 f;//找到比N小且距离N最近的数求出距离if(f N)l N-f;else{//找到比N大且距离N最近的数求出距离r f - N;break;}}//取最小距离cout min(l,r) endl;return 0;
}2.合法括号序列判断 解析本题利用栈操作比较简单。首先检查一下字符串中是否有其他的字符然后将字符为(的入栈遇见)出栈确保都是成对也要考虑出栈的时候栈为空栈为空说明栈里面没有元素却遇见了)此时已经说明不成立了直接返回false。当循环结束判断栈是否为空不为空说明不成立返回false为空说明成立返回true。 class Parenthesis {
public:bool chkParenthesis(string A, int n) {// write code herestackchar s1;for(int i 0; i n; i){//判断是否有其他的字符if(A[i] ! ( A[i] ! ))return false;//当为(的时候进栈if(A[i] ()s1.push(A[i]);//当为)的时候出栈且在出栈的时候要判断栈是否为空if(A[i] )){//如果栈为空直接返回falseif(s1.empty())return false;s1.pop();}}//判断栈是否为空如果不为空则返回false如果为空返回trueif(s1.empty())return true;elsereturn false;}
};答案解析本题考查的是对栈的应用 【解题思路】 用栈结构实现栈中存放左括号当遇到右括号之后检查栈中是否有左括号如果有则出栈如果没有则说明不匹配。 class Parenthesis {
public:bool chkParenthesis(string A, int n) {// write code herestackchar 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;}
};