一、改错题
使用VC6打开考生文件夹下的工程kt13_1,此工程包含一个源程序文件kt13_1.cpp,但该程序运行有问题,请改正程序中的错误,使该程序的输出结果为:
5
5
源程序文件kt13_1.cpp清单如下:
#include classA{ public: /*****************found*****************/ staticintn=1; A(){n++;}; ~A(){n--;}; }; /*****************found*****************/ intn=0; intmain(){ Aa; Ab[3]; A*c=newA; c=&a; /*****************found*****************/ cout< 【参考答案】 (1)将static int n=1;改为:static int n; (2)将int n=0;改为:int A::n=0; (3)将cout< (1)在类的声明中只能对静态数据成员进行引用性声明,不能进行静态数据成员初始化; (2)由于静态数据成员是类的成员,所以在初始化时必须限定它所属的类; (3)c为类的对象指针,访问类成员函数时使用符号“->”,而不能用“.”。 请编写一个函数sortnum(intnum),参数num是一个三位的整数,该函数将num的百位、十位和个位的数字进行重排,并返回由上述的三个数字组成的最大的三位数。 注意:部分源程序已存在文件kt13_2.cpp中。 如输入456后,输出结果如下: 654 请勿修改主函数main和其他函数中的内容,仅在函数sortnum的花括号中填写若干语句。 文件kt13_2.cpp的内容如下: #include intsortnum(intnum) { } voidmain() { intnum; intresult=0; cout<<"请输入一个三位数"; cin>>num; cout< int number[3],i,j,temp; for(i=0;i<3;i++) { number[i]=num; num=num/10; } for (i=0;i<2;i++) { for (j=i+1;j<3;j++) if (number[j]<=number[i]) { temp=number[j]; number[j]=number[i]; number[i]=temp; } } num=number[2]*100+number[1]*10+number[0]; return num; 【试题解析】 本题主要考查对基本控制结构和数组的访问,以及根据实际需要建立模型,对数字进行排序的能力,答案中采用的是冒泡排序法。请注意程序中数组下标的范围和两层for循环嵌套中循环变量的取值情况。 使用VC6打开考生文件夹下的工程kt13_3。此工程包含一个kt13_3.cpp,其中定义了类Person,但该类的定义并不完整。请按要求完成下列操作,将程序补充完整。 (1)定义类Person的私有数据成员forename、 surname和money,forename和surname都是char型的指针数据,money是double型的 数据。请在注释“//**1**”之后添加适当的语句。 (2)完成类Person的带三个参数的构造函数Person(char*f,char*s,doublem),分别为forename和surname申请新的空间来存储参数f和s指针指向的内容,注意空间的大小,最后把参数m的值赋给money,请在注释“//**2**”之后添加适当的语句。 (3)完成类Person的析构函数的定义,把forename和surname指向的空间释放,请在注释“//**3**”之后添加适当的语句。 (4)完成类Person的成员函数display的定义,使其以格式"fornamesurnamehasmoney"的形式输出内容,请在注释“//**4**”之后添加适当的语句。 注意:除在指定位置添加语句之外,请不要改动程序中的其他内容。 输出结果如下: RichardBerkhas1000.56 Pressanykeytocontinue 源程序文件kt13_3.cpp清单如下: #include #include classPerson { private: //**1** doublemoney; public: Person(char*f,char*s,doublem); ~Person(); voiddisplay(); }; Person::Person(char*f,char*s,doublem) { //**2** strcpy(forename,f); surname=newchar[strlen(s)+1]; strcpy(surname,s); money=m; } Person::~Person() { //**3** } voidPerson::display() { //**4** } voidmain() { Personp("Richard","Berk",1000.56); p.display(); } 【参考答案】 (1)char *forename; char *surname; (2)forename = new char[strlen(f)+1]; (3)delete []forename; delete []surname; (4)cout
二、简单应用题
三、综合应用题