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 cout << obj2.sum() << endl; base 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 List last = &headnode; for( i=1; i p = new list 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题,建立职工信息链表,并完成题中要求的各种操作。 解答:略 因篇幅问题不能全部显示,请点此查看更多更全内容