简答题 | 请使用【答题】菜单命令或直接用VC6打开考生文件夹下的工程prog3,其中声明了ValArray类,该类在内部维护一个动态分配的整型数组。ValArray类的复制构造函数应实现对象的深层复制。请编写ValArray类的复制构造函数。在main函数中给出了一组测试数据,此种情况下程序的输出应该是: ValArray vl={1,2,3,4,5} ValArray v2={1,2,3,4,5} 要求: 补充编制的内容写在“//*********333*********”与“//*********666*********”之间,不得修改程序的其他部分。 注意:程序最后将结果输出到文件out.dat中。输出函数write To File已经编译为boj文件,并且在本程序中调用。 //ValArray.h #include using namespace std; class ValArray{ int *v: int size; public: ValArray(const int * P,int n):size(n) { v=new int[size]; for(int i=0;i<SIZE;I++)&NBSP;&NBSP;&NBSP; < p v[i]="P[i];"> |
查看答案 |
简答题 | 请使用VC6或使用【答题】菜单打开考生文件夹projl下的工程projl,该工程含有一个源程序文件pn,jl.cpp。其中位于每个注释“//ERROR 木}}水found}}水木”之后的一行语句存在错误。请改正这些错误,使程序的输出结果为: The value is 10 注意:只修改注释“//ERROR **** found****”的下一行语句,不要改动程序中的其他内容。 //pmjl.cpp #include using namespace std; class MyClass{ int value; public: //ERROR********found********* void MyClass(int val):value(val){} int GetValue()const{return value;} void SetValue(int val); }; //ERROR********found******** inline void SetValue(int val){value=val;} int main() MyClass obj(O); obj.SetValue(10); //ERROR********found********下列语句功能是输出obj的成员value的值 tout<<”The value is”<<OBJ.VALUE< return 0; } |
查看答案 |
简答题 | 请使用VC6或使用【答题】菜单打开考生文件夹proj2下的工程proj2,其中有矩阵基类MatrixBase、矩阵类Matrix和单位阵UnitMatrix的定义,还有main函数的定义。请在横线处填写适当的代码并删除横线,以实现上述类定义。此程序的正确输出结果应为: 1 2 3 4 5 2 3 4 5 6 3 4 5 6 7 1 0 0 0 0 0 0 1 0 0 0 0 0 0 1 0 0 0 0 0 0 1 0 0 0 0 0 0 1 0 0 0 0 0 0 1 注意:只能在横线处填写适当的代码,不要改动程序中的其他内容,也不要删除或移动“//t+++found母 ***”。 #nClude using namespaCe std; //矩阵基础类,一个抽象类 Class MatrixBase{ int rows,Cols; publiC: MatrixBase(int rows,int Cols):roWS(rows),Cow(Cols){} int getRows()Const{retum rows;}//矩阵行数 int getCols()Const{return Cols;}//矩阵列数 virtual double getElement(int r,int C)Const=0;//取第i个元素的值 void show()Const{//分行显示矩阵中所有元素 for(int i=0;i<ROWS;I++){&NBSP;&NBSP;&NBSP; for(int j=0;j<COLS;J++)&NBSP;&NBSP;&NBSP; } <<””; Cout<< **********found********** /> } }; //矩阵类 Class Matrix:publiC MatfixBase{ double*val; publiC: //**********found********** Matrix(int rows,int Cols,double in[]=NULL):——{ //**********found********** val=; for(int i=0:i<ROWS*COLS;I++) val[i]=(m==NULL?0.0:Ill[i]); } 一Matrix(){delete[]val;} double getElement(int r,int C)Const{retum val[r*getCols()+C];} }; //单位阵(主对角线元素都是l,其余元素都是0的方阵)类 Class UnitMatrix:publiC MatrixBase{ publiC: UnitMatrix(int rOWS):MatrixBase(rows,rows){} //单位阵行数列数相同 double getElement(int r,int C)Const{ //**********found********** if(_____)retum l.0; retum 0.0; } }; int main(){ MatrixBase*m; double d[][5]={{1,2,3,4,5},{2,3,4,5,6},{3,4,5,6,7}}; ITI=new Matrix(3,5,(double*)d); m→show(); delete m; Cout< m=new UnitMatrix(6); Ill→show(); delete m; retum0; } |
查看答案 |
简答题 | 请使用VC6或使用【答题】菜单打开考生文件夹proj3下的工程proj3,其中声明的CDeepCopy是一个用于表示矩阵的类。请编写这个类的赋值运算符成员函数0perator=,以实现深层复制。 要求: 补充编制的内容写在“//************333************”与“//****************666*************”之间。不得修改程序的其他部分。 注意:程序最后将结果输出到文件out.dat中。输出函数writeToFile已经编译为obj文件,并且在本程序中调用。 //CDeepCopy.h #include #include using namespace std; class CDeepCopy { public: int n;//动态数组的元素个数 int *p;//动态数组首地址 CDeepCopy(int); ~CDeepCopy(); CDeepCopy&operator=(const CDeepCopy&r);//赋值运算符函数 }; void writeToFile(char}); //main.cpp #include”CDeepCopy.h” CDeepCopy::一CDeepCopy(){delete[]P;} CDeepCopy::CDeepCopy(int k){n=k;p=new int[n];}//构造函数实现 CDeepCopy&CDeepCopy::0perator=(const CDeepCopy&r)//赋值运算符函数实现 { //***********333********* //***********666*********** } int main() { CDeepCopy a(2),d(3); a.p[O]=1;d.p[O]=666;//对象a,d数组元素的赋值 { CDeepCopy b(3);//调用赋值运算符函数 a.p[O]=88;b=a; cout< } cout< cout<<”d fade away;\n”; cout< writeToFile(””); return 0; } |
查看答案 |
简答题 | 请使用VC6或使用【答题】菜单打开考生文件夹projl下的工程projl,此工程中包含一个源程序文件main.cpp,其中有类Book(“书”)和主函数main的定义。程序中位于每个“//ERROR****found****”下的语句行有错误,请加以改正。改正后程序的输出结果应该是: 书名:C++语句程序设计总页数:299 已把“c++语言程序设计”翻到第50页 已把“c++语言程序设计”翻到第51页 已把“c++语言程序设计”翻到第52页 已把“c++语言程序设计”翻到第51页 已把书合上。 当前页:0 注意:只修改每个“//ERROR ***found***”下的那一行,不要改动程序中的其他内容。 #include using namespace std; class Book{ char*title; int num—pages;//页数 int cur_page;//当前打开页面的页码,0表示书未打开 public: //ERROR***********found*********** Book(const char*theTitle,int pages)num_pages(pages) { title=new char[strlen(theTitle)+1]; strepy(title,theTitle); cout<<ENDL<<”书名:”<<TITLE <<”总页数:”< } ~Book(){delete[]title;} bool isClosed()const{return cur_page==0;} //书合上时返回true,否则返回false bool isOpen()const{return!isClosed();}//书打开时返回true,否则返回false int numOfPages()const{return num_pages;}//返回书的页数 int currentPage()const{return cur_page;}//返回打开页面的页码 //ERROR***********found*********** void openAtPage(int page_no)const{ //把书翻到指定页 cout< i“page_nohum_pages){ tOUt<<”无法翻到第”< ClOSe(); } else{ cur_page=page_n0; tout<<”已把“"<<TIDE<<"”翻到第"< } } void openAtPrevPage(){openAtPage(cur page—1);{//把书翻到上一页 void openAtNextPage(){openAtPage(cur_page+1);}//把书翻到下一页 void close(){//把书合上 tout< if(isClosed()) tout<<"书是合上的。"; else{ //ERROR**********found********** num_pages=0; cout<<”已把书合上。”; } cOut< } }; int main(){ Book book(”C++语言程序设计”,299); book.openAtPage(50); book.openAtNextPage(); book.openAtNextPage(); book.openA.tPrevPage(); book.close(); tout<<”当前页:”<<BOOK.CURRENTPAGE()< return 0: } |
查看答案 |
简答题 | 请使用VC6或使用【答题】菜单打开考生文件夹proj2下的工程proj2,该工程中包含一个程序文件main.cpp,其中有日期类Date、人员类Person及排序函数sortByName和主函数main的定义。请在程序中的横线处填写适当的代码并删除横线,以实现上述类定义和函数定义。此程序的正确输出结果应为: 按姓名排序 排序前: 张三 男 出生日期:1978年4月20日 王五 女 出生日期:1965年8月3日 杨六 女 出生日期:1965年9月5日 李四 男 出生日期:1973年5月30日 排序后: 李四 男 出生日期:1973年5月30日 王五 女 出生日期:1965年8月3日 杨六 女 出生日期:1965年9月5日 张三 男 出生日期:1978年4月20日 注意:只能在横线处填写适当的代码,不要改动程序中的其他内容,也不要删除或移动“//****found****”。 #include 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 name[14];//姓名 bool is—male;//性别,为true时表示男性 Date birth—date;//出生日期 public: Person(char*name,bool is—male,Date birth_date) //***************found*************** :—————— { { strcpy(this一>name,name); } const char * getName()const{return name;} bool isMale()const{return is—male;} Date getBirthdate()const{return birth—date;} //利用strcmp()函数比较姓名,返回一个正数、0或负数,分别表示大于、等于、小于 int compareName(const Person&p)const{ //***************found***************** ————} void show(){ cout< cout<<NAME<<”<<(IS_MALE?”男”:”女”)<<”<<”出生日期:”<<BIRTH—DATE.GETYEAR()< //**************found************** __________________________//显示出生月 << “birth—date.getDay()<<”日”;//显示出生日 } }; void sortByName(Person ps[],int size){ //将人员数组按姓名排列为升序 for(int i=0;i<SIZE一1;I++){ //采用选择排序算法 int m=i; for(int j=i+1;j<SIZE;J++) if(ps[j].eompareName(ps[m])<0) m=j; if(m>i){ Person P=ps[m]; ps[m]=ps[i]; ps[i]=p; } } } int main(){ Person staff[]={ Person(”张三”,true,Date(1978,4,20)), Person(”王五”,false,Date(1965,8,3)), Person(”杨六”,false,Date(1965,9,5)), Person(”李四”,tme,Date(1973,5,30)) }; const int size=sizeof(staff)/sizeof(staff[0]); int i; eout<<ENDL< cout<<ENDL< for(i=0;i sortByName(staff,size); cout<<ENDL<<ENDL< for(i_0;i cout< return 0; { |
查看答案 |
简答题 | 请使用VC6或使用【答题】菜单打开考生文件夹prosS下的工程pr093,其中包含了类TaxCaleulator(“个税计算器”)和主函数main的定义。创建“个税计算器”需要接收税率表信息和起征额信息。在main函数中,通过两个数组创建了如下的税率表: 利用这个税率表创建“个税计算器”时,假定起征额为2 000元(即不超过2 000元的所得不征收个人所得税)。请补充完成计算应纳个人所得税额的成员函数getTaxPayable,其中的参数income为月收入。此程序的正确输出结果应为: 月收入为800元时应缴纳个人所得税0元 月收入为l 800元时应缴纳个人所得税0元月收入为2 800元时应缴纳个人所得税 55元 月收入为3 800元时应缴纳个人所得税l55元 月收入为4 800元时应缴纳个人所得税295元月收入为5 800元时应缴纳个人所得税455元 注意:只能在函数9etTaxPayable中的“//**********333**********”和“//**********666**********”之间 填人若干语句,不要改动程序中的其他内容。 //Tax Calculator.h #include #include using flamespace std; class TaxCalculator{ public: TaxCalculator(double the—limits[],double the_rates[],int the—length,double the_threshold) :lower_limits(new double[the_length]),rates(new double[the—length]), list_len(the_length),threshold(the—threshold){ for(int i=0;i<LIST—LEN;I++){ lower_limits[i]=the_limits[i]; rates[i]=the_rates[i]; } f —TaxCalculator(){delete[]lower_limits;delete[]rates;} double getTaxPayable(double income)eonst;//返回指定月收入的应纳个人所得税额 void showTaxPayable(double income)const;//显示指定月收入的应纳个人所得税额 private: double$lower—limits;//适用收入段下限 double *rates; //适用税率 int list—len;//税率表项数 double threshold; //起征额 }; void writeToFile(consl char * path); //TaxCalcnlator.cpp ‘#include”TaxCalculator.h” double TaxCalculator::getTaxPayable(double income)const{ double taxable=income—threshold; //应纳税工资额 double tax_payable=0.0; //应纳个人所得税额 int i=list_len-1; //从税率表的最高适用段开始计算 while(i>=0){ //**********333********** //**********666********** --i; } return tax_payable; } void TaxCalculator::showTaxPayable(double income)const{ cout<<”月收入为”<<SETW(6)<<INCOME<<”元时应缴纳个人所得税”&NBSP;&NBSP;&NBSP; <<setw(4)<<getTaxPayable(income)<<”元”< } //main.cpp #include”TaxCalculator.h” int main(){ double limits[]={0.0,500.0,2000.0,5000.0,20000.0,40000.0,60000.0,80000。0,100000.0}; double rates[]={0.05,0.1,0.15,0.2,0.25,0.3,O.35,0.4,0.45}; TaxCaleulator calc(1imits,rates,9,2000.0); calc.showTaxPayable(800.0); calc.showTaLPayable(1800.0); cale.showTaxPayable(2800.0); calc.showTaxPayable(3800.0); calc.showTaxPayable(4800.0); eaie.showTaxPayable(5800.0); writeToFile(””); return 0; } |
查看答案 |
简答题 | 请使用VC6或使用【答题】菜单打开考生文件夹projl下的工程projl。程序中位于每个“//ERROR****found料****之后的一行语句有错误,请加以改正。改正后程序的输出结果应为: Name:Smith Age:21 ID:99999 CourseNum:12 Record:970 注意:只修改每个“//ERROR****found****”下的那一行,不要改动程序中的其他内容。 #include using namespace std; class Studentlnfo { protected: //ERROR********************found**************** char Name; int Age; int ID: int CourseNum; float Record; public: Studentlnfo(char*name,int Age,int ID,int coumeNum,float record); //ERROR ********************found******************** void~Studentlnfo(){} float AverageRecord(){ return Record/CourseNum; } void show()const{ cout<<”Name:”<<NAME<<”AGE:”<<AGE<<”ID:”<<ID <<”CourseNum:”<<COURSENUM<<”RECORD:”<<RECORD< } }; //ERROR ******************found************** StudentInfo StudentInfo(char*Name,int Age,int ID,int CourseNum,float Record) { Name=name; Age=age; this一>ID=ID: CourseNum=courseNum: Record=record; } int main() { Studentlnfo st(’’Smith”,21,99999,12,970); st.show(); return 0; } |
查看答案 |
简答题 | 请使用VC6或使用【答题】菜单打开考生文件夹proj2下的工程proj2,其中定义了vehiele类,并派生出motorcar类和bicycle类。然后以motorcar和bicycle作为基类,再派生出motorcycle类。要求将Vehicle作为虚基类,避免二义性问题。请在程序中的横线处填写适当的代码并删除横线,以实现上述类定义。此程序的正确输出结果应为: 80 150 100 1 注意:只能在横线处填写适当的代码,不要改动程序中的其他内容,也不要删除或移动“//****found****”。 #include class vehicle { private: int MaxSpeed; int Weight; public: //*************found************ vehicle(int maxspeed,int weight):—— ~vehicle(){}; int getMaxSpeed(){return MaxSpeed;} int getWeight(){retum Weight;} }; //****************found************ class bicycle:——public vehicle { private: int Height; public: bicycle(int maxspeed,int weight,int height):vehicle(maxspeed,weight),Height(height){} int getHeight(){retum Height;}; }; //*******************found************** class motorcar:——public vehicle { private: int SeatNum; public: motorcar(int maxspeed。int weight,int seatnum):vehicle(maxspeed,weight),SeatNum(seatnum){} int getSeatNum(){return SeatNum;}; }; //*****************found*************** class motorcycle:—— { public: motorcycle(int maxspeed,int weight,int height):vehicle(maxspeed,weight),bicycle(maxspeed,weight, height),motorcar(maxspeed,weight,1){} }; void main() { motorcycle a(80,150,100); cout<<A.GETMAXSPEED()< cout<<A.GETWEIGHT()< cout<<A.GETHEIGHT()< cout<<A.GETSEATNUM()< } |
查看答案 |
简答题 | 请使用VC6或使用【答题】菜单打开考生文件夹proj3下的工程文件proj3。本题创建一个小型字符串类,字符串长度不超过l00。程序文件包括pmj3.h、proj3.cpp、writeToFile.obj。补充完成重载赋值运算符函数,完成深复制功能。 屏幕上输出的正确结果应该是: Hello! Happy new year! 补充编制的内容写在“//**********333**********”与“//**********666**********”两行之间。 不得修改程序的其他部分。 注意: 程序最后调用writeToFil。函数,使用另一组不同的测试数据,将不同的运行结果输出到文件0ut?dat中。 输出函数writeToFile已经编译为obj文件。 //proj3.h #include #include using namespace std; class MiniString { pubhc: friend。8tream&operator<<(oatream&output,const MiniString&s)//重载流插入运算符 { output< friend istream&operator>>(istream&input,MiniString&8)//重载流提取运算符 { char temp[100];//用于输入的临时数组 temp[0]=’\0’://初始为空字符串 input>>setw(100)>>temp; int inLen=strlen(temp);//输入字符串长度 if(inLen!=0) } s.1ength=inLen;//赋长度 if(s.sPtr!=0)delete[]s.sPtr;//避免内存泄漏 s.sPtr=Hew char[s.1ength+1]; strcpy(s.sPtr,temp);//如果8不是空指针,则复制内容 } else s.sPtr[0]=’\0’;//如果s是空指针,则为空字符串 retum input; } void modString(const char}string2)//更改字符串内容 { if(strin92 1=0)//如果strin92不是空指针,则复制内容 { if(strlen(strin92)!=length) { length=strlen(strin92); delete[]sPtr; sPtr=new char[1ength+1];//分配内存 } strcpy(sPtr,strin92); } else sPtr[0]=’\0’;//如果string2是空指针,则为空字符串 } MiniString&operator=f const MiniString&otherString); MiniString(corot char*s=""):lengtll((s!=0)?strlen(s):0)//构造函数 { sPtT=0: if(1ength[=0) setString(S); } ~MiniString()//析构函数 {delete[]sPtr;} private: int length;//字符串长度 char*sPtr;//指向字符串起始位置 void setString(const char*string2)//辅助函数 { sPtr=Dew char[str|en(string2)+1];//分配内存 if(stnIl92!=0)strcpy(sPtr,string2);//如果string2不是空指针,则复制内容 else slur[0]='\0';//如果string2是空指针,则为空字符串 } }; //pwj3.cpp #'include #include using namespace std; #include”proj3.h” MiniString&MiniStrin9::0perator=(const MiniString&otherString) {//重载赋值运算符函数。提示:可以调用辅助函数setString //*************333********** //*************666********** } int main() { MiniSu'ing strl(”Heuo!”),str2; void writeToFile(const char*); sir2=strl;//使用重载的赋值运算符 str2.modString("Happy new year!"); cout<<STRL<<'\N': cout<<STR2<<'\N': writeToFile(""); return 0; } |
查看答案 |
简答题 | 使用VC++6.0打开考生文件夹下的源程序文件1.cpp,该程序运行时有错误,请改正程序中的错误,使得程序输出: 9,8,7,6,5 注意:错误的语句在/********error********/的下面,修改该语句即可。其他的语句不能修改。 试题程序: #include(iostream.h> classTC { /********error********/ TC(inti) { m_i=i; } voidprint() { cout<<--m_i<<','; } public: intm_i; }; intmain() { /********error********/ inti(); TC04(10); while(i>5) { /********errOr********/ i++: 04.print(); } cout< return0; } |
查看答案 |
简答题 | 使用VC++6.0打开考生文件夹下的源程序文件2.cpp。阅读下列函数说明和代码。函数num(ehar*str)用于返回字符串中非数字的个数。 例如:abcl23abc45 返回值为:6 将函数num补充完整。 注意:请勿改动主函数main。 试题程序: #include intnum(char*str) { } intmain() { charstr[1024]; cout<<"pleaseinputastring:"< cin.getline(str,1024); cout<<"charnumberis"<<num(str)< return0; } |
查看答案 |
简答题 | (1)应添加“virtualvoidGetNamt!()=0;”。 (2)应添加“constchar*GetName2()”。 (3)应添加“TC2(char*str)”。 (4)应添加“m_str[i]=0;”。 |
查看答案 |
简答题 | 使用VC++6.0打开考生文件夹下的源程序文件1.cpp,但该程序运行有问题,请改正main()函数中的错误,使该程序的输出结果正确。 程序输出: 8 8 注意:错误的语句在/********error********/的下面。修改该语句即可,其他的语句不能修改。 试题程序: #include(iostream.h> classCO { public: /********error********/ staticintn=0: CO() { n++: } ~CO() { n--: } }: /********error********/ intCO::n; voidmain() { COobj; COobj2[7]; CO*C=NULL: c=&obj: /********error********/ eout<cout<} |
查看答案 |
简答题 | 使用VC++6.0打开考生文件夹下的源程序文件2.cpp。请完成函数fun(intx),该函数的功能是将X的值转换成二进制数输出到屏幕,并且在函数中调用写函数WriteFile将结果输出到2.txt文件中。 例如x=6,6的二进制数为110,则输出到屏幕的数为110。 注意:不要改动main函数,不得增行或删行,也不得更改程序的结构。 试题程序: #include(iostream) #include(fstream) #include(cmath) usingnamespacestd; voidWriteFile(char*str) { ofstreamout1; out1.open("2.txt",ios—base::binary|ios_base::app); for(inti=0;str[i]!=0;i++) out1.put(str[i]); out1.close(); } voidfun(intx) { } voidClearFile() { ofstreamout1; out1.open("2.txt"); out1.close(); } intmain() { ClearFile(); fun(13); return0; } |
查看答案 |
简答题 | 使用VC++6.0打开考生文件夹下的源程序文件3.cpp,其中定义了类A、A1和A2,其中A1类由A类公有派生,A2类由A1类公有派生。 (1)定义类A的构造函数,该构造函数有一个整型的参数x,在构造函数中请将x赋值给数据成员a。请在注释“//********1********”之后添加适当的语句。 (2)定义类A1的构造函数,该构造函数有两个整型的参数x和y,在构造函数中请将x赋值给数据成员b,将y作为基类A构造函数的参数值传人。请在注释“//********2********”之后添加适当的语句。 (3)定义类A2的构造函数,该构造函数有3个整型的参数x,y和z,在构造函数中请将x赋值给数据成员C,将y和z分别赋值给基类A1构造函数的参数x和y。请在注释“//********3********”之后添加适当的语句。 (4)完成类A2的成员函数show的定义,该函数调用基类成员函数,输出基类数据成员a和b及类A2自身的数据成员C的值,上述3个值在输出时以空格隔开。请在注释“//********4********”之后添加适当的语句。 程序输出结果如下: 7 3 738 注意:除在指定的位置添加语句之外,请不要改动程序的其他部分。 试题程序: #include classA { inta; public: //********1******** intgeta(){returna;} }; classA1:publicA { intb; public: //********2******** intgetb(){returnb;} }; classA2:publicA1 { intC; public: //****,****3******** voidshow() { //********4******** } }; voidmain() { A2a(8.3.7): cout<<a.geta()< cout<<a.getb()< a.show(); } |
查看答案 |
简答题 | 使用VC++6.0打开考生文件夹下的源程序文件1.cpp,该程序运行时有错,请改正其中的错误,使程序正常运行,并使程序输出的结果为: sizeof(S1)=5 sizeof(s2)=10 sizeof(s3)=1 注意:不要改动main函数,不能增加或删除行,也不能更改程序的结构,错误的语句在//******error******的下面。 (1)不能删除assert()语句。 (2)只能修改后面的数字。 提示:assert函数如果为假,则会产生一个中断异常。 试题程序: #include #include voidmain() { char*s1="abc": //********error******** assert(sizeof(s1)==3): cout<<"sizeof(s1)=5"< chars2[10]="ab": //********error******** assert(sizeof(s2)==2); cout<<"sizeof(s2)=10"< chars3=23: //********error******** assert(sizeof(s3)==4); cout<<"sizeof(s3)=1"< return; } |
查看答案 |
简答题 | 使用VC++6.o打开考生文件夹下的源程序文件2.cpp。请完成函数fun(char*str1,char*str2),此函数的功能是计算str1中出现str2的个数,当不出现时,则返回0。 例如: str1为“asdfsfdfg” str2为“sf”则返回1 str2为“df”则返回3 注意:不能修改函数的其他部分。 试题程序: #include //注意只能使用int类型,不能类型转换 intfun(char*str1,char*str2) { } voidmain() { charstr1[1024]; charstr2[256]; cout<<"pleaseinputastring:"< cin.getline(str1,1024); cout<<"pleaseinputotherstring;"<<endl cin.getline(str2,256); cout< cout< return; } |
查看答案 |
简答题 | 使用VC++6.0打开考生文件夹下的源程序文件3.cpp,其中定义了用于表示矩形的CRect类,但类CRect的定义并不完整。请按要求完成下列操作,将类CRect的定义补充完整。 (1)定义私有数据成员leftPoint、topPoint、rightPoint、bottomPoint,分别用于表示矩形左上角及右下角的点的坐标,它们都是double型的数据。请在注释1之后添加适当的语句。 (2)完成默认构造函数CRect的定义,指定默认实参为0,它们都是double型的数据。请在注释2之后添加适当的语句。 (3)定义函数体为空的析构函数。请在注释3之后添加适当的语句。 (4)在main函数中定义GReet类的实例rect2,并把re- ct1的值赋给rect2。请在注释4之后添加适当的语句。 注意:除在指定位置添加语句之外,不要改动程序中的其他内容。 试题程序: #include classCRect { private: //********1******** public: //********2******** //********3******** voidSetPoints(double,double,double,double); voidSetLeftPoint(doublem){leftPoint=m;} voidSetRightPoint(doublem){rightPoint=m;} voidSetTopPoint(doublem){topPoint=m;} voidSetBottomPoint(doublem){bottomPoint=m;} voidDisplay(); }; CReet::CRect(double1,doublet,doubler,doubleb) { leftPoint=1;topPoint=t; rightPoint=r;bottomPoint=b; } voidCRect::Setpoints(double1,doublet,doubler,doubleb) { leftPoint=1;topPoint=t; rightPoint=n;bottomPoint=b; } voidCRect::Display() { cout<<"left-toppointis("<<leftpoint<<","<<top- Point<<")"<<'\n'; cout<<"right-bottompointis("<<rightpoint<<"," < <bottompoint<<")"<<'\n'; } voidmain() { CRectrect0; rect0.Display(); rect0.SetPoints(20,20.6,30,40); rect0.Display(); CRectrectl(0,0,150,150); rect1.SetTopPoint(10.5); rect1.SetLeftPoint(10.5); //********4******** rect2.Display( );} |
查看答案 |
简答题 | (1)应改为“catch(char*s)”。 (2)应改为“cateh(inti)”。 (3)应改为“catch(…)”。 |
查看答案 |
简答题 | 使用VC++6.0打开考生文件夹下的源程序文件2.cpp。完成函数fun(char*sl,char*s2)的空出部分。函数fun(char*s1,char*s2)的功能是将在字符串s1中下标为偶数的字符,紧随其后重复出现一次,放在一个新串s2中,s2中字符按原字符串中字符的顺序排列。(注意0为偶数) 例如:当s1中的字符串为“abcdef”时,s2中的字符串应为“aaccee”。 注意:不要改动main函数,不得增行或删行,也不得更改程序的结构。 试题程序: #include(iostream.h) voidfun(char*s1,char*s2) { } voidmain() { charsi[100】,s2【1OO]; cout<<"Pleaseenterstringstrin9:"< cin.getline(s1,100); fun(s1,s2); cout<<"Theresultis:"<<s2<<cndl return; } |
查看答案 |
简答题 | 使用VC++6.0打开考生文件夹下的源程序文件3.cpp。其中定义的类不完整,按要求完成下列操作,将类的定义补充完整。 (1)定义类的公有数据成员函数N0、Name[32],其中N0是int型的数据,Name[32]为字符型。请在注释1后添加适当的语句。 (2)完成函数Set的定义,分别设置N0和Name的值,请在注释2后添加适当的语句。 (3)完成函数print,请在注释3后添加适当的语句,输出结果如下: N0=12345 Name=HelloWorld! (4)添加默认构造函数,设置N0为0,Name为空,请在注释4后添加适当的语句。 注意:增加或者修改代码的位置已经用符号表示出来,请不要修改其他的程序代码。 试题程序: #include classTC { public: //********1******** //********2******** { No=no; for(inti=0;strName[i]!=0;i++) { Name[i]=strName[i]; Name[i+1]=0; } } voidprint() { //********3******** } TC() { //********4********) }; intmain() { TCstu: stu.Set(12345,"HelloWorld!");stu.print(); return0; } |
查看答案 |
简答题 | 使用VC++6.0打开考生文件夹下的源程序文件1.cpp,该程序运行时有错误,请改正程序中的错误。本程序要求实现的功能为从键盘输入一个字符串,并将结果保存到文件1.txt中。 注意:不要改动main函数,不能增加或删除行,也不能更改程序的结构,错误的语句在 //******error******的下面。 试题程序: #include #include //********error******** usingstd; voidWriteFile(char*s) { ofstreamout1; //********error******** out1.open("1.txt",binary|app); for(inti=0;s[i]!=0;i++) { //********error******** out1.puts(s[i]); } out1.close(); } voidClearFile() { ofstreamout1; out1.open("1.txt"); out1.close(); } intmain() { chars[1024]; ClearFile(); cout<<"pleaseinputastrin9:"< cin.getline(s,1024); WriteFile(s); return0; } |
查看答案 |
简答题 | 使用VC++6.0打开考生文件夹下的源程序文件2.cpp。完成函数fun(char*S,inta[]),其功能是把字符串S中的数字提取出来存储在a[]中,然后返回数字的个数。 例如s="1234abcdef567",则a[]中存储着1234567,返回7。 注意:不能修改程序的其他部分,只能修改fun函数。 试题程序: #include(iostream.h> intfun(char*s,inta[]) { } intmain() { inta[1024]; intlen=fun("1234abedef567",a); for(inti=0;i<len;i++) { COUt<<a[i]<<''; } cout< cout<<i< return0; } |
查看答案 |
简答题 | (1)“while()”应改为“while(infile.get(ch))”。 (2)应添加“bur[len++]=ch;bur[len]=ch;len++;”。 (3)应添加“outfile2<<bur[i++];”或“outfile2< (4)“TCobj();”应改为“TCobi("in.txt");”。 |
查看答案 |
简答题 | 使用VC++6.0打开考生文件夹下的源程序文件1.cpp,该程序运行时有错,请改正其中的错误,使程序正常运行,输出的结果为 Constructor,i=0, Destructor 注意:错误的语句在//******error******的下面,修改该语句即可。 试题程序: #include(iostream.h) classTC { inti; public: TC(); voiddisplay(); ~TC(); }; //******error****** TC:TC() { cout<<"Constructor"<<","; i=0; ) //******error****** TC:display() { tout<<"i="<<i<<","< } //******error****** TC:TC() { COUI<<"Destructor"< } voidmain() { TCa; a.display(); } |
查看答案 |
简答题 | 使用VC6打开考生文件夹下的源程序文件2.cpp。阅读下列函数说明和代码,补充空出的代码。函数sum(intn)返回1,2,3,…,n的和。其中n大于0。 程序要求使用递归实现上述功能。 注意:不能修改程序的其他部分,只能补充sum函数。 试题程序: #include #include intsum(intn) { } voidmain() { cout<<"1+2+3+…+100="<<sum(100)<< endl; return; } |
查看答案 |
简答题 | 使用VC++6.0打开考生文件夹下的源程序文件3.cpp。其中定义的类不完整,按要求完成下列操作,将类的定义补充完整。每卖出一个水果,则计算水果的重量,还要计算所有卖出水果的总重量以及总个数,同时允许退货,请按照以下的操作,把类补充完整。 (1)定义类TCFruit的私有静态数据成员float型变量AllWeight和int型变量AllN0,请在注释1后添加适当的语句。 (2)完成类TCFruit的带一个float型变量w的构造函数,并把这个w加到AllWeight中,并且AllNo自加。请在注释2后添加适当的语句。 (3)在析构函数中,在AllWeight中减去weight,然后AllNo自减,请在注释3后添加适当的语句。 (4)完成静态成员变量的初始化为0,请在注释4后添加适当的语句。 注意:增加或者修改代码的位置已经用符号表示出来,请不要修改其他的程序代码。 试题程序: #include(iostream.h> classTCFruit { private: floatWeight; //********1******** staticintAllNo; public: TCFruit(floatw) { //********2******** AllWeight+=w: AllNo++: } ~TCFruit() { //********3******** AllWeight-=Weight: } voiddisplay() { cout<<"SellaFruitwith"<<weight<<"k9"<< endl; cout<<”Allsellnumber:"<<allno< cout<<"Allsellweight:"<<allweight<<"k9"<< endl< } }; //********4******** floatTCFruit::AllWeight=0.0; intmain() { TCFruitFruitl(1.2); Fruitl.display(); TCFruitFruit2(2.3); Fruit2.display(); return0; } |
查看答案 |
简答题 | 使用VC++6.0打开考生文件夹下的源程序文件1.cpp,该程序运行有问题,请改正main函数中的错误,使程序的输出结果为: number=1 number=10 number=100 注意:不要改动main函数,不能增加或删除行。也不能更改程序的结构,错误的语句在//******error******的下面。 试题程序: #include classTC { public: TC(inti) { number=i; } voidSetNumber(intm) { number=m; } intGetNumber()const { returnnumber; } voidPrint()const { cout<<"number="<<number< } private: intnumber; }; voidmain() { //********error******** TCobjl; objl.Print(); TCobj2(3); //********error******** objl.number=10; //********error*‰****** TC.SetNumber(100); objl.Print(); obj2.Print(); } |
查看答案 |
简答题 | 使用VC++6.0打开考生文件夹下的源程序文件2.cpp。请完成以下两个函数。 (1)funl(intn)求出n的阶乘,必须使用递归调用。 (2)fun2(intn)求出n的阶乘,不能使用递归调用。如果n小于1则返回0。 注意:不能修改函数的其他部分。 试题程序: #include //必须使用递归 intfunl(intn) { } //不能使用递归 intfun2(intn) { } voidmain() { inti; cout<<"请输入一个整数:"< cin>>i; cout<<"输入数字的阶乘是:"<<funl(i)< cout<<"输入数字的阶乘是:"<<fun2(i)< return; } |
查看答案 |
简答题 | 使用VC++6.0打开考生文件夹下的源程序文件3.cpp。类People包括姓名和年龄两个字段。函数fun获得年龄比较大的人的姓名,然后输出这个姓名到屏幕。 其中定义的类并不完整,按要求完成下列操作,将类的定义补充完整。 (1)完成类的构造函数功能,请在注释1后添加适当的语句。 (2)完成构造函数对姓名的赋值,请在注释2后添加适当的语句。 (3)定义类的友元函数fun,请在注释3后添加适当的语句。 (4)补充函数fun的年龄比较功能,请在注释4后添加适当的语句。 注意:增加或者修改代码的位置已经用符号表示出来,请不要修改其他的程序代码。 试题程序: #include classPeople { public: //********1******** { inti; for(i=0;sUserName[i]!=0;i++) {m_UserName[i]=sUserName[i]; } //********2******** m_Old=nOld; } private: charm_UserName[32]; intm_Old; //********3******** }; voidfun(char*s,People&personl,People&person2 { //********4******** if() { for(inti=0;personl.m_UserName[i]!=0;i+ +) { s[i]=personl.m_UserName[i]; s[i+1]=0; } } else { for(inti=0;person2.m_UserName[i]!=0;i+ +) {s[i]=person2.m_UserName[i]; s[i+1]=0; } } } voidmain() { chars[32]; Peoplepl("abc",20); Peoplep2("def",30): fun(S,p1,p2); cout<<s< return; } |
查看答案 |
简答题 | 使用VC++6.0打开考生文件夹下的源程序文件1.cpp。本程序要求输入一个字符串,然后将其中的小写字母改成大写字母,字符可能输入多行,当输入字符“?”时,默认字符输入结束,最后把结果输出到屏幕中。 注意:不要改动main函数,不能增加或删除行,也不能更改程序的结构,错误的语句在//******error******的下面。 试题程序: #include voidmain() { inti=0; charstr[120]; cout<<"Enterastringendwith'?'."< //********error******** cin.getline(str,120); //********error******** while(str) { //********error******** if(str[i])='a') str[i]=str[i]-'a'+'A'; i++; } cout<<str< return; } |
查看答案 |
简答题 | 使用VC++6.0打开考生文件夹下的源程序文件2.cpp。阅读下列函数说明和代码,补充空出的代码。使sum(intn)能计算所有n的因子之和(不包括1和自身)。 注意:不能修改程序的其他部分,只能补充sum函数。 试题程序: #include intsum(intn) { } voidmain() { cout<cout< cout< return; } |
查看答案 |
简答题 | (1)应添加“BA(intm){a=m;}”。 (2)应添加“PAl(intm,intn):BA(n){b=m;}”。 (3)应添力Ⅱ“PA2(intm,intn,intk):PAl(n,k){C=m;)”。 (4)应添加“cout<<geta()<<""<<getb()<<""<<c< |
查看答案 |
简答题 | 使用VC++6.0打开考生文件夹下的源程序文件1.cpp,该程序运行时有错。请改正程序中的错误,使程序输出的结果为 100 37 32 注意:错误的语句在//******error******的下面,修改该语句即可。 试题程序: #include //******error****** voidmain { //******error****** intm=0142: //******error****** intn=0X27: intq=32; cout<<m< cout<<n< cout<<q< return; } |
查看答案 |
简答题 | 使用VC++6.0打开考生文件夹下的源程序文件2.cpp。请完成函数fun(intn),使其实现以下功能:当i等于3时,则打印如下内容。 A AA AAA 注意:不能修改程序的其他部分,只能修改fun函数。 试题程序: #include voidfun(intn) { } voidmain() { intn; cout<<"请输入打印的行数:"< cin>>n; if(n<1) { cout<<"输入的行数必须大于0"< return; } fun(n); return; } |
查看答案 |
简答题 | 使用VC++6.0打开考生文件夹下的源程序文件3.cpp。请完成以下部分,实现在屏幕上输出为 C3 C2 这个程序需要修改的部分,请按照以下部分实现。 (1)类C0不能被实例化,请定义一个纯虚函数print,在注释1后添加适当的语句。 (2)类C1私有虚继承类C0,请在注释2后添加适当的语句。 (3)类C2公有继承于C0,请在注释3后添加适当的语句。 (4)类c3公有继承于C2与C1,请在注释4后添加适当的语句。 注意:增加代码或者修改代码的位置已经用符号表示出来。请不要修改其他的程序代码。 试题程序: #include(iostream.h) classCO { //********1******** }; //********2******** classC1: { public: voidprint() { cout<"”C1"< } }; //********3******** classC2: { public: voidprint() { cout<<"C2"< } }; //********4***x**** classC3: { public: voidprint() { cout<<"C3"< } }; voidmain() { C30bj3; C20bj2; obj3.print(); obj2.print(); return; } |
查看答案 |
简答题 | 使用VC++6.0打开考生文件夹下的源程序文件1.cpp,该程序运行时有错误,请改正错误,使得程序输出: Hello test 注意:不要改动main函数,不能增加或删除行,也不能更改程序的结构,错误的语句在 //******error******的下面。 试题程序: #include //********error******** template voidfun(Tt) { std::cout<<"test"< } //********error******** template voidfun(boolt) { std::cout<<(t?"Hell0":"Hi")< } intmain() { //********error******** boolflag=TRUE; fun(flag); fun((int)flag); return0; } |
查看答案 |
简答题 | 使用VC++6.0打开考生文件夹下的源程序文件2.cpp。阅读下列函数说明和代码,完成空出部分程序。函数fun(intn)的功能是实现对一个整数的加密,具体的加密方法是一个4位长的整数,用每位数字加上3然后除以9的余数代替该数字,再将第1位和第4位交换,第2位和第3位交换,然后返回得到的密码。 程序输出结果为 1864 2075 注意:不能修改其他部分的代码。 试题程序: #include #include intfun(intn) { } intmain() { inti=1357: cout<<fun(i)< i=2468; cout<<fun(i)< return0; } |
查看答案 |
简答题 | (1)应添加“#defineTRUE1”。 (2)应添加“classA1;”。 (3)应添加“friendboolfunc(A2&objl,Al&obj2);”。 (4)将“retllin”补充完整为“returnobjl.m_A2==TRUE&&obj2.m_A1==TRUE;”。 |
查看答案 |
简答题 | 使用VC++6.0打开考生文件夹下的源程序文件1.cpp,该程序运行时有错.请改正其中的错误,使程序正常运行,并使程序输出的结果为 Maxis7 提示:max函数用于找出两个数中的最大值,并作为函 数值返回。 注意:错误的语句在//******error******的下面,修改该语句即可。 试题程序: #include usingnamespacestd; //******error****** intmax(inta,intb) { if(a<b) { intt=a; a=b: b=t; } returnb; } intmain() { intm=-3: intn=7: //******error****** max(-3,n); cout<<"Maxis"<<m< return0; } |
查看答案 |
简答题 | 使用VC++6.0打开考生文件夹下的源程序文件2.cpp。阅读下列函数说明和代码,完成空出部分的程序。实现函数sort(intA[],intn),用冒泡法对数组数据进行排序。所谓冒泡法,就是每次把相邻的两个数交换,较大的数交换到后面。这样下标从0到n-1的数与其后面相邻的数交换,可以把最大的数交换到数组的末端。进行n次下标从0到n-1的交换,则数组变成有序的,并且按由大到小排序。 注意:不能修改和删除程序的其他部分,也不能修改程序的结构。 试题程序: #include #defineN10 voidsort(intA[N],intn) { } intmain() { intA[N]={1,50,17,69,87,42,90,-6,O,-11}; sort(A,10); for(inti=0;i<sizeof(a)/sizeof(int);i++) { cout<<a[i]<<''; } cout< return0; } |
查看答案 |
简答题 | 使用VC++6.0打开考生文件夹下的源程序文件3.cpp。其中定义的类并不完整,按要求完成下列操作,将类 的定义补充完整,使得程序的输出结果为21。 (1)增加静态私有变量Num,类型为int,请在注释1后添加适当的语句。 (2)增加静态变量Num并初始化为10,请在注释2后添加适当的语句。 (3)完成静态函数get的定义,请在注释3后添加适当的语句。 (4)完成对象obj对静态函数get的调用,使得输出结果 为21,请在注释4后添加适当的语句。 注意:增加或者修改代码的位置已经用符号表示出来,请不要修改其他的程序代码。 试题程序: #include classTC { //********1******** intOwn; public: TC(inti) { Own=i; } //********2******** { returnNum+obj->Own; } }; //********3******** intmain() { TCobj(11); //********4******** cout<<< return0; } |
查看答案 |
简答题 | 使用VC++6.0打开考生文件夹下的源程序文件1.cpp,该程序运行时有错,请改正其中的错误,使程序正常运行,即使程序在屏幕输出以下类似内容: 0012FF6810012FF3C5 0012FF6C20012FF444 0012FF7030012FF4C3 0023FF7440012FF542 0012FF7850012FF5C1 006AFDCC~006AFDEF数据可能因为机器的不同,程序输出的内容会有差异。只要相差为4的连续地址即可。 注意:不要改动main函数,不能增加或删除行,也不能更改程序的结构,错误的语句在//******error******的下面。 试题程序: #include usingnamespacestd; intmain() { int*P,a[5]={1,2,3,4,5}; double*q,b[5]={5.0,4.0,3.0,2.0,1.0); intx; P=a; q=b; //********error******** for(x=0;x<=5;X++) //********error******** cout<(p+x)<return0; } |
查看答案 |
简答题 | 使用VC++6.0打开考生文件夹下的源程序文件2.cpp。阅读下列函数说明和代码。 函数sort(int&m,int&n,int&1)实现将3个整数m,n,1由大到小输出。m最大,1最小。程序实现时,可以把最大的数放到m上,先将m与n进行比较,如果m<n,则将m与n的值进行交换,然后再用m与1进行比较,如果m<1,则将m与1的值进行交换,这样能使m最大,然后再将n与1进行比较,若n 将函数sort(int&m,int&n,int&1)补充完整,实现3个数的排序。 注意:请勿改动主函数。 试题程序: #include voidsort(int8Lm,int&n,int&1) { } intmain() { intx=9: inty=13; intz=-3: sort(X,y,z); cout< return0; } |
查看答案 |
简答题 | (1)将“TC(inti,intj)”补充完整为“TC(inti,intj):Num2(j)”。 (2)应添加“friendvoidfunc();”。 (3)应添加“intTC::Num3=4;”。 (4)将“obi.AddNum()”补充完整为“obj.AddNum(2);”。 |
查看答案 |
简答题 | 使用VC++6.0打开考生文件夹下的源程序文件1.cpp,该程序运行时有错,请改正错误,使得程序正确执行,并且输出以下语句: TC1:0 TC2 注意:不要改动main函数,不能增加或删除行,也不能更改程序的结构,错误的语句在//******error******的下面。 试题程序: #include structTC1 { TCl(inti=0) { m_i=i; } voidprint() { cout<<"TCl:"<<m_i< } intm_i; }; classTC2 { public: TC2() { } voidprint() { cout<<"TC2"< } //********error******** private: ~TC2() { } }; intmain() { //********error******** TC1obj1(); //********error******** TC20bj2(); obj1.print(); obj2.print(); return0; } |
查看答案 |
简答题 | 使用VC++6.0打开考生文件夹下的源程序文件2.cpp。完成fun函数,使其功能为将两个按小到大排序的数组a和b,复制合并成一个有序整数序列c,其中形参n和m分别是数组a和b的元素个数。 注意:不能修改程序的其他部分,只能修改fun函数。 试题程序: #include voidfun(inta[],intn,intb[],intm,int*c) { } voidmain() { intA[]={3,5,7,9,11,18,21); intB[]={6,15,19,21,39}; intC[25],i; for(i=0;i<25;i++)C[i]=0; cout<<"A[]="; for(i=0;i<7;i++) cout<<a[i]<<','; eout< cout<<"B[]="; for(i=0;i<5;i++) coul<<b[i]<<','; cout< fun(A,7,B,5,C); cout<<"C[]="; for(i=0;i<12;i++) cout< cout< return: } |
查看答案 |
简答题 | (1)应添加“intseta(intx)”。 (2)应添加“classTC3:publicTC1,privateTC2”。 (3)应添加“intC;”。 (4)应添加“seta(x);”。 |
查看答案 |
简答题 | 使用VC++6.0打开考生文件夹下的源程序文件1.cpp,该程序运行时有错误,请改正程序中的错误,使得程序输出为 10 TC1 注意:不要改动main函数,不能增加或删除行,也不能 更改程序的结构,错误的语句在//******error******的下面。 试题程序: #include classTC1 { public: TC1() { } //********error******** private: virtual~TC1() { usingnamespacestd; cout<<"TCl"< } }; classTC2:publicTC1 { public: //********error******** explicitTC2(inti) { m_i=i; } TC2&operator()(inti) { this->m_i=i; } voidprint() { //********error******** cout<<m_j< } private: intm_i; }; voidfun(TC2C1) { C1.print(); } intmain() { fun(TC2(10)); return0; } |
查看答案 |