问答题

请使用VC6或使用[答题]菜单打开考生文件夹proj1下的工程proj1,此工程包含一个源程序文件proj1.cpp。文件中将表示数组元素个数的常量Size定义为4,并用int类型对类模板进行了实例化。文件中位于每个注释“//ERROR****found****”之后的一行语句存在错误。请改正这些错误,使程序的输出结果为:
1 2 3 4
注意:模板参数名用T。只修改注释“//ERROR ********found********”的下一行语句,不要改动程序中的其他内容。
//proj1.cpp
#include <iostream>
using namespace std;
//将数组元素个数 Size定义为4
//ERROR ********found********
const int Size;
template <typename T>
class MyClass

public:
MyClass(T*p)

for(int i=0;i<Size;i++)
array[i]=p[i];

void Print();
private:
T array[Size];
;
template <typename T>
void MyClass::Print()

for (int i=0;i<Size;i++)
cout<<array[i]<<’\t’;

int main()

int intArray[Size]=1,2,3,4;
//ERROR ********found********
MyClass <double> obj(intArray);
obj.Print();
cout<<endl;
return 0;

【参考答案】

(1)const int Size=4;
(2)void MyClass<T>::Print()
(......

(↓↓↓ 点击下方‘点击查看答案’看完整答案、解析 ↓↓↓)
热门 试题

问答题
请使用VC6或使用[答题]菜单打开考生文件夹proj2下的工程proj2。该工程中包含一个程序文件maln.cpp,其中有“书”类Book及其派生出的“教材”类TeachingMaterial的定义,还有主函数main的定义。请在程序中“ ********found********”下的横线处填写适当的代码,然后删除横线,以实现上述类定义和函数定义。此程序的正确输出结果应为: 教材名:C++语言程序设计 页 数:299 作 者:张三 相关课程:面向对象的程序设计 注意:只能在横线处填写适当的代码,不要改动程序中的其他内容,也不要删除或移动“ ****found****”。 #include <iostream> using namespace std; class Book 书 类 char * title; 书名 int num_pages; 页数 char * writer; 作者姓名 public: Book(const char * the_title,intpages,const char * the_writer):num_pages(pages) title=new char[strlen(the_title)+1]; strcpy(title,the_title); **********found********** ______ strcpy(writer,the_writer); ~Book()______ int numOfPages()constreturn num_pages; 返回书的页数 const char * theTitle () const return title; 返回书名 const char * theWriter () const return writer; 返回作者名 ; class TeachingMaterial:public Book “教材”类 char * course; public: TeachingMaterial (const char * the_title,int pages,const char*thewriter,const char * the course) :______ course=new char[strlen(the_course)+1]; strcpy(course,the_course); ~TeachingMaterial()delete[]course; const char*theCourse()constreturn course;) 返回相关课程的名称 ); int main() TeachingMaterial abook ( C++语言程序设计 ,299, 张三 , 面向对象的程序设计 ); cout<< 教材名: <<a book.theTitle()<<endl << 页 数: <<a_book.numOfPages()<<endl << 作 者: <<a book.theWriter()<<endl **********found**********<< 相关课程: <<______; cout<<endl; return 0;
问答题
请使用VC6或使用[答题]菜单打开考生目录proj3下的工程文件proj3,其中定义了用于表示特定数制的数的模板类Number和表示一天中的时间的类TimeOfDay;程序应当显示: 01:02:03.004 06:04:06.021 但程序中有缺失部分,请按照以下的提示,把缺失部分补充完整: (1)在“ **1** ****found****”的下方是一个定义数据成员seconds的语句,seconds用来表示“秒”。 (2)在“ **2** ****found****”的下方是函数advanceSeconds中的一个语句,它使时间前进k秒。 (3)在“ **3** ****found****”的下方是函数advance中的一个语句,它确定增加k后n的当前值和进位,并返回进位。例如,若n的当前值是表示时间的55分,增加10分钟后当前值即变为5分,进位为1(即1小时)。 注意:只在指定位置编写适当代码,不要改动程序中的其他内容,也不要删除或移动“****found****”。填写的内容必须在一行中完成,否则评分将产生错误。 proj3.cpp #include<iostream> #include<iomanip> using namespace std; template<int base> 数制为base的数 class Number int n; 存放数的当前值 public: Number(int i):n(i) i必须小于base int advance(int k); 当前值增加k个单位 int value()constreturn n; 返回数的当前值 ; class TimeOfDay public: Number<24>hours; 小时(0~23) Number<60>minutes; 分(0~59) **1** **********found**********______; 秒(0~59) Number<1000>milliseconds; 毫秒(0~999) TimeOfDay (int h=0,int m=0,int s=0,int milli=0) :hours(h),minutes(m),seconds(s),milliseconds(milli) void advanceMillis (int k) advanceSeconds(milliseconds.advance(k)); 前进k毫秒 void advanceSeconds (int k) 前进k秒 **2** **********found********** ______; void advanceMinutes (int k) advanceHour(minutes.advance (k)); 前进k分钟 void advanceHour(int k)hours.advance(k); 前进k小时 void show()const 按“小时:分:秒.毫秒”的格式显示时间 int c=cout.fill(’0’); 将填充字符设置为’0’ cout<<setw(2)<<hours.value()<<’:’ 显示小时 <<setw(2)<<minutes.value()<<’:’ 显示分 <<setw(2)<<seconds.value()<<’.’ 显示秒 <<setw(3)<<milliseconds.value(); 显示毫秒 cout.fill(c); 恢复原来的填充字符 ; template<int base> int Number<base>::advance(int k) n+=k; 增加k个单位 int s=0; s用来累计进位 **3** ***********found*********** while(n>=base)______ n到达或超过base即进位 return s; 返回进位 int main() TimeOfDay time(1,2,3,4); 初始时间:1小时2分3秒4毫秒 time.show(); 显示时间 time.advanceHour(5); 前进5小时 time.advanceSeconds(122); 前进122秒(2分零2秒) time.advanceMillis(1017); 前进1017毫秒(1秒零17毫秒) cout<<endl; time.show(); 显示时间 cout<<endl; return 0;