一起答

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

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

    cout<<"输入数字的阶乘是:"<

    return;

    }

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

    return;

    }

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

    }

    intGetNumberconst

    {

    returnnumber;

    }

    voidPrintconst

    {

    cout<<"number="<

    }

    private:

    intnumber;

    };

    voidmain

    {

    //********error********

    TCobjl;

    objl.Print;

    TCobj2(3);

    //********error********

    objl.number=10;

    //********error*‰******

    TC.SetNumber(100);

    objl.Print;

    obj2.Print;

    }

  4. 有如下程序:

    #included

    usingnamespacestd;

    classTestClass

    {inta;

    pubIic:

    TestClass(intx){a=x;}

    voidshow(){cout

    {intb;

    public:

    TestClassl(inti):TestClass(i+1),b(i){}

    voidshow(){cout

    {TestClassb(5),*P;

    TestClassld(1):

    p=&d;

    p->show();

    return0;}

    该程序运行后的打印结果是(  )。

    • A.5
    • B.1
    • C.0
    • D.2
  5. 类A是类B的友元,类B是类C的友元,则下列说法正确的是(  )。

    • A.类B是类A的友元
    • B.类C是类A的友元
    • C.类A是类C的友元
    • D.以上都不对
  6. 下列叙述中错误的是(  )。

    • A.在程序中凡是以“#”开始的语句行都是预处理命令行
    • B.预处理命令行的最后不能以分号表示结束
    • C.#defineMAX是合法的宏定义命令行
    • D.C++中预处理命令行的处理是在程序执行的过程中进行的
  7. 有下列程序:

    #include

    voidmain(  )

    {inti=5;

    do

    {if(i%3=1)

    if(i%5==2)

    {printf("*%d",i);break;}

    i++:

    }while(i!=O);

    printf("\n");

    }

    程序的运行结果是(  )。

    • A.*7
    • B.*3*5
    • C.*5
    • D.*2*6
  8. 已知函数FA调用函数FB,若要把这两个函数定义在同一个文件中,则(  )。

    • A.FA必须定义在FB之前
    • B.FB必须定义在FA之前
    • C.若FA定义在FB之后,则FA的原型必须出现在FB的定义之前
    • D.若FB定义在FA之后,则FB的原型必须出现在FA的定义之前
  9. 下列表达式的值为false的是(  )。

    • A.1<3&&5<7 2="">4)
    • C.3&0&&l
    • D.!(5<8)‖(2<8)
  10. 函数swap(a,n)可完成对a数组从第1个元素到第n个元素两两交换。其中b[o]=1;b[1]=2;swap(b,2)。在运行调用函数中的语句后,b[0]和b[1]的值分别为(  )。

    • A.1,1
    • B.1,2
    • C.2,2
    • D.2,1
  11. 对于类定义:

    classA{

    public:

    virtualvoidfuncl(){}

    voidfunc2(){}

    };

    classB:publicA{

    public:

    voidfuncl(){cout<<"classBfunc1"<

    virtualvoidfunc2(){cout<<"classBfunc2"

    <

    };

    下面正确的叙述是(  )。

    • A.A::func2(  )和B::func1(  )都赵虚函
    • B.A::rune2(  )和B::func1(  )都不是虚函数
    • C.B::func1(  )是虚函数,而A::fune2(  )不是虚函数
    • D.B::func1(  )不是虚函数,而A::func2(  )是虚函数
  12. 有下列程序:

    #include

    voidmain(  )

    {char*a[]={"abed","ef","gh","ijk");inti;

    for(i=0;i<4;i++)printf("%C",*a[i]);

    }

    程序运行后的输出结果是(  )。

    • A.aegi
    • B.dfhk
    • C.abed
    • D.abcdcfghijk
  13. 下列叙述中错误的是(  )。

    • A.在程序中凡是以“#”开始的语句行都是预处理命令行
    • B.预处理命令行的最后不能以分号表示结束
    • C.#defineMAX是合法的宏定义命令行
    • D.C程序中预处理命令行的处理是在程序执行的过程中进行的
  14. 下列关于栈的叙述正确的是(  )。

    • A.栈按“先进先出”组织数据
    • B.栈按“先进后出”组织数据
    • C.只能在栈底插入数据
    • D.不能删除数据
  15. 下列程序中横线处应填入的语句是()。

    classBase

    {

    public:

    voidfun(){cout<<"Baseoffun"<

    classDerived:publicBase

    {

    voidfun()

    {

    //显示基类的成员函数fun

    cout<<"Derivedoffun"<

    }

    };

    • A.fun();
    • B.Base.fun();
    • C.Base::fun();
    • D.Base->fun();
  16. 下列程序段中的变量已正确定义:

    for(i=0;i<4;i++,i++)

    for(k=1;k<3;k++);printf("*");

    程序段的输出结果是(  )。

    • A.********
    • B.****
    • C.**
    • D.*
  17. 若有定义语句“inti=2,j=3;”,则表达式i/j的结果是(  )。

    • A.0
    • B.0.7
    • C.0.66667
    • D.0.66666667
  18. 对于语句“cout<<setfill('*')<<setw(10)<<1<<serfill('*')<<setw(2)<<2;”的输出结果是(  )。

    • A.*********1*2
    • B.span>B.********12
    • C.span>C.*******1*2
    • D.span>D.12********
  19. 若函数中有定义语句“intk;”.则(  )。

    • A.系统将自动给k赋初值0
    • B.这时k中的值无定义
    • C.系统将自动给k赋初值-1
    • D.这时k中无任何值
  20. 设有下列程序段:

    chars[20]="Beijing",*P;

    P=S;

    则执行“p=s;”语句后,下列叙述正确的是(  )。

    • A.可以用*P表示s[0]
    • B.S数组中元素的个数和P所指字符串长度相等
    • C.S和P都是指针变量
    • D.数组s中的内容和指针变量P中的内容相同
  21. 有下列程序:

    #include

    voidmain(  )

    {

    intx=8;

    for(;x>0;x--)

    {

    if(x%3){printf("%d,",x--),continue;}

    printf(”%d,”,--x);

    }

    }

    程序的运行结果是(  )。

    • A.7,4,2
    • B.8,7,5,2
    • C.9,7,6,4
    • D.8,5,4,2
  22. 有如下程序:

    #include

    usingnamespacestd;

    classB{

    public:

    virtualvoidshow(){cout<<"B";}};

    classD:publicB{

    public:

    voidshow(){cout<<"D";}

    };

    voidfun1(B*ptr){ptr->show();

    }voidfun2(B&ref){ref.show();

    }voidfun3(BB){b.show();

    }

    intmain(){

    Bb,*p=newD;

    Dd;

    funl(p);

    fun2(b);

    fun3(d);

    return0;

    }

    程序的输出结果是(  )。

    • A.BBB
    • B.BBD
    • C.DBB
    • D.DBD
  23. 下列不构成无限循环的语句或语句组是(  )。

    • A.n=0;do{++n;)while(n<=0);
    • B.n=0;while(1){n++;)
    • C.while(n=1O);{n--;}
    • D.for(n=0,i=1;;i++)n+=i
  24. 程序段“intx=12;doubley=3.141593;printf(”%d%8.6'f",X,y);”的输出结果是(  )。

    • A.123.141593
    • B.123.141593
    • C.12,3.141593
    • D.123.1415930
  25. 设变量已正确定义并赋值,以下正确的表达式是(  )。

    • A.x=y+5=x+z
    • B.int(15.8%5)
    • C.x=y+z+5,++y
    • D.x=25%5.0
  26. 下面描述中错误的是(  )。

    • A.系统总体结构图支持软件系统的详细设计
    • B.软件设计是将软件需求转换为软件表示的过程
    • C.数据结构与数据库设计是软件设计的任务之一
    • D.PAD图是软件详细设计的表示工具
  27. 有下列程序:

    #include

    #defineN4

    voidfun(inta[][N],intb[])

    {inti;

    for(i=0;i

    }

    voidmain(  )

    {intx[][N]={{1,2,3},{4),{5,6,7,8),{9,10}),

    y[N],i;

    fun(x,y);

    for(i=0;i

    printf("\n");

    }

    程序的运行结果是(  )。

    • A.1,2,3,4,
    • B.1,0,7,0,
    • C.1,4,5,9,
    • D.3,4,8,10,
  28. 有如下的程序:

    #include

    #include

    usingnamespacestd;

    classMyString

    {public:

    MyString(constchar*s);

    MyString(){delete[]data;}

    protected:

    unsignedlem

    char*data;};

    MyStrin9::MyString(constchar*s)

    {len=strlen(s);

    data=newchar[len+1];

    strcpy(data,s);}

    intmain()

    {MyStringa("C++Programing");

    MyStringb(a);

    return0;}

    在运行上面的程序时出错,出错的原因是(  )。

    • A.构造函数的实参不允许是本类的对象
    • B.没有定义实现深层复制的复制构造函数
    • C.构造对象a时实参与形参类型不符
    • D.系统不能生成默认的复制构造函数
  29. 有如下程序:

    #include

    usingnamespacestd;

    classMyClass{

    public:

    MyClass(intx):val(x){}

    voidPrint()const{cout<<"const:val="<<

    voidPrint(){cout<<"val="<

    private:

    intval;

    };

    intmain(){

    constMyClassobj1(10);

    MyClassobj2(20);

    obj1.Print();

    obj2.Print();

    return0;

    }

    程序的输出结果是(  )。

    • A.va1=10const:va1=20
    • B.const:va1=10const:va1=20
    • C.const:va1=10val=20
    • D.val=10va1=20
  30. 软件按功能可以分为应用软件、系统软件和支撑软件(或工具软件)。下列属于应用软件的是(  )。

    • A.编译程序
    • B.操作系统
    • C.教务管理系统
    • D.汇编程序
  31. 下列叙述中正确的是(  )。

    • A.C程序中的注释只能出现在程序的开始位置和语句的后面
    • B.C程序书写格式严格,要求一行内只能写一个语句
    • C.C程序书写格式自由,一个语句可以写在多行上
    • D.用C语言编写的程序只能放在一个程序文件中
  32. 有如下程序:

    #include

    usingnamespacestd;

    classTestClass

    {public:

    virtualvoidfunl()

    {cout<<"funlTestClass";}

    virtualvoidfun2()

    {cout<<“fun2TestClass”;}};

    classTestClassl:publicTestClass

    {voidfun()

    {cout<<“funlTestClassl”;}};

    intmain()

    {TestClassobj1,*P;

    TestClasslobj2;

    p=&obj2;

    p->fun1();

    p->fun2();

    return0;}

    该程序执行后的输出结果是(  )。

    • A.funlTestClasslfun2TestClass
    • B.funlTestClass1fun2TestC1ass1
    • C.funlTestClassfun2TestClass
    • D.funlTestClassfun2TestClassl
  33. 下面关于运算符重载的描述错误的是(  )。

    • A.运算符重载不能改变操作数的个数、运算符的优先级、运算符的结合性和运算符的语法结构
    • B.不是所有的运算符都可以进行重载
    • C.运算符函数的调用必须使用关键字0perator
    • D.在C++语言中不可通过运算符重载创造出新的运算符
  34. 有如下程序:

    #include

    usingnamespacestd;

    classToy{

    public:

    Toy(char*_n){strcpy(name,_n);count++;)

    ~Toy(  ){count一一;)

    char*GetName(  ){returnname;}

    staticintgetCount(  ){returncount;)

    private:

    charname[10];

    staticintcount;

    };

    intToy::count=0;

    intmain(  ){

    Toyt1("snoopy"),t2("Mickey"),t3("Barbie");

    tout<

    return0;

    )

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

    • A.1
    • B.2
    • C.3
    • D.运行时出错
  35. 下列选项中不属于结构化程序设计方法的是(  )。

    • A.自顶向下
    • B.逐步求精
    • C.模块化
    • D.司复用
  36. 派生类的成员函数不能访问基类的(  )。

    • A.公有成员和保护成员
    • B.公有成员
    • C.私有成员
    • D.保护成员
  37. 下列关于析构函数的描述中,错误的是(  )。

    • A.析构函数可以重载
    • B.析构函数由系统自动调用
    • C.每个对象的析构函数只被调用一次
    • D.每个类都有析构函数
  38. 有如下程序:

    #include

    usingnamespacestd;

    classDA{

    intk;

    public:

    DA(intx=1):k(x){}

    ~DA(){cout<

    };

    intmain(){

    DAd[]={DA(3),DA(3),DA(3));

    DA+p=newDA[2];

    delete[]p;

    return();

    }

    这个程序的输出结果是(  )。

    • A.111
    • B.333
    • C.11333
    • D.11133
  39. 已经有“语句intm=10;”则下列表示引用的表示中正确的是(  )。

    • A.int&x=m;
    • B.int&y=10;
    • C.int&z;
    • D.float&t=8m;
  40. 有下列程序:

    #include

    voidmain(  )

    {intx=1,y=2,z=3;

    if(x>y)

    if(y

    elseprintf("%d",++y);

    printf(”%d\n”,x++);

    }

    程序的运行结果是(  )。

    • A.331
    • B.41
    • C.2
    • D.1
  41. 有以下程序:

    #include

    usingnamespacestd;

    classR

    {public:

    R(intr1,intr2)

    {R1=r1;

    R2=r2;}

    voidprint();

    voidprint()const;

    private:

    intR1,R2;};

    voidR::print()

    {cout<

    voidR::print()const

    {cout<

    intmain()

    {Ra(5,4);

    constRb(20,52);

    print(); 

    return0;}

    执行后的输出结果是(  )。

    • A.5,4
    • B.20,52
    • C.0,0
    • D.4,5
  42. 下列语句中,与语句“n=(a>b?(b>c?1:0):0);”的功能等价的是(  )。

    • A.if(a<=b)n=0;
    • B.if(a>B)‖(b>c))n=1;elsen=0; 
    • C.if(a>b)if(b>c)n=1;elsen=;elsen=0; 
    • D.if(a>b)n=1;elseif(b<=c)n=1;elseif(b>c)n=1;elsen=0;
  43. 索引属于(  )。

    • A.模式
    • B.内模式
    • C.外模式
    • D.概念模式