计算机类
公务员类
工程类
语言类
金融会计类
计算机类
医学类
研究生类
专业技术资格
职业技能资格
学历类
党建思政类
计算机等级考试(NCRE)
全国计算机应用水平考试(NIT)
计算机软件水平考试
计算机等级考试(NCRE)
全国高校计算机等级考试CCT
行业认证
信息素养
计算机等级考试二级
计算机等级考试一级
网络工程师(计算机等级考试四级)
计算机等级考试二级
数据库工程师(计算机等级考试四级)
计算机等级考试三级
信息安全工程师(计算机等级考试四级)
嵌入式系统开发工程师(计算机等级考试四级)
软件测试工程师(计算机等级考试四级)
C++语言程序设计
Python语言程序设计
WPS Office高级应用与设计
C语言程序设计
C++语言程序设计
Java语言程序设计
Visual Basic语言程序设计
Web程序设计
Access数据库程序设计
MySQL数据库程序设计
Visual FoxPro数据库程序设计
办公软件高级应用
应用题 使用VC6打开考生文件夹下的工程test34_3。此工程包含一个test34_3.cpp,其中定义了表示栈的类stack。源程序中stack类的定义并不完整,请按要求完成下列操作,将程序补充完整。 (1)定义类stack的私有数据成员sp和size,它们分别为整型的指针和变量,其中sP指向存放栈的数据元素的数组,size为栈中存放最后一个元素的下标值。请在注释“//**1**”之后添加适当的语句。 (2)完成类stack的构造函数,该函数首先从动态存储空间分配含有100个元素的int型数组,并把该数组的首元素地址赋给指针sp,然后将该数组的所有元素赋值为0,并将size赋值为-1(size等于-1表示栈为空)。请在注释“//**2**”之后添加适当的语句。 (3)完成类stack的成员函数push的定义。该函数将传入的整型参数x压入栈中,即在size小于数组的最大下标情况下, size自加1,再给x赋值。请在注释“//**3**”之后添加适当的语句。 (4)完成类stack的成员函数pop的定义,该函数返回栈顶元素的值,即在size不等于-1的情况下,返回数组中下标为size的元素的值,并将size减1。请在注释“//**4**”之后添加适当的语句。 程序输出结果如下: the top elem:1 the pop elem:1 the stack is empty 注意:除在指定位置添加语句之外,请不要改动程序中的其他内容。 源程序文件test34_3.cpp清单如下: #include<iostream.h> class stack { //** 1 ** public: stack ( ); bool empty(){return size==-1;} bool full() {return size==99;} void push(int x); void pop(); void top(); }; stack::stack() { //** 2 ** for(int i=0; i<100; i++) *(sp+i)=0; size=-1; } void stack::push(int x) { //** 3 ** cout<<'the stack is full'<<end1; else { size++; *(sp+size) = x; } } void stack::pop() { //** 4 ** cout<<'the stack is empty'<<end1; else { cout<<'the pop elem:'<<*(sp+size)<<end1; size--; } } void stack::top() { if iempty() ) cout<<'the stack is empty'<<end1; else { cout<<'the top elem:'<<*(sp+size)<<end1; } } void main ( ) { stack s; s.push(1); s.top(); s.pop(); s.top(); }
进入题库练习
应用题 请打开考生文件夹下的解决方案文件proj2,该工程中含有一个源程序文件proj2.cpp。其中定义了类Set和用于测试该类的主函数main。类Set是一个用于描述字符集合的类,在该字符集合中,元素不能重复(将“a”和“A”视为不同元素),元素最大个数为100。为该类实现一个构造函数Set(char*s),它用一个字符串来构造一个集合对象,当字符串中出现重复字符时,只放入一个字符。此外,还要为该类实现另一个成员函数InSet(char c),用于测试—个字符c是否在一个集合中,若在,则返回true;否则返回false。 构造函数Set和成员函数InSet的部分实现代码已在文件proj2.cpp中给出,请在标有注释“//TODO:”的行中添加适当的代码,将这两个函数补充完整,以实现其功能。 提示:在实现构造函数时,可以调用InSet函数来判断一个字符是否已经在集合中。 注意:只在指定位置编写适当代码,不要改动程序中的其他内容,也不要删除或移动“//****found****”。 //prcoj2.cpp #inelude<iostream> using namespace std; const int NAXNUM=100; class Set{ private: int num; //元素个数 char setdata[NAXNUM]; //字符数组,用于存储集合元素 public: Set(char*s); //构造函数,用字符串s构造一个集合对象 bool InSet(char c); //判断一个字符c是否在集合中,若在,返回true,否则返回false void Print()const; //输出集合中所有元素 }; Set::Set(char*s) { mum=0; while(*s){ //**********found********** if(______)//TODO:添加代码,测试元素在集合中不存在 //**********found********** ______;//TODO:添加一条语句,加入元素至集合中 s++; } } bool Set::InSet(char c) { for(int i=0; i<num; i++) //**********found********** if(______)//TODO:添加代码,测试元素c是否与集合中某元素相同 //**********found********** ______;//TODO:添加一条语句,进行相应处理 return false; } void Set::Print()const { cout<<'Set elements:'<<endl; for(int i=0; i<num; i++) cout<<setdata[i] <<'; cout<<endl; } int main() { char s[MAXNUM]; cin.getline(s, MAXNUM-1); //从标准输入中读入一行 Set setobj(s); //构造对象setobj setobj.Print();//显示对象setobj中内容 return 0; }
进入题库练习
应用题 请使用VC6或使用【答题】菜单打开proj2下的工程proj2,其中在编辑窗口内显示的主程序文件中定义有类Base和Derived,以及主函数main。程序文本中位于每行“// ****found****”下面的一行内有一处或多处下画线标记,请在每个下画线标记处填写合适的内容,并删除下画线标记。经修改后运行程序,得到的输出应为: sum=55。 注意:只在横线处填写适当的代码,不要改动程序中的其他内容。 #include <iostream> using namespace std; class Base { public: Base(int m1,int m2) { mem1 = m1; mem2 = m2; } int sum() {return mem1 + mem2;} private: int mem1, mem2; //基类的数据成员 }; //派生类Derived从基类Base公有继承 // *******found******* class Derived:______ { public: Derived (int m1, int m2, int m3); //sum函数定义,要求返回mem1、mem2和mem3之和 // *******found******* int sum() {return______ + mem3;} private: int mem3; //派生类本身的数据成员 }; //构造函数的类外定义,要求由m1和m2分别初始化mem1和mem2,由m3初始化mem3 // *******found******* ______Derived (int m1, int m2, int m3): , mem3 (m3) {} // *******found******* int main() { Base a(4,6); Derived b (10,15,20); int sum=a.sum()+b.sum(); cout << 'sum =' << sum << endl; return 0; }
进入题库练习
应用题 请使用VC6或使用【答题】菜单打开proj3下的工程proj3,其中声明了MiniComplex是一个用于表示复数的类。请编写这个operator+运算符函数,以实现复数的求和运算。两个复数的和是指这样一个复数:其实部等于两个复数的实部之和,其虚部等于两个复数的虚部之和。例如,(23+34i)+(56+35i)等于(79+69i)。 要求: 补充编制的内容写在“// *******333*******”与“// *******666*******”之间,不得修改程序的其他部分。 注意:程序最后将结果输出到文件out.dat中。输出函数writeToFile已经编译为obj文件,并且在本程序中调用。 //Minicomplex.h #include <iostream> using namespace std; class MiniComplex //复数类 { public: friend ostream operator << (ostream osObject, const MiniComplex complex) { osObject << '(' << complex.realPart << '+' << complex.imagPart << 'i' << ')'; return osObject; } friend istream operator >> (istream isObject, MiniComplex complex) { char ch; isObject >> complex, realPart >> ch >> complex.imagPart >> ch; return isObject; } MiniComplex (double real = 0, double imag = 0); //构造函数 MiniComplex operator + (const MiniComplex otherComplex) const; //重载运算符+ private: double realPart; //存储实部变量 double imagPart; //存储虚部变量 }; void writeToFile(char *); //main.cpp #include 'MiniComplex.h' MiniComplex::MiniComplex (double real, double imag){realPart=real;imagPart=imag;} MiniComplex MiniComplex::operator+(const MiniComplex otherComplex) const { // ********333******** // ********666******** } int main() { void writeToFile(char * ); MiniComplex num1 (23,34),num2 (56,35); cout << 'Initial Value of Num1 =' << num1 << '\nInitial Value of Num2 =' << num2 << endl; cout << num1 << '+' << num2 << '=' << num1 + num2 << endl; //使用重载的加号运算符 writeToFile (' '); return 0; }
进入题库练习
应用题 使用VC++2010打开考生文件夹下“proj3”文件夹中的工程proj3.sln。阅读下列函数说明和代码,补充空出的代码。函数convert (cha* des,char* str)实现的功能是: (1)如果字符串最后面有空格,则全部删除; (2)转换后的数据放到des,并且指针作为返回值返回。 注意:不能修改程序的其他部分,只能补充convert()函数。 #include <iostream.h> #include <ctype.h> #define MAXLEN 1024 char* convert(char* des,char*str) { } void main() { char dest[MAXLEN]; char *string=' abc def '; cout << string <<'<--' << endl; cout<<convert(dest,string) <<'<--'<<endl; return; }
进入题库练习
应用题 请打开考生文件夹下的解决方案文件proj2,该工程中含有一个源程序文件proj2.cpp。其中定义了类Set和用于测试该类的主函数main。类Set是一个用于描述字符集合的类,在该字符集合中,元素不能重复(将“a”和“A”视为不同元素),元素最大个数为100。为该类实现一个构造函数Set(char*s),它用一个字符串来构造一个集合对象,当字符串中出现重复字符时,只放入一个字符。此外,还要为该类实现另一个成员函数InSet(char c),用于测试—个字符c是否在一个集合中,若在,则返回true;否则返回false。 构造函数Set和成员函数InSet的部分实现代码已在文件proj2.cpp中给出,请在标有注释“//TODO:”的行中添加适当的代码,将这两个函数补充完整,以实现其功能。 提示:在实现构造函数时,可以调用InSet函数来判断一个字符是否已经在集合中。 注意:只在指定位置编写适当代码,不要改动程序中的其他内容,也不要删除或移动“//****found****”。 //prcoj2.cpp #inelude<iostream> using namespace std; const int NAXNUM=100; class Set{ private: int num; //元素个数 char setdata[NAXNUM]; //字符数组,用于存储集合元素 public: Set(char*s); //构造函数,用字符串s构造一个集合对象 bool InSet(char c); //判断一个字符c是否在集合中,若在,返回true,否则返回false void Print()const; //输出集合中所有元素 }; Set::Set(char*s) { mum=0; while(*s){ //**********found********** if(______)//TODO:添加代码,测试元素在集合中不存在 //**********found********** ______;//TODO:添加一条语句,加入元素至集合中 s++; } } bool Set::InSet(char c) { for(int i=0; i<num; i++) //**********found********** if(______)//TODO:添加代码,测试元素c是否与集合中某元素相同 //**********found********** ______;//TODO:添加一条语句,进行相应处理 return false; } void Set::Print()const { cout<<'Set elements:'<<endl; for(int i=0; i<num; i++) cout<<setdata[i] <<'; cout<<endl; } int main() { char s[MAXNUM]; cin.getline(s, MAXNUM-1); //从标准输入中读入一行 Set setobj(s); //构造对象setobj setobj.Print();//显示对象setobj中内容 return 0; }
进入题库练习
应用题 请使用VC6或使用【答题】菜单打开proj3下的工程proj3,其中声明了一个单向链表类sList。sList的成员函数Prepend的功能是在链表头部加入一个新的元素。请编写成员函数Prepend。在main函数中给出了一组测试数据,此时程序的输出应为: B->A-> ### A-> ### A-> ### exiting inner block exiting outer block 注意:只在函数Prepend的“// *******333*******”和“// *******666*******”之间填入若干语句,不要改动程序中的其他内容。 //SList.h struct sListItem { char data; sListItem * next; }; class sList { public: sList(): h(0) {} //0表示空链表 ~sList(); void Prepend (char c); //在链表前端加入元素 void Del(); //删除链表首元素 sListItem * First() const {return h;} //返回链表首元素 void Print() const; //打印链表内容 void Release(); //销毁链表 private: sListItem * h; //链表头 }; void writeToFile (const char *); //main.cpp #include <iostream> #include 'sList.h' using namespace std; sList:: ~sList() { Release(); } void sList::Prepend (char c) { // *******333******* // *******666******* } void sList::Del() { sListItem * temp = h; h = h -> next; delete temp; } void sList::Print() const { sListItem * temp = h; while (temp != 0) //判断是否到达链表尾部 { cout << temp -> data << '->'; temp = temp -> next; } cout << '\n###' << endl; } void sList::Release() { while (h != 0) Del(); } int main() { sList * ptr; { sList obj; obj.Prepend('A'); obj.Prepend('B'); obj.Print(); obj.Del(); obj.Print(); ptr = obj; ptr -> Print(); cout << 'exiting inner block' << endl; } cout << 'exiting outer block' << endl; writeToFile(' '); return 0; }
进入题库练习
应用题 使用VC++6.0打开下的源程序文件3.cpp。其中定义的类不完整,按要求完成下列操作,将类的定义补充完整。每卖出一个水果,则计算水果的重量,还要计算所有卖出水果的总重量以及总个数,同时允许退货,请按照以下的操作,把类补充完整。 (1)定义类TCFruit的私有静态数据成员float型变量AllWeight和int型变量AllNo,请在注释1后添加适当的语句。 (2)完成类TCFruit的带一个float型变量w的构造函数,并把这个w加到AllWeight中,并且AllNo自加。请在注释2后添加适当的语句。 (3)在析构函数中,在AllWeight中减去weight,然后AllNo自减,请在注释3后添加适当的语句。 (4)完成静态成员变量的初始化为0,请在注释4后添加适当的语句。 注意:增加或者修改代码的位置已经用符号表示出来,请不要修改其他的程序代码。 试题程序: #include<iostream.h> class TCFruit { private: float Weight; //********1******** static int AllNO; public: TCFruit(float w) { //********2******** AllWeight+=w; AllNo++; } ~TCFruit() { //********3******** AllWeight-=Weight; } void display() { cout<<'Sell a Fruit with'<<Weight<<'kg'<<endl; cout<<'All sell number:'<<AllNo<<endl; cout<<'All sell weight:'<<AllWeight<<'kg'<<endl<<endl; } }; //********4******** float TCFruit::AllWeight=0.0; int main() { TCFruit Fruit1(1.2); Fruit1.display(); TCFruit Fruit2(2.3); Fruit2.display(); return 0; }
进入题库练习
应用题 使用VC++6.0打开下的源程序文件2.cpp。完成fun函数,使其功能为将两个按小到大排序的数组a和b,复制合并成一个有序整数序列c,其中形参n和m分别是数组a和b的元素个数。 注意:不能修改程序的其他部分,只能修改fun函数。 试题程序: #include<iostream.h> void fun(int a[], int n, int b[], int m, int*c) { } void main() { int A[]={3, 5, 7, 9, 11, 18, 21}; int B[]={6, 15, 19, 21, 39); int C[25], i; for(i=0; i<25; i++)C[i]=0; cout<<'A[]='; for(i=0; i<7; i++) cout<<A[i]<<','; cout<<endl; cout<<'B[]='; for(i=0; i<5; i++) cout<<B[i]<<','; cout<<endl; fun(A, 7, B, 5, C); cout<<'C[]='; for(i=0; i<12; i++) cout<<C[i]<<','; cout<<endl; return; }
进入题库练习
应用题 请打开考生文件夹下的解决方案文件proj2,此工程中含有一个源程序文件proj2.cpp。函数char *GetNum(char *src,char *buf)从src开始扫描下一个数字字符序列,并将其作为一个字符串取出放入字符串空间bur中。函数返回扫描的终止位置,如果返回NULL表示没有扫描到数字字符序列。 运行程序时,如果输入的一行字符序列是 ABC012XYZ378MN274WS 则输出为: Digit string 1 is 012 Digit string 2 is 378 Digit string 3 is 274 注意:只在横线处编写适当代码,不要删除或移动“//****found****”。 //proj2.cpp #include<iostream> using namespace std; char *GetNum(char *src,char *buf) { while($src!='\0') { if(isdigit(*src))break; src++; } if(*src=='\0') //********found******** ______; while(*src!='\0' isdigit(*src)) { //********found******** ______; buf++; src++; } *buf='\0'; return src; } int main() { char str[100],digits[20]; cin.getline(str,100); char *p=str; int i=1; while((p=GetNum(p,digits))!=NULL) { cout<<'Digit string'<<i<<'is'<<digits<<endl; //********found******** ______; } return 0; }
进入题库练习
应用题 请使用VC6或使用[答题]菜单打开考生文件夹proj2下的工程proj2,其中包含抽象类Shape的声明,以及在此基础上派生出的类Rectangle和Circle的声明,二者都有计算对象面积的函数GetArea()和计算对象周长的函数GetPerim()。程序中位于每个“//****found****”之后的一行语句有错误,请加以改正。改正后程序的输出结果应该是: The area of the Circle is 78.5 The perimeter of the Circle is 31.4 The area of the Rectangle is 24 The perimeter of the Rectangle is 20 注意:只在横线处填写适当的代码,不要改动程序中的其他内容,也不要删除或移动“//****found****”。 #include <iostream> using namespace std; class Shape { public: Shape() {} ~Shape() {} //********** found********** ______float GetArea () =0; //********** found********** ______float GetPerim () =0; }; class Circle : public Shape { public: Circle (float radius): itsRadius (radius) {} ~Circle() {} float GetArea () { return 3.14 * itsRadius * itsRadius; } float GetPerim () {return 6.28 * itsRadius;} private: float itsRadius; }; class Rectangle : public Shape { public: //********** found********** Rectangle(float len, float width): ______{}; ~Rectangle(){}; virtual float GetArea() { return itsLength * itsWidth; } float GetPerim () { return 2 * itsLength + 2 * itsWidth;} virtual float GetLength() { return itsLength; } virtual float GetWidth () { return itsWidth; } private: float itsWidth; float itsLength; }; int main() { //********** found********** ______ sp = new Circle(5); cout << 'The area of the Circle is' << sp->GetArea () << endl; cout << 'The perimeter of the Circle is' << sp->GetPerim () << endl; delete sp; sp = new Rectangle(4, 6); cout << 'The area of the Rectangleis' << sp->GetArea() << endl; cout << 'The perimeter of the Rectangle is' << sp -> GetPerim () <<endl; delete sp; return 0; }
进入题库练习
应用题 请使用VC6或使用【答题】菜单打开proj2下的工程proj2,此工程中声明的Array是一个表示数组的类。一个Array对象可以包含多个整型元素。Array的成员说明如下: 成员函数add用于向数组的末尾添加一个元素; 成员函数get用于获取数组中指定位置的元素; 数据成员a表示实际用于存储数据的整型数组; 数据成员size表示数组的容量,数组中的元素个数最多不能超过size; 数据成员num表示当前数组中的元素个数。 SortedArray是Array的派生类,表示有序数组。SortedArray重新定义了Array中的add函数,以确保有序数组中的元素始终按照升序排列。请在程序中的横线处填写适当的代码,然后删除横线,以实现上述类定义。此程序的正确输出结果应为: 10,9,8,7,6,5,4,3,2,1, 1,2,3,4,5,6,7,8,9,10, 注意:只在横线处填写适当的代码,不要改动程序中的其他内容,也不要删除或移动“// ****found****”。 #include <iostream> using namespace std; class Array { public: Array(unsigned int s) { size = s; num= 0; a = new int[s]; } virtual ~Array() {delete[] a;} virtual void add(int e) { if (num< size) { // **********found********** ______ num ++; } } int get(unsigned int i) const { if (i < size) return a[i]; return 0; } protected: int * a; unsigned int size, num; }; class SortedArray : public Array { public: // **********found********** SortedArray(unsigned int s) :______{} virtual void add(int e) { if (num >= size) return; int i =0, j; while (i <num) { if (e < a[i]) { for (j =num; j > i; j--) { // **********found********** ______; } // **********found********** ______; break; } i++; } if (i == num) a[i] = e; num ++; } }; void fun(Array a) { int i; for (i = 10; i >= 1; i--) { a.add (i); } for (i = 0; i < 10; i++) { cout << a.get(i) << ', '; } cout << endl; } int main() { Array a(10); fun(a); SortedArray sa(10); fun(sa); return 0; }
进入题库练习
应用题 使用VC++6.0打开下的源程序文件3.cpp,其中定义了类BA、PA1和PA2,其中PA1类由BA类公有派生,PA2类由PA1类公有派生。上述3个类的定义并不完整,请按要求完成下列操作,将程序补充完整。 程序输出结果如下: 10 5 10 5 7 (1)定义类BA的构造函数,该构造函数有一个整型的参数m,在构造函数中将m赋值给数据成员a。请在注释1之后添加适当的语句。 (2)定义类PA1的构造函数,该构造函数有两个整型的参数m和n,在构造函数中将m赋值给数据成员b,将n作为基类BA构造函数的参数值传入。请在注释2之后添加适当的语句。 (3)定义类PA2的构造函数,该构造函数有3个整型的参数m、n和k,在构造函数中请将m赋值给数据成员c,将n和k分别赋值给基类PA1构造函数的参数m和n。请在注释3之后添加适当的语句。 (4)完成类PA2的成员函数show的定义,该函数调用基类成员函数,输出基类私有成员a、b及类PA2自身的数据成员C的值,上述3个值在输出时用空格隔开。请在注释4之后添加适当的语句。 注意:除在指定位置添加语句之外,请不要改动程序中的其他内容。 试题程序: #include<iostream.h> class BA { int a; public: //********1******** int geta()(return a;} }; class PA1:public BA { int b; public: //********2******** int getb(){return b;) }; class PA2:public PA1 { int c; public: //********3******** void show() { //********4******** } }; void main() { PA2 a(7,5,10); cout<<a.geta()<<endl; cout<<a.getb()<<endl; a.show(); }
进入题库练习
应用题 请使用【答题】菜单命令或直接用VC6打开考生文件夹下的工程proj3,其中声明的是一个人员信息类,补充编制程序,使其功能完整。在main函数中给出了一组测试数据,此种情况下程序的输出应该是:Zhang 20 Tsinghua。 注意:只能在函数address_change的“// ********333********”和“// ********666********”之间填入若干语句,不要改动程序中的其他内容。 程序最后将结果输出到文件out.dat中。输出函数writeToFile已经编译为obj文件,并且在本程序中调用。 //proj3.h #include <iostream> #include <string> using namespace std; class Person{ char name[20]; int age; char * address; public: Person(){ age = 0;address = 0;} void name_change (char *_name); //名字修改函数 void age_change(int_age); //年龄修改函数 void address_change (char *_add); //地址修改函数 void info_display(); //人员信息显示 ~Person(); //析构函数 }; void writeToFile(const char * path); proj3.cpp #include <iostream> #include <string> #include 'proj3.h' using namespace std; void Person::name_change(char*_name) { strcpy(name, _name); } void Person::age_change(int _age) { age = _age; } void Person::address _change (char * add) { if (address!=NULL) delete[]address; // ********333******** // ********666******** } void Person::info_display(){ cout << name << '\t' << age << '\t'; if(address!=NULL) cout << address << endl; cout << endl; } Person::~Person(){ if(address!=NULL) delete[] address; } void main() { Person p1; p1.name_change('Zhang'); p1.age_change(20); p1.address_change('Tsinghua University'); p1.address_change('Tsinghua'); p1.info_display(); writeToFile(' '); }
进入题库练习
应用题 请使用VC6或使用【答题】菜单打开proj3下的工程文件proj3,该文件中定义了用于表示日期的类Date、表示人员的类Person和表示职员的类Staff;程序应当显示: 张小丽123456789012345 但程序中有缺失部分,请按以下提示把缺失部分补充完整: (1)在“// **1** ****found****”的下方是析构函数定义中的语句,它释放两个指针成员所指向的动态空间。 (2)在“//**2** ****found****”的下方是rename函数中的一个语句,它使指针name指向申请到的足够容纳字符串new_name的空间。 (3)在“// **3** ****found****”的下方是构造函数定义的一个组成部分,其作用是利用参数表中前几个参数对基类Person进行初始化。 注意:只在指定位置编写适当代码,不要改动程序中的其他内容,也不要删除或移动“****found****”。填写的内容必须在一行中完成,否则评分将产生错误。 //proj3.cpp #include <iostream> using namespace std; class Person { char * idcardno; //用动态空间存储的身份证号 char * name; //用动态空间存储的姓名 bool ismale; //性别:true为男,false为女 public: Person(const char * pid, const char * pname, bool pmale); ~Person() { // **1** *******found******* ______; } const char * getIDCardNO() const{return idcardno;} const char * getName() const{return name;} void rename(const char * new_name); bool isMale() const{return is-male;} }; class Staff: public Person { char * department; double salary; public: Staff(const char * id_card_no, const char * p_name, bool is_male, const char * dept, double sal); ~Staff() {delete [] department;} const char * getDepartment() const{return department;} void setDepartment(const char * d); double getSalary() const{return salary;} void setSalary(double s) {salary = s;} }; Person::Person (const char * id_card_no, const char * p_name, bool is_male):ismale(is_male) { idcardno = new char [strlen(id_card_no)+1]; strcpy (idcardno, id_card_no); name = new char [strlen (p_name)+1]; strcpy(name,p_name); } void Person::rename (const char * new_name) { delete []name; // **2** *******found******* ______; strcpy(name,new_name); } Staff::Staff(const char * id_card_no, const char * p_name, bool is male, // **3** *******found******* const char * dept, double sal):______ { department = new char [strlen(dept) +1]; strcpy(department,dept); salary =sal; } void Staff::setDepartment(const char * dept) { delete []department; department = new char [strlen(dept) +1]; strcpy(department,dept); } int main() { Staff Zhangsan('123456789012345','张三', false,'人事部',1234.56); Zhangsan.rename('张小丽'); cout << Zhangsan.getName() << Zhangsan.getIDCardNO() << endl; return 0; }
进入题库练习
应用题 使用VC++6.0打开下的源程序文件3.cpp,其中定义了类BA、PA1和PA2,其中PA1类由BA类公有派生,PA2类由PA1类公有派生。上述3个类的定义并不完整,请按要求完成下列操作,将程序补充完整。 程序输出结果如下: 10 5 10 5 7 (1)定义类BA的构造函数,该构造函数有一个整型的参数m,在构造函数中将m赋值给数据成员a。请在注释1之后添加适当的语句。 (2)定义类PA1的构造函数,该构造函数有两个整型的参数m和n,在构造函数中将m赋值给数据成员b,将n作为基类BA构造函数的参数值传入。请在注释2之后添加适当的语句。 (3)定义类PA2的构造函数,该构造函数有3个整型的参数m、n和k,在构造函数中请将m赋值给数据成员c,将n和k分别赋值给基类PA1构造函数的参数m和n。请在注释3之后添加适当的语句。 (4)完成类PA2的成员函数show的定义,该函数调用基类成员函数,输出基类私有成员a、b及类PA2自身的数据成员C的值,上述3个值在输出时用空格隔开。请在注释4之后添加适当的语句。 注意:除在指定位置添加语句之外,请不要改动程序中的其他内容。 试题程序: #include<iostream.h> class BA { int a; public: //********1******** int geta()(return a;} }; class PA1:public BA { int b; public: //********2******** int getb(){return b;) }; class PA2:public PA1 { int c; public: //********3******** void show() { //********4******** } }; void main() { PA2 a(7,5,10); cout<<a.geta()<<endl; cout<<a.getb()<<endl; a.show(); }
进入题库练习
应用题 请使用VC6或使用【答题】菜单打开proj3下的工程proj3,其中声明IntSet是一个用于表示正整数集合的类。IntSet的成员函数Intersection的功能是求当前集合与另一个集合的交集。请完成成员函数Intersection。在main函数中给出了一组测试数据,此时程序的输出应该是: 求交集前: 1 2 3 5 8 10 2 8 9 11 30 56 67 求交集后: 1 2 3 5 8 10 2 8 9 11 30 56 67 2 8 要求: 补充编制的内容写在“// *******333*******”与“// *******666*******”之间,不得修改程序的其他部分。 注意:程序最后将结果输出到文件out.dat中。输出函数writeToFile已经编译为obj文件,并且在本程序中调用。 //Intset.h #include <iostream> using namespace std; const int Max=100; class IntSet { public: IntSet() //构造一个空集合 { end = -1; } IntSet (int a[], int size) //构造一个包含数组a中size个元素的集合 { if (size >= Max) end = Max - 1; else end = size - 1; for (int i = 0; i <= end; i ++) element[i] = a[i]; } bool IsMemberOf (int a) //判断a是否为集合中的一个元素 { for (int i = 0; i <= end; i ++) if (element[i] == a) return true; return false; } int GetEnd() {return end;} //返回最后一个元素的下标 int GetElement (int i) {return element[i];} //返回下标为i的元素 IntSet Intersection (IntSet set); //求当前集合与集合set的交 void Print () //输出集合中的所有元素 { for(int i=0;i<=end;i++) if((i+1)% 20==0) cout << element[i] << endl; else cout << element[i] << ''; cout << endl; } private: int element[Max]; int end; }; void writeToFile (const char *); //main.cpp #include 'IntSet.h' IntSet IntSet::Intersection(IntSet set) { int a[Max],size=0; // *******333******* // *******666******* return IntSet(a,size); } int main() { int a[] = {1,2,3,5,8,10}; int b[] = {2,8,9,11,30,56,67}; IntSet set1 (a, 6), set2 (b, 7), set3; cout << '求交集前:' << endl; set1.Print(); set2.Print(); set3.Print(); set3 = set1.Intersection (set2); cout << endl << '求交集后:' << endl; set1.Print(); set2.Print(); set3.Print(); writeToFile (' '); return 0; }
进入题库练习
应用题 使用VC++6.0打开下的源程序文件3.cpp。其中定义的类不完整,按要求完成下列操作,将类的定义补充完整。 (1)完成类TC1的成员函数seta的定义,定义seta对象,x为int 类型,请在注释1后添加适当的语句。 (2)完成类TC3多继承类TC1和TC2的定义,请在注释2后添加适当的语句。 (3)定义类TC3中的私有成员c为int型,请在注释3后添加适当的语句。 (4)完成setc中对基类的变量a的赋值,请在注释4后添加适当的语句。 注意:增加或者修改代码的位置已经用符号表示出来,请不要修改其他的程序代码。 试题程序: #include<iostream.h> class TC1 { int a; public: //********1******** { return a=x; } void showa() { cout << a << endl; } }; class TC2 { int b; public: void setb(int x) { b=x; } void showb() { cout << b << endl; } }; //********2******** { private: //********3********public: void setc(int x,int y,int z) { c=z; //********4******** setb(y); } void showc() { cout <<c << endl; } }; void main() { TC3 c; c.seta(5); c.showa(); c.setc(5,7,4); c.showc(); }
进入题库练习
选择题 有如下程序: #include<iostream> #include<iomanip> using namespace std; int main(){ cOUt<<setw(10)<<serfill('x')<<setprecision(8)<<left; cout<<12.3456793<<______<<98765; return 0; } 若程序的输出是12.345679x98765xxxxx,则划线处缺失的部分是______。
进入题库练习
选择题 下列有关C++流的叙述中,错误的是______。
进入题库练习