1、二级 C+-75 (1)及答案解析(总分:100.00,做题时间:90 分钟)一、B基本操作题/B(总题数:1,分数:30.00)1.请使用 VC6或使用答题菜单打开考生文件夹 proj1下的工程 proj1。此工程中包括类 Date(“日期”)和主函数 main的定义。程序中位于每个“/ERROR *found*”之后的一行语句有错误,请加以改正。改正后程序的输出结果应为: 2006-1-1 2005-12-31 2005-12-31 2006-1-1 注意:只修改每个“/ERROR *found*”下的那一行,不要改动程序中的其他内容。 #include iostream using na
2、mespace std; class Date public: Date(int y=2006, int m=1, int d=1) / ERROR * found* : year=y, month=m, day=d /ERROR * found* Date (const Date d) this-year=d.year; this-month=d.month; this-day=d.day; void print () const cout year - month - day endl; private: /ERROR * found* int year (2006), month(1),
3、 day(1); ; int main () Date d1, d2 (2005, 12, 31), d3; d1.print (); d2.print(); d3=d2; d2=d1; d1=d3; d1.print(); d2.print(); return 0; (分数:30.00)_二、B简单应用题/B(总题数:1,分数:30.00)2.请使用 VC6或使用答题菜单打开考生文件夹 proj2下的工程 proj2。其中在编辑窗口内显示的主程序文件中定义有类 Point和 Circle,以及主函数 mmn。程序文本中位于每行“/*found*”之后的一行内有一处或多处下画线,请在下画线处填
4、写合适的内容,并删除下画线。经修改后运行程序,得到的输出结果应为: Point:(0,0)3 Point:(4,5)6 28.2743 113.097 #include iostream using namespace std; class Point /定义坐标点类 public: Point (int xx =0, int yy=0) x=xx; y=yy; void PrintP () cout “Point: (“ x “,“ y“)“; private: int x,y; /点的横坐标和纵坐标 ; class Circle /定义圆形类 public: Circle():rr (0)
5、 /无参构造函数 Circle (Point /带参构造函数声明 double Area () return rr* rr* 3.14159; /返回圆形的面积 /PrintP 函数定义,要求输出圆心坐标和半径 /* ound* void PrintP () _; cout rr endl; private: Point cc; /圆心坐标 double rr; /圆形半径 ; /带参构造函数的类外定义,要求由 cen和 rad分别初始化 cc和 rr /* found* Circle:_(Point int main() Point x, y(4,5); Circle a(x,3), b(y
6、,6); /输出两个圆的圆心坐标和半径 a. PrintP (); /* found* _; couta.Area () “ b. Area() endl; return 0; (分数:30.00)_三、B综合应用题/B(总题数:1,分数:40.00)3.请使用 VC6或使用答题菜单打开考生文件夹 proj3下的工程 proj3,其中包含源程序文件 main.cpp和用户定义的头文件 Array.h,整个程序包含有类 Array的定义和主函数 main的定义。请把主程序文件中的 Array类的成员函数 MinTwo()的定义补充完整,经修改后运行程序,得到的输出结果应为: 8 29,20,33
7、,12,18,66,25,14 12.14 注意:只允许在“/*333*”和“/*666*”之间填写内容,不允许修改其他任何地方的内容。 /Arry. h #include iostream #include cstdlib using namespaee std; template class Type class Array /数组类 public: Array(Type b, int mm): size (mm) /构造函数 if(size2) cout “数组长度太小, 退出运行!“; exit(1); a=new Type size; for(int i=0; isize; i+)
8、ai=bi; Array() delete a; /析构 void MinTwo (Type /由 x1和 x2带回数组a中最小的两个值 int Length() const return size; Type operator (int i)const /下标运算符重载为成员函数 if (i0 | i=size) cout“下标越界!“ endl; exit (1); return ai; private: Type * a; int size; ; void writeToFile(const char * ); /不用考虑此语句的作用 /main. cpp #include “Array
9、. h“ template class Type void Array Type:MinTwo (Type /* 333* /* 666* int main () int s18=29, 20, 33, 12, 18, 66, 25, 14; Arrayint d1 (s1, 8); int i, a, b; d1.MinTwo (a, b); cout d1.Length() endl; for(i=0; i7; i+) cout d1i“, “; cout d17 endl; cout a“, “bendl; writeToFile (“); return 0; (分数:40.00)_二级
10、 C+-75 (1)答案解析(总分:100.00,做题时间:90 分钟)一、B基本操作题/B(总题数:1,分数:30.00)1.请使用 VC6或使用答题菜单打开考生文件夹 proj1下的工程 proj1。此工程中包括类 Date(“日期”)和主函数 main的定义。程序中位于每个“/ERROR *found*”之后的一行语句有错误,请加以改正。改正后程序的输出结果应为: 2006-1-1 2005-12-31 2005-12-31 2006-1-1 注意:只修改每个“/ERROR *found*”下的那一行,不要改动程序中的其他内容。 #include iostream using names
11、pace std; class Date public: Date(int y=2006, int m=1, int d=1) / ERROR * found* : year=y, month=m, day=d /ERROR * found* Date (const Date d) this-year=d.year; this-month=d.month; this-day=d.day; void print () const cout year - month - day endl; private: /ERROR * found* int year (2006), month(1), da
12、y(1); ; int main () Date d1, d2 (2005, 12, 31), d3; d1.print (); d2.print(); d3=d2; d2=d1; d1=d3; d1.print(); d2.print(); return 0; (分数:30.00)_正确答案:(1):year(y),month(m),day(d) (2)Date(const Date class Point /定义坐标点类 public: Point (int xx =0, int yy=0) x=xx; y=yy; void PrintP () cout “Point: (“ x “,“
13、y“)“; private: int x,y; /点的横坐标和纵坐标 ; class Circle /定义圆形类 public: Circle():rr (0) /无参构造函数 Circle (Point /带参构造函数声明 double Area () return rr* rr* 3.14159; /返回圆形的面积 /PrintP 函数定义,要求输出圆心坐标和半径 /* ound* void PrintP () _; cout rr endl; private: Point cc; /圆心坐标 double rr; /圆形半径 ; /带参构造函数的类外定义,要求由 cen和 rad分别初始
14、化 cc和 rr /* found* Circle:_(Point int main() Point x, y(4,5); Circle a(x,3), b(y,6); /输出两个圆的圆心坐标和半径 a. PrintP (); /* found* _; couta.Area () “ b. Area() endl; return 0; (分数:30.00)_正确答案:(1)cc.PrintP() (2)Circle (3)cc(cen) (4)b.PrintP()解析:考点 本题考查 Point类和 Circle类,其中涉及构造函数和成员函数。 解析 (1)主要考查考生对成员函数的掌握,cc
15、是 Point类,直接调用类的 PrintP函数输出点坐标即可。 (2)主要考查考生对复制构造函数的掌握,复制构造函数的函数名就是类名。 (3)主要考查考生对复制构造函数的掌握,可以使用成员列表初始化。 (4)主要考查考生对成员函数调用的掌握,按题目要求输出 b的信息。三、B综合应用题/B(总题数:1,分数:40.00)3.请使用 VC6或使用答题菜单打开考生文件夹 proj3下的工程 proj3,其中包含源程序文件 main.cpp和用户定义的头文件 Array.h,整个程序包含有类 Array的定义和主函数 main的定义。请把主程序文件中的 Array类的成员函数 MinTwo()的定义
16、补充完整,经修改后运行程序,得到的输出结果应为: 8 29,20,33,12,18,66,25,14 12.14 注意:只允许在“/*333*”和“/*666*”之间填写内容,不允许修改其他任何地方的内容。 /Arry. h #include iostream #include cstdlib using namespaee std; template class Type class Array /数组类 public: Array(Type b, int mm): size (mm) /构造函数 if(size2) cout “数组长度太小, 退出运行!“; exit(1); a=new
17、Type size; for(int i=0; isize; i+) ai=bi; Array() delete a; /析构 void MinTwo (Type /由 x1和 x2带回数组a中最小的两个值 int Length() const return size; Type operator (int i)const /下标运算符重载为成员函数 if (i0 | i=size) cout“下标越界!“ endl; exit (1); return ai; private: Type * a; int size; ; void writeToFile(const char * ); /不用
18、考虑此语句的作用 /main. cpp #include “Array. h“ template class Type void Array Type:MinTwo (Type /* 333* /* 666* int main () int s18=29, 20, 33, 12, 18, 66, 25, 14; Arrayint d1 (s1, 8); int i, a, b; d1.MinTwo (a, b); cout d1.Length() endl; for(i=0; i7; i+) cout d1i“, “; cout d17 endl; cout a“, “bendl; write
19、ToFile (“); return 0; (分数:40.00)_正确答案:(for(int i=2; isize; i+) /i 从 2到 size-1遍历数组if(x2ai) /如果 x2大于 aiif(x1ai) /如果 x1,大于 aix2=x1; /把 x1赋值给 x2x1=ai; /ai赋值给 x1)else /否则x2=ai; /ai赋值给 x2)解析:考点 本题考查 Array类,其中涉及构造函数、析构函数和 const函数。 解析 主要考查考生对数组的掌握,函数要求由 a和 b带回数组 a中最小的两个值。使用 for循环遍历数组,使用条件语句对数组元素进行比较操作,并把最小值赋给 a和 b。
copyright@ 2008-2019 麦多课文库(www.mydoc123.com)网站版权所有
备案/许可证编号:苏ICP备17064731号-1