【计算机类职业资格】二级C++-66及答案解析.doc

上传人:twoload295 文档编号:1324122 上传时间:2019-10-17 格式:DOC 页数:8 大小:49.50KB
下载 相关 举报
【计算机类职业资格】二级C++-66及答案解析.doc_第1页
第1页 / 共8页
【计算机类职业资格】二级C++-66及答案解析.doc_第2页
第2页 / 共8页
【计算机类职业资格】二级C++-66及答案解析.doc_第3页
第3页 / 共8页
【计算机类职业资格】二级C++-66及答案解析.doc_第4页
第4页 / 共8页
【计算机类职业资格】二级C++-66及答案解析.doc_第5页
第5页 / 共8页
点击查看更多>>
资源描述

1、二级 C+-66及答案解析(总分:100.00,做题时间:90 分钟)一、B基本操作题/B(总题数:1,分数:30.00)1.请使用 VC6或使用答题菜单打开考生文件夹 proj1下的工程 proj1。此工程中包含源程序文件main.cpp,其中有类 TVSet(“电视机”)和主函数 main的定义。程序中位于每个“/ERROR *found*”之后的一行语句有错误,请加以改正。改正后程序的输出结果应该是: 规格:29英寸,电源:开,频道:5,音量:18 规格:29 英寸,电源:关,频道:-1,音量:-1 注意:只修改每个“/ERROR *found*”下的那一行,不要改动程序中的其他内容。

2、#include iostream using namespace Std; class TVSet /“电视机“类 const int size; int channel; /频道 int volume; /音量 bool on; /电源开关:true 表示开,false 表示关 public: TVSet (int size): size (size), channel(0), onfalse) / ERROR * found* int getSize () const return size; /返回电视机规格 bool isOn()const return on; /返回电源开关状态

3、/返回当前音量,关机情况下返回-1 int getVolume () const return isOn()? volume : -1; /返回当前频道,关机情况下返回-1 int getChannel () const return isOn()? channel: -1; void turnOnOff() on=! on; /将电源在“开”和“关”之间转换 void setChannelTo (int chan) if(isOn() / ERROR * found* void setVolumeTo (int vol)const /设置音量(关机情况下无效) if(isOn() void

4、show state() cout “规格:“ getSize() “英寸“ “,电源:“ (isOn ()? “开“ : “关“) “,频道:“ getChannel () “,音量:“ getVolume () endl; ; int main() TVSet tv (29); tv.turnOnOff (); tv. setChannelTo (5); tv.show state(); tv.turnOnOff (); tv.show state(); return 0; (分数:30.00)_二、B简单应用题/B(总题数:1,分数:30.00)2.请使用 VC6或使用答题菜单打开考生文

5、件夹 proj2下的工程 proj2。此工程中包含一个源程序文件main.cpp,其中有类 Quadritic、类 Root及主函数 main的定义。一个 Quadritic对象表示一个形如ax2+bx+c的一元二次多项式。一个 Root对象用于表示方程 ax2+bx+c=0的一组根,它的数据成员num_of_roots有 3种可能的值,即 0、1 和 2,分别表示根的 3种情况:无实根、有两个相同的实根和有两个不同的实根。请在横线处填写适当的代码并删除横线,以实现上述类定义。此程序的正确输出结果应为(注:输出中的 X2表示 x2):3X2+4X+5=0.1 无实根4.5X2+6X+2=0.0

6、 有两个相同的实根:-0.666667 和-0.6666670.5X2+2X-3=0.0 有两个不同的实根:0.896805 和-2.23014注意:只在横线处填写适当的代码,不要改动程序中的其他内容,也不要删除或移动“/*found*”。#include iostream#include iomanip#include cmathusing namespace std;class Root /一元二次方程的根public:const double x1; /第一个根const double x2; /第二个根const int num of roots; /不同根的数量:0、1 或 2/创建

7、一个“无实根”的 Root对象Root(): x1 (0.0), x2 (0.0), num_of_roots (0) /创建一个“有两个相同的实根”的 Root对象Root (double root): x1 (root), x2 (root), num_of_roots(1) /创建一个“有两个不同的实根”的 Root对象Root (double root1, double root2)/* found*:_void show () const /显示根的信息cout “/t/t“;/* found*switch (_) case 0:cout “无实根“; break;case 1:co

8、ut “有两个相同的实根:“ x1“ 和 “ x2; break;default:cout “有两个不同的实根:“ x1“ 和 “ x2; break;class Quadratic /二次多项式public:const double a, b, c;Quadratic (double aa, double bb, double cc) /构造函数:a(aa), b(bb), c(cc) Quadratic (QuadraticQuadratic sub (Quadratic x) const /求两个多项式的差return Quadratic(a-x.a, b-x.b, c-x.c);dou

9、ble value (double x) const /求二次多项式的值return a* x* x+b* x+c;Root root ()const /求一元二次方程的根double delta=b* b-4* a* c; /计算判别式/* found*if (delta0.0)_;if (delta =0.0)return Root ( -b/(2* a);double sq = sqrt (delta);returnRoot(-b+sq)/(2* a), (-b-sq) / (2“ a);void show() const /显示多项式cout endl a “X2 “ showpos

10、b “X“ c noshowpos;void showFunction () /显示一元二次方程show ();cout “ =0.0“;int main () Quadratic q1 (3.0, 4.0, 5.0), q2(4.5, 6.0, 2.0), q3 (q2. sub(q1);q1.showFunction ();q1.root().show();q2.showFunction ();q2.root ().show();q3.showFunction ();q3.root ().show();cout endl;return 0;(分数:30.00)_三、B综合应用题/B(总题数

11、:1,分数:40.00)3.请使用 VC6或使用答题菜单打开考生文件夹 proj3下的工程 proj3,其中包含了日期类 Date、人员类Person及排序函数 sortByAge和主函数 main的定义。其中 Person的成员函数 compareAge的功能是:将当前 Person对象和参数 Person对象进行比较,若前者的年龄大于后者的年龄,则返回一个正数;若前者的年龄小于后者的年龄,则返回一个负数;若年龄相同则返回 0。注意,出生 13期越大,年龄越小。请编写成员函数 compareAge。在 main函数中给出了一组测试数据,此时程序的正确输出结果应为: 按年龄排序 排序前: 张三

12、 男 出生日期:1978 年 4月 20日 王五 女 出生日期:1965 年 6月 3日 杨六 女 出生日期:1965 年 9月 5日 李四 男 出生日期:1973 年 5月 30日 排序后: 张三 男 出生日期:1978年 4月 20日 李四 男 出生日期:1973 年 5月 30日 杨六 女 出生日期:1965 年 9月 5日 王五 女 出生日期:1965 年 6月 3日 要求: 补充编制的内容写在“/*333*”与“/*666*”之间,不得修改程序的其他部分。 注意:程序最后将结果输出到文件out.dat中。输出函数 WriteToFile已经编译为 obj文件,并且在本程序中调用。 /

13、Person.h #include iostream using namespace std; class Date /日期类 int year,month, day; /年、月、日 public: Date(int year, int month, int day):year(year), month(month), day(day) int getYear()const return year; int getMonth () const return month; int getDay()const return day; ; class Person /人员类 char name14;

14、 /姓名 boom is male; /性别,为 true时表示男性 Date birth date; /出生日期 public: Person (char * name, bool is_male, Date birth_date); const char * getName () const return name; bool isMale()const return is male; Date getBirthdate () const return birth date; int compareAge (const Person void show()const; ; void sor

15、tByAge(Personps, int size); void writeToFile(char * ); /main.cpp #include“Person.h“ Person:Person(char * name, boom is_male, Date birth_date):is_male(is_male),birth_date(birth_date) strcpy(this-name, name); int Person:compareAge(const Person cout name “ /显示姓名 (is_male? “男“ : “女“) /显示性别(“男“或“女“) “出生日

16、期:“ /显示出生日期 birth_date.getYear () “年“ birthdate.getMonth() “月“ birthdate.getDay() “日“; void sortByAge(Person ps, int size) for(int i=0; isize-1; i+) / int m=i; for (int j=i+1; jsize; j+) if (pareAge (psm)0) m=j; if (mi) Person p=psm; psm=psi; psi=p; int main() Person staff = Person (“张三“, true, Date

17、 (1978, 4, 20), Person (“王五“, false, Date (1965, 6, 3), Person(“杨六“, false, Date (1965, 9, 5), Person (“李四“, true, Date (1973, 5, 30) ; const int size = sizeof (staff)/sizeof(staff0); int i; cout “按年龄排序“ endl “排序前:“; for(i=0; isize; i+) staffi. show (); sortByAge (staff, size); cout endl endl “排序后:“

18、; for(i=0; isize; i+) staffi. show (); cout endl; writeToFile (“); return 0; (分数:40.00)_二级 C+-66答案解析(总分:100.00,做题时间:90 分钟)一、B基本操作题/B(总题数:1,分数:30.00)1.请使用 VC6或使用答题菜单打开考生文件夹 proj1下的工程 proj1。此工程中包含源程序文件main.cpp,其中有类 TVSet(“电视机”)和主函数 main的定义。程序中位于每个“/ERROR *found*”之后的一行语句有错误,请加以改正。改正后程序的输出结果应该是: 规格:29英寸

19、,电源:开,频道:5,音量:18 规格:29 英寸,电源:关,频道:-1,音量:-1 注意:只修改每个“/ERROR *found*”下的那一行,不要改动程序中的其他内容。 #include iostream using namespace Std; class TVSet /“电视机“类 const int size; int channel; /频道 int volume; /音量 bool on; /电源开关:true 表示开,false 表示关 public: TVSet (int size): size (size), channel(0), onfalse) / ERROR * f

20、ound* int getSize () const return size; /返回电视机规格 bool isOn()const return on; /返回电源开关状态 /返回当前音量,关机情况下返回-1 int getVolume () const return isOn()? volume : -1; /返回当前频道,关机情况下返回-1 int getChannel () const return isOn()? channel: -1; void turnOnOff() on=! on; /将电源在“开”和“关”之间转换 void setChannelTo (int chan) if

21、(isOn() / ERROR * found* void setVolumeTo (int vol)const /设置音量(关机情况下无效) if(isOn() void show state() cout “规格:“ getSize() “英寸“ “,电源:“ (isOn ()? “开“ : “关“) “,频道:“ getChannel () “,音量:“ getVolume () endl; ; int main() TVSet tv (29); tv.turnOnOff (); tv. setChannelTo (5); tv.show state(); tv.turnOnOff ()

22、; tv.show state(); return 0; (分数:30.00)_正确答案:(1)volume=18; (2)channel=chan; (3)void setVolumeTo(int vol)解析:考点 本题考查 TVSet类,其中涉及构造函数、成员函数、const 函数和 bool函数。 解析 (1)主要考查考生对构造函数的掌握,有题目要求输出音量为 18,因此使用构造函数将 volume初始为 18。 (2)主要考查考生对成员函数的掌握,满足 if条件的要设置频道,即 channel=chan;。 (3)主要考查考生对const函数的掌握,函数体内存在语句 volume=v

23、ol;,使变量的值发生改变,因此不能用 const定义函数。二、B简单应用题/B(总题数:1,分数:30.00)2.请使用 VC6或使用答题菜单打开考生文件夹 proj2下的工程 proj2。此工程中包含一个源程序文件main.cpp,其中有类 Quadritic、类 Root及主函数 main的定义。一个 Quadritic对象表示一个形如ax2+bx+c的一元二次多项式。一个 Root对象用于表示方程 ax2+bx+c=0的一组根,它的数据成员num_of_roots有 3种可能的值,即 0、1 和 2,分别表示根的 3种情况:无实根、有两个相同的实根和有两个不同的实根。请在横线处填写适当

24、的代码并删除横线,以实现上述类定义。此程序的正确输出结果应为(注:输出中的 X2表示 x2):3X2+4X+5=0.1 无实根4.5X2+6X+2=0.0 有两个相同的实根:-0.666667 和-0.6666670.5X2+2X-3=0.0 有两个不同的实根:0.896805 和-2.23014注意:只在横线处填写适当的代码,不要改动程序中的其他内容,也不要删除或移动“/*found*”。#include iostream#include iomanip#include cmathusing namespace std;class Root /一元二次方程的根public:const dou

25、ble x1; /第一个根const double x2; /第二个根const int num of roots; /不同根的数量:0、1 或 2/创建一个“无实根”的 Root对象Root(): x1 (0.0), x2 (0.0), num_of_roots (0) /创建一个“有两个相同的实根”的 Root对象Root (double root): x1 (root), x2 (root), num_of_roots(1) /创建一个“有两个不同的实根”的 Root对象Root (double root1, double root2)/* found*:_void show () co

26、nst /显示根的信息cout “/t/t“;/* found*switch (_) case 0:cout “无实根“; break;case 1:cout “有两个相同的实根:“ x1“ 和 “ x2; break;default:cout “有两个不同的实根:“ x1“ 和 “ x2; break;class Quadratic /二次多项式public:const double a, b, c;Quadratic (double aa, double bb, double cc) /构造函数:a(aa), b(bb), c(cc) Quadratic (QuadraticQuadrat

27、ic sub (Quadratic x) const /求两个多项式的差return Quadratic(a-x.a, b-x.b, c-x.c);double value (double x) const /求二次多项式的值return a* x* x+b* x+c;Root root ()const /求一元二次方程的根double delta=b* b-4* a* c; /计算判别式/* found*if (delta0.0)_;if (delta =0.0)return Root ( -b/(2* a);double sq = sqrt (delta);returnRoot(-b+sq

28、)/(2* a), (-b-sq) / (2“ a);void show() const /显示多项式cout endl a “X2 “ showpos b “X“ c noshowpos;void showFunction () /显示一元二次方程show ();cout “ =0.0“;int main () Quadratic q1 (3.0, 4.0, 5.0), q2(4.5, 6.0, 2.0), q3 (q2. sub(q1);q1.showFunction ();q1.root().show();q2.showFunction ();q2.root ().show();q3.s

29、howFunction ();q3.root ().show();cout endl;return 0;(分数:30.00)_正确答案:(1)x1(root1), x2(root2),nun_of_roots(2) (2)num_of_roots (3)a(x.a),b(x.b),c(x.c) (4)return Root()解析:考点 本题考查 Root类和 Quadratic类,其中涉及常变量、构造函数、成员函数和 const函数。 解析 (1)主要考查考生对构造函数的掌握,应使用成员列表初始化。 (2)主要考查考生对 switch语句的掌握,使用 num_of_roots判断根的信息。

30、(3)主要考查考生对构造函数的掌握,应使用成员列表初始化。 (4)主要考查考生对成员函数的掌握,结合数学知识可知,当 deha0.0 时,方程式无解。三、B综合应用题/B(总题数:1,分数:40.00)3.请使用 VC6或使用答题菜单打开考生文件夹 proj3下的工程 proj3,其中包含了日期类 Date、人员类Person及排序函数 sortByAge和主函数 main的定义。其中 Person的成员函数 compareAge的功能是:将当前 Person对象和参数 Person对象进行比较,若前者的年龄大于后者的年龄,则返回一个正数;若前者的年龄小于后者的年龄,则返回一个负数;若年龄相同

31、则返回 0。注意,出生 13期越大,年龄越小。请编写成员函数 compareAge。在 main函数中给出了一组测试数据,此时程序的正确输出结果应为: 按年龄排序 排序前: 张三 男 出生日期:1978 年 4月 20日 王五 女 出生日期:1965 年 6月 3日 杨六 女 出生日期:1965 年 9月 5日 李四 男 出生日期:1973 年 5月 30日 排序后: 张三 男 出生日期:1978年 4月 20日 李四 男 出生日期:1973 年 5月 30日 杨六 女 出生日期:1965 年 9月 5日 王五 女 出生日期:1965 年 6月 3日 要求: 补充编制的内容写在“/*333*”

32、与“/*666*”之间,不得修改程序的其他部分。 注意:程序最后将结果输出到文件out.dat中。输出函数 WriteToFile已经编译为 obj文件,并且在本程序中调用。 /Person.h #include iostream using namespace std; class Date /日期类 int year,month, day; /年、月、日 public: Date(int year, int month, int day):year(year), month(month), day(day) int getYear()const return year; int getMo

33、nth () const return month; int getDay()const return day; ; class Person /人员类 char name14; /姓名 boom is male; /性别,为 true时表示男性 Date birth date; /出生日期 public: Person (char * name, bool is_male, Date birth_date); const char * getName () const return name; bool isMale()const return is male; Date getBirthd

34、ate () const return birth date; int compareAge (const Person void show()const; ; void sortByAge(Personps, int size); void writeToFile(char * ); /main.cpp #include“Person.h“ Person:Person(char * name, boom is_male, Date birth_date):is_male(is_male),birth_date(birth_date) strcpy(this-name, name); int

35、Person:compareAge(const Person cout name “ /显示姓名 (is_male? “男“ : “女“) /显示性别(“男“或“女“) “出生日期:“ /显示出生日期 birth_date.getYear () “年“ birthdate.getMonth() “月“ birthdate.getDay() “日“; void sortByAge(Person ps, int size) for(int i=0; isize-1; i+) / int m=i; for (int j=i+1; jsize; j+) if (pareAge (psm)0) m=j;

36、 if (mi) Person p=psm; psm=psi; psi=p; int main() Person staff = Person (“张三“, true, Date (1978, 4, 20), Person (“王五“, false, Date (1965, 6, 3), Person(“杨六“, false, Date (1965, 9, 5), Person (“李四“, true, Date (1973, 5, 30) ; const int size = sizeof (staff)/sizeof(staff0); int i; cout “按年龄排序“ endl “排

37、序前:“; for(i=0; isize; i+) staffi. show (); sortByAge (staff, size); cout endl endl “排序后:“; for(i=0; isize; i+) staffi. show (); cout endl; writeToFile (“); return 0; (分数:40.00)_正确答案:(int n=0; /给变量 n赋为 0 n=p.birth_date.getYear()-birth_ date.getYear(); /把参数对象 p的年减当前对象 person年,结果赋值给 n if(n!=0) return n

38、; /如果 n不等零, 则返回 n n=p.birth_date.getMonth()-birth date.getMonth(); /把参数对象 p的月数减当前对象 person的月数,结果赋值给 n if(n!=0) return n; /如果 n不等于零,则返回 n return p.birth_date.getDay()-birth_date.getDay(); /返回参数对象 p的日减当前对象 person日的结果)解析:考点 主要考查的是 Date类和 Person类,其中涉及构造函数、const 函数和成员函数。 解析 compareAge函数的功能是比较年龄大小并排序,先比较年,再比较月,最后比较日。

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 考试资料 > 职业资格

copyright@ 2008-2019 麦多课文库(www.mydoc123.com)网站版权所有
备案/许可证编号:苏ICP备17064731号-1