-->
当前位置:首页 > 题库 > 正文内容

Luz4年前 (2021-03-08)题库5636
1-1

可以通过下标随机访问向量vector中的元素。

(1分)
作者
张德慧
单位
西安邮电大学
1-1
答案正确
(1 分)

1-2

当向量对象的内存用完之后,就会产生越界错误。

(1分)
作者
张德慧
单位
西安邮电大学
1-2
答案正确
(1 分)

1-3

vector容器可以使用push_front()和pop_front()函数对元素进行插入、删除。

(1分)
作者
刘莹
单位
威海职业学院
1-3
答案正确
(1 分)

1-4

set/multiset的区别是set用来存储一组无重复的元素,而multiset允许存储有重复的元素。

(1分)
作者
刘莹
单位
威海职业学院
1-4
答案正确
(1 分)

1-5

STL中关联型容器都是有序的。

(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-30

C++处理异常的机制是由()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 MB
5-1
答案正确
(10 分)

5-2

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分;
}
作者hulanqing
单位
浙江大学
时间限制
400 ms
内存限制
64 MB
5-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 MB
5-3
答案正确
(10 分)