1-1可以通过下标随机访问向量vector中的元素。
(1分)作者张德慧单位西安邮电大学1-1答案正确(1 分)
1-2当向量对象的内存用完之后,就会产生越界错误。
(1分)作者张德慧单位西安邮电大学1-2答案正确(1 分)
1-3vector容器可以使用push_front()和pop_front()函数对元素进行插入、删除。
(1分)作者刘莹单位威海职业学院1-3答案正确(1 分)
1-4set/multiset的区别是set用来存储一组无重复的元素,而multiset允许存储有重复的元素。
(1分)作者刘莹单位威海职业学院1-4答案正确(1 分)
1-5STL中关联型容器都是有序的。
(1分)作者刘莹单位威海职业学院1-5答案正确(1 分)
1-6映射容器里存储的元素都是成对存在的。
(1分)作者刘莹单位威海职业学院1-6答案正确(1 分)
2-1现有声明:
template
class Test{...};
则以下哪一个声明不可能正确。
(2分)作者何振峰单位福州大学2-1答案正确(2 分)
2-2关于函数模板,描述错误的是。
(2分)作者高巍然单位西安邮电大学2-2答案正确(2 分)
2-3下列的模板说明中,正确的是。
(2分)作者高巍然单位西安邮电大学2-3答案正确(2 分)
2-4假设有函数模板定义如下: template Max( T a, T b ,T &c) { c = a + b ; } 下列选项正确的是( )。
(2分)作者高巍然单位西安邮电大学2-4答案正确(2 分)
2-5关于类模板,描述错误的是。
(2分)作者高巍然单位西安邮电大学2-5答案正确(2 分)
2-6建立类模板对象的实例化过程为。
(2分)作者高巍然单位西安邮电大学2-6答案正确(2 分)
2-7下列有关模板的描述,错误的是____。
(2分)作者李廷元单位民用航空飞行学院2-7答案正确(2 分)2-11类模板的模板参数____。
(2分)作者李廷元单位民用航空飞行学院2-11答案正确(2 分)
2-12类模板的使用实际上是将类模板实例化成一个____。
(2分)作者李廷元单位民用航空飞行学院2-12答案正确(2 分)
2-13声明模板的关键字为____。
(2分)作者李廷元单位民用航空飞行学院2-13答案正确(2 分)
2-14下列对模板的声明,正确的是____。
(2分)作者李廷元单位民用航空飞行学院2-14答案正确(2 分)2-19模板的使用是为了()。
(2分)作者吕华单位河北工业大学2-19答案正确(2 分)
2-20假设声明了一下的函数模板:
template<class T>T max(T x, T y)
{ return (x>y)?x:y;
}
并定义了int i; char c; 错误的调用语句是()。
(2分)作者吕华单位河北工业大学2-20答案正确(2 分)
2-21若有下面的语句:
vector<int> v;for (int i = 0; i < 4; i++)
v.push_back(i + 1);cout << v.size() << endl;
则执行后程序的输出结果是
(2分)作者李廷元单位民用航空飞行学院2-21答案正确(2 分)
2-22设有定义 vector<string> v(10);
执行下列哪条语句时会调用构造函数?
(2分)作者孔德桢单位浙大城市学院2-22答案正确(2 分)
2-23设有如下代码段:
std::map<char *, int> m;const int MAX_SIZE = 100;int main() { char str[MAX_SIZE]; for (int i = 0; i < 10; i++) { std::cin >> str;
m[str] = i;
} std::cout << m.size() << std::endl;
}
读入10个字符串,则输出的 m.size()
为
(2分)作者孔德桢单位浙大城市学院2-23答案正确(2 分)
2-24下列关于STL的描述中,错误的是。
(2分)作者刘莹单位威海职业学院2-24答案正确(2 分)
2-25下列创建vector容器对象的方法中,错误的是。
(2分)作者刘莹单位威海职业学院2-25答案正确(2 分)
2-26下列选项中,哪一项不是迭代器。
(2分)作者刘莹单位威海职业学院2-26答案正确(2 分)
2-27下列关于异常的描述中,错误的是()。
(2分)作者刘莹单位威海职业学院2-27答案正确(2 分)
2-28下列关于异常类的说法中,错误的是。
(2分)作者刘莹单位威海职业学院2-28答案正确(2 分)2-30C++处理异常的机制是由()3部分组成。
(2分)作者吕华单位河北工业大学2-30答案正确(2 分)
5-1#include <iostream>
using namespace std;
class IndexError{};
template 2分class ARRAY
{
size_t m_size;
T *m_ptr;
public:
ARRAY(size_t size) : m_size(size)
{
m_ptr = new T[size];
memset(m_ptr, 0, size*sizeof(int));
}
~ARRAY()
{
delete[] m_ptr;
}
T& at(int index);
};
template <typename T>2分::at(int index)
{
if(index<0||2分)
{ 2分 IndexError();
}
return m_ptr[index];
}
int main()
{
ARRAY<int> a(50);
int i;
cin >> i; 2分
{
for(int j=0;j<i;j++)
a.at(i) = j;
}
catch(IndexError e)
{
return 0;
}
return 0;
}
作者hulanqing单位浙江大学时间限制400 ms内存限制64 MB5-1答案正确(10 分)
5-2Run the following program, Enter: 1, the output is: 55 34 21 13 8 5 3 2 1 1
#include <iostream>
using namespace std;
enum ERROR{UnderFlow,OverFlow};
template<typename T>
class StackTemplate {
enum { ssize = 100 };
T stack[ssize];
int top;
public:
StackTemplate() : top(0) {}
void push(const T& i) {
if (top >= ssize) 1分;
stack[top++] = i;
}
T pop() {
if (1分) throw UnderFlow;
return 1分;
}
int size() const
{ return top; }
};
int fibonacci(int n);
int main() { 1分 { 1分 is;
for(int i = 0; i < 20; i++)
is.push(fibonacci(i));
for(int k = 0; k < 20; k++)
cout << is.pop() << "\t";
}
catch( ERROR e ) {
switch(1分)
{
case OverFlow:
exit;
case UnderFlow:
exit;
}
}
catch(...)
{
exit;
}
return 0;
}
int fibonacci(int n)
{ 1分 int sz = 100;
int i;
static int f[sz];
if (n >= sz) 1分;
f[0] = f[1] = 1;
for(i = 0; i < sz; i++)
if(f[i] == 0) break;
while(i <= n) { 1分 = f[i-1] + f[i-2];
i++;
}
return 1分;
}
作者hulanqing单位浙江大学时间限制400 ms内存限制64 MB5-2答案正确(10 分)
5-3下面程序定义栈类模板StackTemplate,创建栈对象存储斐波那契数列的前10项数值,并以后进先出的方式取出元素并输出,输出结果为:55 34 21 13 8 5 3 2 1 1。其中void push(const T& i)函数为添加元素、T pop()函数为取出栈顶元素,int fibonacci(int n)函数为计算斐波那契数列的第n项值。在计算斐波那契数列值、添加元素和取出元素的过程中要进行上溢(OverFlow)或者下溢(UnderFlow)的异常处理。请补充空白处的代码(每空1分)。
#include <iostream>
using namespace std;
enum ERROR{UnderFlow,OverFlow};
template<typename T>
class StackTemplate {
enum { ssize = 100 };
T stack[ssize];
int top;
public:
StackTemplate() : top(0) {}
void push(const T& i) {
if (top >= ssize)
1分;
stack[top++] = i;
}
T pop() {
if (1分)
throw UnderFlow;
return 1分;
}
int size() const{
return top;
}
};
int fibonacci(int n);
int main() { 1分 {
1分 is;
for(int i = 0; i < 10; i++)
is.push(fibonacci(i));
for(int k = 0; k < 10; k++)
cout << is.pop() << "\t";
}
catch( ERROR e ) {
switch(1分 ) {
case OverFlow: exit;
case UnderFlow: exit;
}
}
catch(...) {
}
return 0;
}
int fibonacci(int n) { 1分 int sz = 100;
int i;
static int f[sz];
if (n >= sz)
1分;
f[0] = f[1] = 1;
for(i = 0; i < sz; i++)
if(f[i] == 0) break;
while(i <= n) { 1分 = f[i-1] + f[i-2];
i++;
}
return 1分;
}
作者黄万丽单位曲阜师范大学时间限制400 ms内存限制64 MB5-3答案正确(10 分)
可以通过下标随机访问向量vector中的元素。
当向量对象的内存用完之后,就会产生越界错误。
vector容器可以使用push_front()和pop_front()函数对元素进行插入、删除。
set/multiset的区别是set用来存储一组无重复的元素,而multiset允许存储有重复的元素。
STL中关联型容器都是有序的。
映射容器里存储的元素都是成对存在的。
现有声明:
template
class Test{...};
则以下哪一个声明不可能正确。
关于函数模板,描述错误的是。
下列的模板说明中,正确的是。
假设有函数模板定义如下: template Max( T a, T b ,T &c) { c = a + b ; } 下列选项正确的是( )。
关于类模板,描述错误的是。
建立类模板对象的实例化过程为。
下列有关模板的描述,错误的是____。
类模板的模板参数____。
类模板的使用实际上是将类模板实例化成一个____。
声明模板的关键字为____。
下列对模板的声明,正确的是____。
模板的使用是为了()。
假设声明了一下的函数模板:
template<class T>T max(T x, T y) { return (x>y)?x:y; }
并定义了int i; char c; 错误的调用语句是()。
若有下面的语句:
vector<int> v;for (int i = 0; i < 4; i++) v.push_back(i + 1);cout << v.size() << endl;
则执行后程序的输出结果是
设有定义 vector<string> v(10);
执行下列哪条语句时会调用构造函数?
设有如下代码段:
std::map<char *, int> m;const int MAX_SIZE = 100;int main() { char str[MAX_SIZE]; for (int i = 0; i < 10; i++) { std::cin >> str; m[str] = i; } std::cout << m.size() << std::endl; }
读入10个字符串,则输出的 m.size()
为
下列关于STL的描述中,错误的是。
下列创建vector容器对象的方法中,错误的是。
下列选项中,哪一项不是迭代器。
下列关于异常的描述中,错误的是()。
下列关于异常类的说法中,错误的是。
C++处理异常的机制是由()3部分组成。
#include <iostream> using namespace std; class IndexError{}; template 2分class ARRAY { size_t m_size; T *m_ptr; public: ARRAY(size_t size) : m_size(size) { m_ptr = new T[size]; memset(m_ptr, 0, size*sizeof(int)); } ~ARRAY() { delete[] m_ptr; } T& at(int index); }; template <typename T>2分::at(int index) { if(index<0||2分) { 2分 IndexError(); } return m_ptr[index]; } int main() { ARRAY<int> a(50); int i; cin >> i; 2分 { for(int j=0;j<i;j++) a.at(i) = j; } catch(IndexError e) { return 0; } return 0; }
Run the following program, Enter: 1, the output is: 55 34 21 13 8 5 3 2 1 1
#include <iostream> using namespace std; enum ERROR{UnderFlow,OverFlow}; template<typename T> class StackTemplate { enum { ssize = 100 }; T stack[ssize]; int top; public: StackTemplate() : top(0) {} void push(const T& i) { if (top >= ssize) 1分; stack[top++] = i; } T pop() { if (1分) throw UnderFlow; return 1分; } int size() const { return top; } }; int fibonacci(int n); int main() { 1分 { 1分 is; for(int i = 0; i < 20; i++) is.push(fibonacci(i)); for(int k = 0; k < 20; k++) cout << is.pop() << "\t"; } catch( ERROR e ) { switch(1分) { case OverFlow: exit; case UnderFlow: exit; } } catch(...) { exit; } return 0; } int fibonacci(int n) { 1分 int sz = 100; int i; static int f[sz]; if (n >= sz) 1分; f[0] = f[1] = 1; for(i = 0; i < sz; i++) if(f[i] == 0) break; while(i <= n) { 1分 = f[i-1] + f[i-2]; i++; } return 1分; }
下面程序定义栈类模板StackTemplate,创建栈对象存储斐波那契数列的前10项数值,并以后进先出的方式取出元素并输出,输出结果为:55 34 21 13 8 5 3 2 1 1。其中void push(const T& i)函数为添加元素、T pop()函数为取出栈顶元素,int fibonacci(int n)函数为计算斐波那契数列的第n项值。在计算斐波那契数列值、添加元素和取出元素的过程中要进行上溢(OverFlow)或者下溢(UnderFlow)的异常处理。请补充空白处的代码(每空1分)。
#include <iostream> using namespace std; enum ERROR{UnderFlow,OverFlow}; template<typename T> class StackTemplate { enum { ssize = 100 }; T stack[ssize]; int top; public: StackTemplate() : top(0) {} void push(const T& i) { if (top >= ssize) 1分; stack[top++] = i; } T pop() { if (1分) throw UnderFlow; return 1分; } int size() const{ return top; } }; int fibonacci(int n); int main() { 1分 { 1分 is; for(int i = 0; i < 10; i++) is.push(fibonacci(i)); for(int k = 0; k < 10; k++) cout << is.pop() << "\t"; } catch( ERROR e ) { switch(1分 ) { case OverFlow: exit; case UnderFlow: exit; } } catch(...) { } return 0; } int fibonacci(int n) { 1分 int sz = 100; int i; static int f[sz]; if (n >= sz) 1分; f[0] = f[1] = 1; for(i = 0; i < sz; i++) if(f[i] == 0) break; while(i <= n) { 1分 = f[i-1] + f[i-2]; i++; } return 1分; }