题库 题库
🏠 天天查询 > 题库 > C++

C++

简答题 请使用【答题】菜单命令或直接用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;
}
查看答案