成立网站要什么手续,在一个城市做相亲网站,长沙百度seo排名,wordpress动漫电影主题目录 一、选择题二、编程题1、另类加法2、走方格的方案数 一、选择题
1、某函数申明如下
void Func(int nVal1);有int a,下面使用正确的为#xff08;#xff09; A Func(a) B Func(a) C Func(*a) D Func((*a)) 答案#xff1a;A 2、C语言中#xff0c;类… 目录 一、选择题二、编程题1、另类加法2、走方格的方案数 一、选择题
1、某函数申明如下
void Func(int nVal1);有int a,下面使用正确的为 A Func(a) B Func(a) C Func(*a) D Func((*a)) 答案A 2、C语言中类ClassA的构造函数和析构函数的执行次数分别为
ClassA* pclassa new ClassA[5];
delete pclassa;A 5,1 B 1,1 C 5,5 D 1,5 答案A 解析 1.malloc/calloc/realloc----free 2.new ---- detele 3.new[] ---- detele 这三种申请空间的方式一定要匹配使用否则程序可能会产生内存泄露或者程序可能会崩溃 new T 1.调用operator new(size) 申请空间 ---- 内部是调用malloc循环申请 2.调用T的构造函数对申请的空间进行初始化 delete P 1.调用析构函数释放p指向对象中的资源 2.调用operator delete释放p所指向的空间 ---- 内部真正释放空间的是调用free 注意new只能申请单个元素的空间delete只能释放单个元素的空间 new T[N] 1.调用operator new申请空间 ---- 也是调用operator new(size) 申请空间 2.调用N次T的构造函数 delete[] P 1.调用N次析构函数释放p指向的N个对象 2.调用operator delete释放空间 ---- 也是调用operator delete§ 题目中使用delete pclassa;释放空间只释放了p指向的空间中的一个对象是不严谨的运行中可能会产生程序崩溃 3、 动态内存分配C语言中mallocC中的new得到的存储区属于内存中的 A 静态区 B 堆heap C 栈stack D 堆栈 E 内核内存 F 不确定 答案B 4、下列静态数据成员的特性中错误的是 A 引用静态数据成员时要在静态数据成员名前加类名和作用域符号 B 说明静态数据成员时前边要加关键字static来修饰 C 静态数据成员在类体外进行初始化 D 静态数据成员不是所有对象所共有的 答案D 解析 静态数据成员(静态成员变量)所有对象共享的并不属于具体的某个对象----在类中声明然后需要在类外单独进行定义一定不能在构造函数的初始化列表的位置初始化----在类外访问静态成员变量时对象.静态成员变量 或者 类名::静态成员变量 5、用class关键字定义的类其成员默认的访问属性为 A private B protected C public D 无定义 答案A 6、在重载一个运算符为成员函数时其参数表中没有任何参数这说明该运算符是 A 无操作数的运算符 B 二元运算符 C 前缀一元运算符 D 后缀一元运算符 答案C 解析 一元运算符指的是该元素只需要一个参数比如、- - 成员函数每个非静态的成员函数都有一个隐藏的this指针 比如Dete operator() 前置 Date operator(int) 后置 7、有如下程序
#includeiostream
using namespace std;
class MyClass {
public:MyClass(int i 0) { cout 1; }MyClass(const MyClass x) { cout 2; }MyClass operator(const MyClass x) { cout 3; return*this; }~MyClass() { cout 4; }
};
int main() {MyClass obj1(1), obj2(2), obj3(obj1);return 0;
}运行时的输出结果是 A 121,444 B 112,444 C 11,114,444 D 11,314,445 E 11,314,444 答案B 8、下面有关c静态数据成员说法正确的是 A 不能在类内初始化 B 不能被类的对象调用 C 不能受private修饰符的作用 D 可以直接用类名调用 答案D 解析 静态数据成员(静态成员变量)所有对象共享的并不属于具体的某个对象----在类中声明然后需要在类外单独进行定义一定不能在构造函数的初始化列表的位置初始化----在类外访问静态成员变量时对象.静态成员变量 或者 类名::静态成员变量 有个特殊const修饰的可以在类内初始化 class A { private: const static int a 10; static int b; }; int A::b 20; 9、在C中为了让某个类只能通过new来创建即如果直接创建对象编译器将报错应该 A 将构造函数设为私有 B 将析构函数设为私有 C 将构造函数和析构函数均设为私有 D 没有办法能做到 答案B 解析 A类假设A类的构造函数是私有的 在类外A* pa new A[];这是错误的 new原理1.申请空间 2.调用构造函数对申请的空间进行初始化 假设A类的构造函数是私有的就不能在构造函数对申请的空间进行初始化第二步就不能完成了 创建对象期间只需要申请空间operator new这个函数就已经处理了。 delete pa; delete原理1.调用A类的析构函数 2.释放空间 把析构函数设成私有的第一步就不能完成了但是我们可以给A类增加一个公有的方法void Release(A* p) { delete p; } 10、下列的模板声明中其中几个是正确的 1)template 2)templateT1,T2 3)templateclass T1,T2 4)templateclass T1,class T2 5)templatetypename T1,T2 6)templatetypename T1,typename T2 7)templateclass T1,typename T2 8)typename T1,class T2 A 2 B 3 C 4 D 5 答案B 解析template class T 、template typename T 、template class T1, class T2 这三种是正确的 其中4、6、7是正确的 二、编程题
1、另类加法
入口题目链接
题目描述
题目解析 本题的意思是自己实现加法不用现成的运算符
解题思路 本题可以通过位运算实现具体实现两个数求和其实就是求和后当前位的数据两个数求和的进位 例如 1 2 00000001 00000010 求和后当前位的数据 00000011 求和后的进位数据 没有进位则 00000000 两者相加则得到 00000011 就是3 2 2 00000010 00000010 求和后当前位的数据 00000000 1和1进位后当前为变成0了 求和后进位的数据 00000100 两个1求和后进位了 相加后得到 00000100 就是4 求和后当前位的数据简便的计算方法就是两个数进行异或 00000001 ^ 00000010 - 00000011 求和后进位的数据简便的计算方法就是两个数相与后左移一位 (00000010 00000010) 1 所以这道题使用递归更加容易理解
代码展示
class UnusualAdd {
public:int addAB(int A, int B) {if (B 0)return A;if (A 0)return B;int a A ^ B;//求和后当前位的数据int b (A B) 1;//求和后进位的数据return addAB(a, b);//递归两个数进行相加任意为0时截止}
};2、走方格的方案数
入口题目链接
题目描述
题目解析 本题为求取路径总数的题目一般可以通过递归求解对于复杂的问题可以通过动态规划求解。
解题思路 | 1 | 2 | 3 | | 4 | 5 | 6 | | 7 | 8 | 9 | 对于上面的n * m(3 * 3)的格子有两种情况 a. 如果n或者m为1则只有一行或者一列从左上角走到右下角的路径数为n m 比如 1 * 1格子可以先向下走再向右走到达右下角或者先向右走再向下走到达右下角共两条即 1 1 2对于1 * m和 n * m的情况同学们自己画一下 b. 如果n,m都大于1那么走到[n][m]格子的右下角只有两条路径 1: 从[n - 1][m]格子的右下角向下走到达 2: 从[n][m - 1]格子的右下角向右走到达 所以走到[n][m]格子的右下角的数量为[n-1][m] [n][m - 1],可以通过递归实现情况a为递归的终止条件
递归代码展示
#include iostream
using namespace std;
int pathnum(int n, int m)
{if (n 0 || m 0){return 1;}return pathnum(n - 1, m) pathnum(n, m - 1);
}int main()
{int n, m;while (cin n m){cout pathnum(n, m) endl;}
}动态规划代码展示
#include iostream
#include vector
using namespace std;
int pathnum(int n, int m)
{vectorvectorint dp(n 1, vectorint(m 1, 1));for (int i 1; i n; i){for (int j 1; j m; j){dp[i][j] dp[i - 1][j] dp[i][j - 1];}}return dp[n][m];
}int main() {int n, m;while (cin n m){cout pathnum(n, m) endl;}
}