一、单项选择题
1、print()函数是一个类的常成员函数,它无返回值,下列表示中正确的是()
A、const void print();
B、void const print();
C、void print() const;
D、void print(const);
2、下列对于宏的描述,不正确的是:()
A、宏会带来性能的缺失
B、宏不进行类型检查
C、宏可以做到函数无法做到的功能
D、编译时宏的处理早于函数
3、四个平面最多把三维空间分成几个部分?()
A、15
B、14
C、13
D、16
4、下面3段程序代码的效果一样吗()
int b; (1)const int *a = &b; (2)int const *a = &b; (3)int *const a = &b;
A、(2)=(3)
B、(1)=(3)
C、(1)=(2)
D、都不一样
E、都一样
5、师徒四人西天取经,途中必需跨过一座桥,四个人从桥的同一端出发,你得帮助他们到达另一端,天色很暗而他们只有一支手电筒,一次同时最多可以有两个人一起经过桥。而过桥的时候必须持有手电筒,所以就得有人把手电筒带来带去,来回桥两端。手电筒不能用丢的方式来传递,四个人的步行速度各不同,若两人同行则以较慢者的速度为准,大师兄需花1分钟过桥,二师兄需花2分钟过桥,三师兄需花5分钟过桥,师傅需花10分钟过桥。请问他们最短在多少分钟内过桥?()
A、18
B、17
C、19
D、16
6、查看下面两段代码()
(1) class classA {...}; class classB { public: classB(classA a) {mA = a;} private: classA mA; }; (2) class classA {...}; class classB { public: classB(classA a): mA(a) {} private: classA mA; };
A、两种方法产生的结果和效率完全相同
B、通常情况下(2)的效率更高
C、通常情况下(1)的效率更高
D、两种调用方法会产生不同的结果
7、对于int* pa[5];的描述,以下哪个选项是正确的()
A、pa是一个具有5个元素的指针数组,每个元素是一个int类型的指针;
B、pa是一个指向数组的指针,所指向的数组是5个int类型的元素;
C、pa[5]表示某个数的第5个元素的值;
D、pa是一个指向某个数组中第5个元素的指针,该元素是int类型的变量
8、C++中32位单精度浮点数能表示的十进制有效数字是多少位?()
A、9
B、6
C、7
D、8
9、下面哪一种算法不是图像空间的消隐算法()
A、画家算法
B、Z-buffer算法
C、可见面光线追踪算法
D、区间扫描线算法
10、short a[10] = {0};sizeof(a)返回:()
A、2
B、20
C、4
D、10
11、使用下列二位图形变换矩阵将产生的变换结果为()
A、以Y轴为对称轴的反射图形
B、以Y=X为对称轴的反射图形
C、绕原点旋转180度
D、以X轴为对称轴的反射图形
12、对于protected成员,下面说法错误的是:()
A、基类可以访问从所有派生类造型(cast)成基类对象的protected成员
B、从派生类继承的子类里可以访问基类的protected成员
C、派生类可以定义一个同名的非protected成员
D、派生类可以访问基类对象的protected成员
13、当一个类对象的生命周期结束后,关于调用析构函数的描述正确的是:()
A、如果派生类没有定义析构函数,则只调用基类的析构函数
B、如果基类没有定义析构函数,则只调用派生类的析构函数
C、先调用派生类的析构函数,后调用基类的析构函数
D、先调用基类的析构函数,后调用派生类的析构函数
14、以下哪种STL容器中的对象是连续存储的:()
A、list
B、vector
C、map
D、set
15、一个栈的入栈序列是A、B、C、D、E,则栈的不可能输出序列是:()
A、DCEAB
B、ABCDE
C、EDCBA
D、DECBA
16、有四个整数a、b、c、d,且c > d,则“a > b”是“a - c > b - d”的:()
A、必要不充分条件
B、充分不必要条件
C、充要条件
D、既不充分也不必要条件
17、下列情况中,不会调用拷贝构造函数的是()
A、用一个对象去初始化同一个类的另一个新对象时
B、将类的一个对象赋值给该类的另一个对象时
C、函数的形参对象,调用函数进行形参和实参结合时
D、函数的返回值是类的对象,函数执行返回调用时
18、以下GPU缓冲区中哪个是深度缓冲区:()
A、frame buffer
B、z buffer
C、color buffer
D、stencil buffer
19、假设下面的函数foo会被多线程调用,那么让i、j、k三个变量哪些因为线程间共享访问需要加锁保护()
int i = 0; void foo() { static int j = 0; int k = 0; i++; j++; k++;
}
A、i和j
B、i,j,k都需要
C、i
D、j和k
20、给定n个节点的二叉搜索树,每个节点的值是整数。给定一个整数,在树中找出与该整数最接近的节点的最小算法复杂度是()
A、O(logn)
B、O(n^2)
C、O(nlogn)
D、O(n)
21、给定一个长度为N的数组,找出一个最长的单调自增子序列(不一定连续,但是顺序不能乱)
例如:给定一个长度为8的数组A{1,3,5,2,4,6,7,8},则其最长的单调递增子序列为{1,2,4,6,7,8},长度为6。
22、小萌是个WOW发烧友,每天都痴迷于他的法师号。精诚所至金石为开,小萌穿越到WOW的世界中了...
初来乍到的小萌在暴风城的小巷中,遇见了一位善良的德鲁伊。德鲁伊听了小萌的故事,打算帮助他在WOW这个世界好好活下去,于是,把自己的东西都给了小萌了...
德鲁伊的东西太多了,于是小萌去拍卖行买了几个包裹,一切妥当之后,小萌开始把东西装进包裹里。
不过,因为小萌穿越时候脑袋先着地,所以脑子不好用,每次他拿起一个物品,要不装进包里,要不就直接扔掉...
而且,一个背包一旦不往里装东西,小萌就会封上口不再用...
现在,告诉你小萌每个物品的体积,背包的个数和容量,以及小萌拿物品的顺序,你要帮助小萌求出他能拿走多少东西。
1、C 2、A 3、A 4、C 5、B 6、B 7、A 8、C 9、D 10、B
11、A 12、A 13、C 14、B 15、A 16、A 17、B 18、B 19、A 20、A
21、参考代码:
#include<iostream> #include"vector" using namespace std; int main() { vector<int>result; vector<int>result1; vector<int>num; int T; cin >> T; while (T--) { int a; cin >> a; int n = a; while (a--) { int b; cin >> b; num.push_back(b); result.push_back(1); } for (int i = 0; i < n; i++) { result[i] = 1; for (int j = i - 1; j >= 0; j--) { if (num[i]>num[j] && result[i] < (result[j] + 1)) result[i] = result[j] + 1; } } int max = -1; for (int i = 0; i < n; i++) { if (result[i]>max) { max = result[i]; } } result.clear(); num.clear(); result1.push_back(max); } for (int i = 0; i < result1.size(); i++) { cout << result1[i] << endl; } }
22、参考代码:
#include <iostream> #include <string.h> #include <vector> #include <algorithm> using namespace std; int main() { int test; cin >> test; while (test--) { int dp[25][25][25]; int n, t, m, a[25]; cin >> n >> t >> m; for (int i = 1; i <= n; i++) cin >> a[i]; memset(dp, 0, sizeof(dp)); for (int i = 1; i <= m; ++i) // 前i个背包 { for (int j = 1; j <= n; ++j) // 前j件物品 { for (int k = 0; k <= t; ++k) // 容量为k { if (k - a[j] >= 0) // 放入 dp[i][j][k] = max(max(dp[i][j - 1][k], dp[i][j - 1][k - a[j]] + 1), dp[i - 1][j][t]); // 放入当前背包 else // 丢弃 dp[i][j][k] = max(dp[i][j - 1][k], dp[i - 1][j][t]); //cout<<i <<" 个背包. "<<j<<" 件物品. "<<k<<" 容量 "<<dp[i][j][k]<<endl; } } } cout << dp[m][n][t] << endl; } return 0; }