您的当前位置:首页正文

C++课后习题答案第九章

2022-03-12 来源:步旅网


C++作业答案

第9章 模 板

9.1 选择题

1.关于函数模板,描述错误的是( a )。

(a) 函数模板必须由程序员实例化为可执行的函数模板

(b) 函数模板的实例化由编译器实现

(c) 一个类定义中,只要有一个函数模板,则这个类是类模板

(d) 类模板的成员函数都是函数模板,类模板实例化后,成员函数也随之实例化

2.下列的模板说明中,正确的是( a,c )。

(a) template

(b) template

(c) template

(d) template

3.假设有函数模板定义如下:

template

Max( T a, T b ,T &c)

{ c = a + b ; }

下列选项正确的是( a,b )。

(a) float x, y; float z; (b) int x, y, z;

Max( x, y, z ); Max( x, y, z );

(c) int x, y; float z; (d) float x; double y, z;

Max( x, y, z ); Max( x, y, z );

4.关于类模板,描述错误的是( d )。

(a) 一个普通基类不能派生类模板

(b) 类模板从普通类派生,也可以从类模板派生

(c) 根据建立对象时的实际数据类型,编译器把类模板实例化为模板类

(d) 函数的类模板参数须通过构造函数实例化

5. 建立类模板对象的实例化过程为( c )。

(a) 基类派生类 (b) 构造函数对象

(c) 模板类对象 (d) 模板类模板函数

6.在C++中,容器是一种( d )。

(a) 标准类 (b) 标准对象 (c) 标准函数 (d) 标准类模板

9.2 阅读下列程序,写出执行结果

1. #include

template

void fun( T &x, T &y )

{ T temp;

temp = x; x = y; y = temp;

}

void main()

{ int i , j;

i = 10; j = 20;

fun( i, j );

cout << \"i = \" << i << '\' << \"j = \" << j << endl;

double a , b;

a = 1.1; b = 2.2;

fun( a, b );

cout << \"a = \" << a << '\' << \"b = \" << b << endl;

}

答案:

i=20 j=10

a=2.2 b=1.1

2. #include

template

class base

{ public:

base( T i , T j ) { x = i; y = j; }

T sum() { return x + y; }

private:

T x , y;

} ;

void main()

{ base obj2(3.3,5.5);

cout << obj2.sum() << endl;

base obj1(3,5);

cout << obj1.sum() << endl;

}

答案:

8.8

8

9.3 编程题

1.使用函数模板实现对不同类型数组求平均值的功能,并在main()函数中分别求一个整型数组和一个单精度浮点型数组的平均值。

解答:略。

2. 建立结点包括一个任意类型数据域和一个指针域的单向链表类模板。在main()函数中使用该类模板建立数据域为整型的单向链表,并把链表中的数据显示出来。

解答:

#include

template

class List

{ public:

List( T x ) { data = x; }

void append( List *node )

{ node->next = this;

next = 0;

}

List *getnext() { return next; }

T getdata() {return data; }

private:

T data;

List *next;

};

void main()

{ int i, idata, n, fdata;

cout << \"输入结点的个数:\";

cin >> n;

cout << \"输入结点的数据域:\";

cin >> fdata;

List headnode( fdata );

List *p, *last;

last = &headnode;

for( i=1; i{ cin >> idata;

p = new list ( idata );

p->append( last );

last = p;

}

cout << \"链表已经建立!\" << endl;

cout << \"链表中的数据为:\" << endl;

p = &headnode;

while( p )

{ cout << p->getdata() << endl;

p = p->getnext();

}

}

3.学习使用STL编程。选择合适的组件,重做第5章习题5.3第4题,建立职工信息链表,并完成题中要求的各种操作。

解答:略

因篇幅问题不能全部显示,请点此查看更多更全内容