一起答

2013年9月全国计算机等级《二级C++》考前冲刺试卷三

如果您发现本试卷没有包含本套题的全部小题,请尝试在页面顶部本站内搜索框搜索相关题目,一般都能找到。
  1. 使用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("<

    Point<<")"<<'\n';

    cout<<"right-bottompointis("<

    <}

    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( );}

  2. 使用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;"<

    cin.getline(str2,256);

    cout<

    cout<

    return;

    }

  3. 使用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;

    }

  4. 若目前D盘根目录下并不存在test.txt文件,则下列打开文件方式不会自动创建test,txt文件的是(  )。

    • A.ifstreamfin;fin.open("d:\\test.txt",iso_base::in);
    • B.fstreamfi0;ri0.open("d:\\test.txt",is0_base::out);
    • C.ofstream。fort;lout.open("d:\\test.txt",ios_base::out);
    • D.ofstreamfout;fout.open("d:\\test.txt",is0_base::app);
  5. 数据库DB、数据库系统DBS、数据库管理系统DBMS之间的关系是(  )。

    • A.DB包括DBS和DBMS
    • B.DBMS包括DB和DBS
    • C.DBS包括DB和DBMS
    • D.没有任务关系
  6. 下列是重载为非成员函数的运算符函数原型,其中错误的是(  )。

    • A.Fractionoperator+(Fraction,Fraction);
    • B.Fractionoperator-(Fraction);
    • C.Fraction&operator=(Fraction&,Fraction);
    • D.Fraction&operator+=(Fraction&,Fraction):
  7. 下列关于函数模板的描述中,正确的是(  )。

    • A.函数模板是一个实例函数
    • B.使用函数模板定义的函数没有返回类型
    • C.函数模板的类型参数与函数的参数相同
    • D.通过使用不同的类型参数,可以从函数模板得到不同的实例函数
  8. 若有如下程序:

    #include

    usingnamespacestd;

    classTestClassl

    {

    private:

    inta;

    public:

    TestClassl(inti)

    {

    • a=i:    }    voiddisp(  )    {
    • cout<}    };
    • classTestClass2    {    private:
    • intb:    public:    TestClass2(intj)    {
    • b=j;    }    voiddisp()    {
    • cout<}    };
    • classTestClass3:publicTestClass2,publicTestClassl    {    private:
    • intc;    public:    TestClass3(intk):TestClass1(k-2),TestClass2(k+2)    {
    • c=k:    }    voiddisp()    {    TestClasssl::disp();    TestClasss2::disp();
    • cout<
  9. 下列各类函数中,不是类的成员函数的是(  )。

    • A.构造函数
    • B.抽象类
    • C.派生类
    • D.以上都不对
  10. 下面关于break语句的描述中,不正确的是(  )。

    • A.break可以用于循环体内
    • B.break语句可以在for循环语句中出现多次
    • C.break语句可以在switch语句中出现多次
    • D.break语句可用于if条件判断语句内
  11. 将运算符“+”重载为非成员函数,下列原型声明中,错误的是(  )。

    • A.MyClockoperator+(MyClock,long);
    • B.MyClockoperator+(MyClock,MyCloek);
    • C.MyCloekoperator+(long,long);
    • D.MyClockoperator+(long,MyCloek):
  12. 下列关于栈叙述正确的是(  )。

    • A.栈顶元素最先能被删除
    • B.栈顶元素最后才能被删除
    • C.栈底元素永远不能被删除
    • D.以上三种说法都不对
  13. 最简单的交换排序方法是(  )。

    • A.快速排序
    • B.选择排序
    • C.堆排序
    • D.冒泡排序
  14. 有如下程序:

    #include

    usingnamespacestd;

    voidf1(int&X,int&y){intz=x;x=y;y=z;}voidf2(intX,inty){intz=x;x=y;y=z;}intmain(){

    intx=10,y=26;

    f1(x,y);

    f2(x,y);

    cout<

    return0;

    }

    运行时的输出结果是(  )。

    • A.10
    • B.16
    • C.26
    • D.36
  15. 下列语句都是程序运行时的第一条输出语句,其中一条语句的输出效果与其他三条语句不同,该语句是(  )。

    • A.cout<
    • B.cout<
    • C.cout<
    • D.cout<
  16. 下列代码段声明了3个类:

    classPerson{);

    classStudent:publicPerson{};

    classUndergraduate:Student{);

    下列关于这些类之间关系的描述中,错误的是(  )。

    • A.类Person是类Undergraduate的基类
    • B.类Undergraduate从类Student公有继承
    • C.类Student是类Person的派生类
    • D.类Undergraduate是类Person的派生类
  17. 下列选项中不属于软件生命周期开发阶段任务的是(  )。

    • A.软件测试
    • B.概要设计
    • C.软件维护
    • D.详细设计
  18. 下列关于运算符重载的描述中,正确的是(  )。

    • A.运算符重载为成员函数时,若参数表中无参数,重载的是一元运算符
    • B.一元运算符只能作为成员函数重载
    • C.二元运算符重载为非成员函数时,参数表中有一个参数
    • D.C++中可以重载所有的运算符
  19. 有如下四个语句:

    ①cout<<'A'<

    ②cout<

    ③cout<<'A'<

    ④cout<

    其中能显示A******B的是(  )。

    • A.①和③
    • B.①和④
    • C.②和③
    • D.②和④
  20. 下列各组类型声明符中,含义相同的一组是(  )。

    • A.unsignedlongint和long
    • B.signedshort和short
    • C.unsignedshort和short
    • D.shortint和int
  21. 类模板templateclassX{…},其中友元函数f对特定类型T(如int),使函数f(x)成为x模板类的友元,则其说明为(  )。

    • A.friendvoidf();
    • B.friendvoidf(x);
    • C.friendvoidA::f();
    • D.friendvoidC::f(x);
  22. 以下程序的输出结果是(  )。

    voidmain(  )

    {inta=4,b=5,c=0,d;

    d=!a&&!b‖!c;

    cout<

    }

    • A.1
    • B.0
    • C.非0的数
    • D.-1
  23. 有如下程序:

    #include

    usingnamespacestd;

    classPoint{

    intX,y;

    public:

    Point(intx1=0,inty1=0):X(x1),y(y1){}

    intget(){returnx+y;}

    };

    classCircle{

    Pointcenter;

    intradius;

    public:

    Circle(intCX,intcy,intr):center(CX,cy),radius(r)

    {}

    intget(){returncenter.get()+radius;}

    };

    intmain(){

    Circlec(3,4,5);

    cout<

    return0;

    }

    运行时的输出结果是(  )。

    • A.5
    • B.7
    • C.9
    • D.12
  24. 下列枚举类型的定义中,包含枚举值3的是(  )。

    • A.enumtest{RED,YELLOW,BLUE,BLACK};
    • B.enumtest{RED,YELLOW=4,BLUE,BLACK);
    • C.enumtest{RED=-1,YELLOW,BLUE,BLACK};
    • D.enumtest{RED,YELLOW=6,BLUE,BLACK);
  25. 下列语句都是程序运行时的第1条输出语句,其中一条语句的输出效果与其他3条语句不同,该语句是(  )。

    • A.cout<
    • B.tout<
    • C.cout<
    • D.tout<
  26. 下列选项中,能用作数据常量的是(  )。

    • A.o115
    • B.o118
    • C.1.5e1.5
    • D.115L
  27. 对下列二叉树

    进行中序遍历的结果是(  )。 

    • A.ACBDFEG
    • B.ACBDFGE
    • C.ABDCGEF
    • D.FCADBEG
  28. 下列关于纯虚函数与抽象类的描述巾,错误的是(  )。

    • A.纯虚函数是一种特殊的虚函数,它没有具体的实现
    • B.抽象类是指具有纯虚函数的类
    • C.一个基类声明了纯虚函数,该基类的派生类一定不是抽象类
    • D.抽象类只能作为基类来使用,其纯虚函数的实现由派生类给出
  29. 以下不能正确创建输出文件对黎并使其与磁盘文件相关联的语句是(  )。

    • A.ofstreammyfile;myfile.open("d:ofile.txt");
    • B.ofstream*myfile=newofstream;myfile->open("d:ofile.txt”);
    • C.ofstreammyfile("d:ofile.txt");
    • D.ofstream*myfile=new("d:ofile.txt");
  30. 对于长度为n的线性表,在最坏情况下,下列各排序法所对应的比较次数中正确的是(  )。

    • A.冒泡排序为n/2
    • B.冒泡排序为n
    • C.快速排序为n
    • D.快速排序为n(n-1)/2
  31. 有下列二叉树,对此二叉树前序遍历的结果是(  )。

    • A.ACBEDGFH
    • B.ABDGCEHE
    • C.HGFEDCBA
    • D.ABCDEFGH
  32. 有3个关系R、S和T如下表所示:

    则由关系R和S得到关系T的操作是(  )。

    • A.自然连接
    • B.交
    • C.除
    • D.并
  33. 下列字符串中可以用作C++标识符的是(  )。

    • A.2009var
    • B.goto
    • C.test-2009
    • D._123
  34. 若有定义语句“charS[10]="1234567\0\0";”,则strlen(s)的值是(  )。

    • A.7
    • B.8
    • C.9
    • D.10
  35. 若MyClass是一个类名,其有如下语句序列:

    MyClassc1,*c2;

    MyClass*c3=newMyClass;

    MyClass&c4=c1;

    上面的语句序列所定义的类对象的个数是(  )。

    • A.1
    • B.2
    • C.3
    • D.4
  36. 若PAT是一个类,则程序运行时,语句“PAT(*ad){3};”调用PAT的构造函数的次数是(  )。

    • A.0
    • B.1
    • C.2
    • D.3
  37. 有两个关系R、S如下所示:

    由关系R通过运算得到关系S,则所使用的运算为(  )。

    • A.选择
    • B.投影
    • C.插入
    • D.连接
  38. 下列关于虚基类的描述,错误的是(  )。

    • A.设置虚基类的目的是为了消除二义性
    • B.虚基类的构造函数在非虚基类之后调用
    • C.若同一层中包含多个虚基类,这些虚基类的构造函数按它们说明的次序调用
    • D.若虚基类由非虚基类派生而来,则仍然先调用基类构造函数,再调用派生类的构造函数
  39. 有如下程序:

    #include

    usingnamespacestd;

    classPoint{

    intX,Y;

    public

    point(intx1=0,inty1=O)tx(x1),y(y1){}

    intget(){returnx+y;}

    };

    classCircle{

    pointcenter;

    intradius;

    public

    circle(intCX,intcy,intr):center(cx,cy),radius(r)

    {}

    intget(){returncenter.get()+radius;)

    };

    intmain(){

    circlec(3,4,5);

    cout<

    return0;

    }

    运行时的输出结果是(  )。

    • A.5
    • B.7
    • C.9
    • D.12
  40. 设有定义charstr[80];以下不能将输入数据first\nsecond\n读取到数组str中的语句是(  )。

    • A.cin.get(str,strlen(str));
    • B.cin.getline(str,strlen(str));
    • C.cin>>str;
    • D.cin.read(str,strlen(str));
  41. 下列叙述中正确的是(  )。

    • A.全局变量的作用域一定比局部变量的作用域范围大
    • B.静态类别变量的生存期贯穿于整个程序的运行期间
    • C.函数的形参都属于全局变量
    • D.未在定义语句中赋初值的aut0变量和static变量的初值都是随机值
  42. 下列叙述中正确的是(  )。

    • A.软件测试应该由程序开发者来完成
    • B.程序经调试后一般不需要再测试
    • C.软件维护只包括对程序代码的维护
    • D.以上三种说法都不对
  43. 下列程序的输出结果为(  )。

    #include

    classTestClass

    {

    public:

    TestClass(){val++;}

    static,intval;

    };

    intTestClass::val=0;

    voidmain()

    {

    TestClasscsl;

    cout<

    TestClasscs2;

    TestClasscs3,cs4;

    cout<

    }

    • A.O3
    • B.13
    • C.14
    • D.24