1、计算机二级 C+上机考试 5+2015 年及答案解析(总分:30.00,做题时间:90 分钟)1.基本操作 请使用“答题“菜单或使用 VC6 打开考生文件夹下的工程 proj1。此工程包含程序文件main.cpp。程序中位于每个/ ERROR *found*下的语句行有错误,请加以更正。更正后程序的输出应该是: 1958 年 3 月 23 日比 2001 年 11 月 5 日更早 2001 年 11 月 5 日比 1958 年 3 月 23日更晚 2001 年 11 月 5 日与 2001 年 11 月 5 日是同一日期 注意:只能修改每个/ ERROR *found*下的那一行,不要改动程序
2、中的其他内容。(分数:10.00)_2.简单应用 请使用 VC6 或使用【答题】菜单打开考生文件夹 proj2 下的工程 proj2,该工程含有一个源程序文件 proj2.cpp, 其中定义了 Stack 类和 ArrayStack 类。请在程序中“/*found*“下的横线处填写适当的代码,然后删除横线。此程序的输出结果应为: c, b, a 注意:只需在指定位置编写适当代码,不要改动程序中的其他内容, 也不能删除或移动“/*found*“。 #include using namespace std; class Stack /抽象栈类的定义 public: virtual void pus
3、h(char c) = 0; /元素进栈 virtual char pop() = 0; /元素出栈 ; class ArrayStack : public Stack /派生栈类的定义 char *p; / 指向存放栈元素的字符数组 int maxSize; / 栈的最大容量 int top; / 栈顶位置 public: ArrayStack(int s) /s 表示栈的最大容量 top = -1; /top 值为-1 表示栈空 maxSize = s; /*found* p = new _; /为字符数组动态分配 maxSize 个单元的栈空间 ArrayStack() /*found*
4、 delete _; / 释放字符数组 p 的存储空间 void push(char c) if (top=maxSize-1) cerr=0;i-) if(coefi0) cout=0;i-) if(coefi0) cout+ else if(coefi!=0) cout cout ; void writeToFile(const char *path); /Polynomial.cpp #include“Polynomial.h“ Polynomial Polynomial:operator +(const Polynomial /存放结果系数的数组 /*333* /*666* retur
5、n Polynomial(c,10); / main.cpp #include“Polynomial.h“ int main() double p1=5.0, 3.5, -41.2, 7.8, p2=0.0, -5.9, 0.0, 12.8, 7.3, p3=1.0, 6.1, 2.8, 0.0, 7.3, -2.3; Polynomial poly1(p1,sizeof(p1)/sizeof(double), poly2(p2,sizeof(p2)/sizeof(double), poly3(p3,sizeof(p3)/sizeof(double); (poly1+poly2).Print(); (poly2+poly3).Print(); writeToFile(“); return 0; (分数:10.00)_正确答案:(for(int i=0; i ci=coefi + x.coefi; )解析:【解题思路】 题目要求重载运算符 operator +计算两个多项式的对应系数之和,由类的定义可知数组 coef 中存储的是各次项的系数,这里使用 for 循环来完成题目要求。