一起答

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

  • 卷面总分:100分
  • 浏览次数:0
  • 测试费用:免费
  • 答案解析:是
  • 练习次数:19次
  • 作答时间:120分钟
试卷简介

2013年9月全国计算机等级《二级C++》考前冲刺试卷七:本试卷总分100分;共有4类型题目

  • 选择题
  • 程序改错题
  • 简单应用题
  • 综合应用题
部分试题预览
  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