当前位置:首页 > 高级语言C++程序设计--考试试卷- 答案
virtualdoublefib(intn); //派生类中说明同一个虚函数fib(简单变量\数据平移\法) };
classfib2Cla : publicbaseCla//派生类fib2Cla { doublea[1000]; public: virtualdoublefib(intn); //virtual double fib(int n); //派生类中说明同一个虚函数fib(使用数组的求解法) };
classfib3Cla :publicbaseCla {
public: virtualdoublefib(intn); //使用递归函数的实现法 };
doublefib1Cla::fib(intn) { if (n == 1 || n == 2) return 0; else { for (i = 3; i<= n; i++) { c = a + b; a = b; b = c; } returnc; } }
doublefib2Cla::fib(intn) { a[0] = a[1] = 1; inti; if (n == 1 || n == 2) return 1; else { for (i = 2; i<= n; i++) a[i] = a[i - 1] + a[i - 2]; } returna[n-1]; //此处的n-1即为逻辑意义上的n }
doublefib3Cla::fib(intn) { if (n == 1 || n == 2) return 1; else returnfib(n - 1) + fib(n - 2); }
voidfun(baseCla *p, intn)
//自定义函数fun,形参p为指向基类的指针,其对应实参 //可为不同派生类对象的地址;n指明要求出数列的第n项 { //自定义函数fun,形参p 为指向基类的指针,其对应实参 //可为不同派生类对象的地址;n 指明要求出数列的第n 项 doubled = p->fib(n); //根据p 指针值的不同,将调用不同派生类的虚函数fib cout.flags(ios::scientific); cout.precision(15); cout<<\< voidmain() { fib1Claobj1; //fib1Cla 类对象obj1 fib2Claobj2; //fib2Cla 类对象obj2 fib3Claobj3; //fib3Cla 类对象obj3 cout<<\< 第四题:模板/指针编程(20分) 编写一个具有如下样式的类模板tmplt ,用于实现所谓的反序输出问题,其中使用了类型参数T(使所处理的元素类型可变化)和普通参数n(元素个数也可变化): template T arr[n]; // n 个T 类型的数据存放于数组arr 之中 public: void dataIn(); //从键盘输入n 个T 类型数据放入arr 数组中 void reverseOut(); //将arr 数组中的数据按输入的相反顺序输出 void reverseOutByList(); //用链表形式, 反序输出}; 在reverseOutByList()中, 可定义如下的结构类型, 以形成链表项 struct item { T data; item * next; } *first , *temp; #include template cin>>arr[i]; } template voidtmplt template voidtmplt intmain() { tmplt } t3.reverseOut(); tmplt cout<<\请输入8个double数:\<
共分享92篇相关文档