一起答

2013年9月全国计算机等级《二级C++》命题预测试卷八

如果您发现本试卷没有包含本套题的全部小题,请尝试在页面顶部本站内搜索框搜索相关题目,一般都能找到。
  1. 使用VC++6.0打开考生文件夹下的源程序文件3.cpp,其中定义了用于表示日期的类Date,但类Date的定义并不完整,按要求完成下列操作,将类的定义补充完整。

    (1)定义私有成员变量year、month、day。分别表示年、月、日,类型为int。请在注释1后添加适当的语句。

    (2)完成构造函数,分别给year、month、day赋值,请在注释2后添加适当的语句。

    (3)完成重载符号“十=”的定义,请在注释3后添加适当的语句。

    (4)完成print打印函数,输出到屏幕和文件的格式相同,请在注释4后添加适当的语句。

    注意:仅在函数指定位置添加语句,请勿改动主函数main与其他函数中的任何内容。

    程序正常运行,输出的结果为2008年11月813。

    试题程序:

    #include(iostream.h)

    #include(fstream)

    #include(iomanip)

    #include

    usingnamespacestd;

    voidWriteFile(intc)

    {

    ofstreamout1;

    out1.open("3.txt",ios_base::app);

    out1<

    out1.close;

    }

    voidWriteFile(char*str)

    {

    ofstreamoutl;

    out1.open("3.txt",ios_base::app);

    out1<

    out1.close;

    }

    voidClearFile

    {

    ofstreamout1;

    out1.open("3.txt");

    out1.close;

    }

    classDate

    {

    public:

    Date(inty,intm,intd)

    {

    //********1********

    }

    voidprint;

    //********2********

    {

    month+=m;

    inti=month/12:

    intj=month%12;

    if(j==0)

    {year+=(i-1);

    month=12;

    }

    else

    {

    year+=i:

    month=j;

    }

    return*this;

    }

    private:

    //********3********

    };

    voidDate::print

    {

    //********4********

    WriteFile(year):

    WriteFile("年");

    WriteFile(month);

    WriteFile("月");

    WriteFile(day);

    WriteFile("日");

    }

    intmain

    {

    ClearFile;

    DateOly_day(2008,8,8);

    Olyday+=3:

    Oly_day.print;

    return0;

    }

  2. 使用VC++6.0打开考生文件夹下的源程序文件2.cpp。阅读下列函数说明和代码,补充空出的代码。函数sum(intn)用于计算在n范围内,能被7和11整除的所有整数的和(包括n在内)。

    注意:不能修改程序的其他部分,只能补充sum函数。

    试题程序:

    #include

    doublesum(intn)

    {

    }

    voidmain()

    {

    cout<

    cout<

    cout<

    return;

    }

  3. 4种基本结构中,能简化大量程序代码行的是(  )。

    • A.顺序结构
    • B.分支结构
    • C.选择结构
    • D.重复结构
  4. 有下列程序:

    #include

    voidmain(  )

    {

    FILE*fp;inta[10]={1,2,3},i,n;

    fp=fopen("dl.dat","w");

    for(i=0;i<3;i++)fprintf(fp,"%d",a[i]);

    fprintf(fp,”\n”);

    fclose(fp);

    fp=open("dl.dat","r")

    fscanf(fp,"%d",&n);

    fclose(fp);

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

    }

    程序的运行结果是(  )。

    • A.12300
    • B.123
    • C.1
    • D.321
  5. 使用VC++6.0打开考生文件夹下的源程序文件1.cpp,该程序运行时有错误,请改正其中的错误,使程序正确运行,并且使程序输出的结果为

    0K

    注意:错误的语句在//******error******的下面,修改该语句即可。

    试题程序:

    #include

    classTC

    {

    public:

    TC

    {

    a=b=0:

    }

    private:

    inta,b;

    };

    classTCl:publicTC

    {

    public:

    TC1

    {

    }

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

    virtualvoidfunc;

    };

    classTC2:publicTCl

    {

    public:

    TC2

    {

    a=0:

    b=0:

    }

    voidfunc

    {

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

    cout<<"OK"

    }

    private:

    inta;

    intb;

    };

    voidmain

    {

    TC20bj;

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

    TCl*p=(TCl*)obj;

    p->func;

    }

  6. 有下列程序段:

    charch:intk:

    ch='a';k=12;

    printf("%c,%d,",ch,ch,k);

    printf("k=%d\n",k);

    已知字符a的ASCIl十进制代码为97,则执行上述程序段后输出结果是(  )。

    • A.因变量类型与格式描述符的类型不匹配输出无定值
    • B.输出项与格式描述符个数不符,输出为零值或不定值
    • C.a,97,12k=12
    • D.a,97,k=12
  7. Sample是一个类,执行下面语句后,调用Sample类的构造函数的次数是(  )。

    Samplea[2],*p=newSample;

    • A.0
    • B.1
    • C.2
    • D.3
  8. 在数据库设计中,将E—R图转换成关系数据模型的过程属于(  )。

    • A.需求分析阶段
    • B.概念设计阶段
    • C.逻辑设计阶段
    • D.物理设计阶段
  9. 程序流程图中带有箭头的线段表示的是(  )。

    • A.图元关系
    • B.数据流
    • C.控制流
    • D.调用关系
  10. 有下列程序:

    #include

    structord

    {intx,y;}dt[2]={1,2,3,4};

    voidmain(  )

    {structord*p=dt;

    printf("%d,",++P->x);printf("%d,",++P

    ->y);

    }

    程序的运行结果是(  ).

    • A.1,2
    • B.2,3
    • C.3,4
    • D.4,1
  11. C++语言中在C语言的基础上增加的特性不包括(  )。

    • A.结构
    • B.引用
    • C.类和对象
    • D.静态成员函数
  12. 有下列程序:

    #include

    voidfun(int*a,int*b)

    {int*C;

    c=a;a=b;b=C;

    }

    voidmain(  )

    {intx=3,y=5,*p=&x,*q=&y;

    fun(p,q);printf("%d,%d,",*P,*q);

    fun(&x,&y);printf("%d,%d\n",*P,*q)

    }

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

    • A.3,5,5,3
    • B.3,5,3,5
    • C.5,3,3,5
    • D.5,3,5,3
  13. 原因排除法属于(  )。

    • A.软件调试方法
    • B.黑盒测试方法
    • C.白盒测试方法
    • D.动态测试方法
  14. 下面程序的运行结果是(  )。

    #include

    classbase{

    protected:

    inta;

    public:

    base(){cout<<"0";}

    };

    classbasel:virtualbase{

    public:

    basel(){cout<<"1";}

    };

    classbase2:virtualbase{

    public:

    base2(){cout<<"2";}

    };

    classderived:publicbasel,publicbase2{

    public:

    derived(){cout<<"3";}

    };

    voidmain()

    {

    derivedobj;

    cout<

    }

    • A.0123
    • B.3120
    • C.0312
    • D.3012
  15. 下列有关类继承的叙述中,错误的是(  )。

    • A.继承可以实现软件复用
    • B.虚基类可以解决由多继承产生的二义性问题
    • C.派生类构造函数要负责调用基类的构造函数
    • D.派生类没有继承基类的私有成员
  16. 下面程序输出的结果为(  )。

    #include"iostream.h"

    classA

    {public:

    • A(){cOUt<<"CLASSA"<
    • ClaSSB:publicA    {public:
    • B(){cout<<"CLASSB"<
    • B*q:    q=newB;}
    • A.CLASSB
    • B.CLASSA
    • CLASSB
    • CLASSB
    • CLASSB
    • C.CLASSA
  17. 有如下类定义:

    classA{

    char*a;

    public:

    • A(  ):a(O){}
    • A(char*aa){//把aa所指字符串拷贝到a所指向的存储空间
    • a=__;    strcpy(a,aa);    }    ~A(  ){delete[]a;}    };    横线处应填写的表达式是(  )。
    • A.Newchar[strlen(aa)+1]
    • B.char[strlen(aa)+1]
    • C.char[strlen(aa)]
    • D.newchar[sizeof(aa)-1]
  18. 有以下程序:

    classDate

    {public:

    Date(inty,intm,intd);

    {year=Y;

    month=m;

    day=d;}

    Date(inty=2000)

    {year=y;

    month=10;

    day=1;}

    Date(Date&d)

    {year=d.year;

    month=d.month;

    day=d.day;}

    voidprint()

    {cout<

    day<

    private:

    intyear,month,day;};

    Datefun(Dated)

    {Datetemp;

    temp=d;

    returntemp;}

    intmain()

    {Datedatel(2000,1,1),date2(0,0,O);

    Datedate3(date1);

    date2=fun(date3);

    return0;}

    程序执行时,Date类的复制构造函数被调用的次数是(  )。

    • A.2
    • B.3
    • C.4
    • D.5
  19. 下列表示纯虚函数的成员函数是(  )。

    • A.virtualintfunc(int);
    • B.voidfunc(int)=0;
    • C.virtualvoidfunc=0;
    • D.virtualvoidrune(int){}
  20. 有如下函数模板声明:

    template

    TMax(Ta,Tb){return(a>b)?a:b;}

    下列对函数模板Max(  )的调用中错误的是(  )。

    • A.Max(3.5,4.5)
    • B.Max(3.5,4)
    • C.Max(3.5,4.5)
    • D.Max(3.5,4)
  21. 有下列程序:

    #include

    voidmain(  )

    {intx;

    scanf(”%d”,&x);

    if(x<=3);else

    if(x!=10)printf("%d\n",x);

    }

    程序运行时,输入的值在哪个范围才会有输出结果(  )。

    • A.不等于10的整数
    • B.大于3且不等10的整数
    • C.大于3或等于10的整数
    • D.小于3的整数
  22. 要定义整型数组x,使之包括初值为0的3个元素,下列语句中错误的是(  )。

    • A.intx[3]={0,0,0};
    • B.intx[]={0};
    • C.staticintx[3]={0);
    • D.intx[]={0,0,0};
  23. 有下列程序:

    #include

    intfun(intx,inyy)

    {if(x==y)return(x);

    elsereturn((x+y)/2);

    }

    voidmain()

    {inta=4,b=5,C=6;

    printf("%d\n",fun(2*a,fun(b,c)));

    }

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

    • A.3
    • B.6
    • C.8
    • D.12
  24. 下列叙述中错误的是(  )。

    • A.gets函数用于从终端读入字符串
    • B.getchar函数用于从磁盘文件读入字符
    • C.fputs函数用于把字符串输出到文件
    • D.fwrite函数用于以二进制形式输出数据到文件
  25. 若变量已正确定义并赋值,以下符合C++语言语法的表达式是(  )。

    • A.a:=b+1
    • B.a=b=c+2
    • C.intl8.5%3
    • D.a=a+7=c+b
  26. 计算机能直接执行的程序是(  )。

    • A.源程序
    • B.目标程序
    • C.汇编程序
    • D.可执行程序
  27. 有下列程序:

    #include

    voidmain(  )

    {

    intx=1,y=0,a=0,b=0;

    switch(x)

    {case1:

    switch(y)

    {

    Case0:a++;break;

    case1:b++break;

    }

    case2:a++;b++;break;

    case3:a++;b++;

    }

    printf(”a=%d,b=%d\n”,a,b);

    }

    程序的运行结果是(  )。

    • A.a=1,b=0
    • B.a=2,b=2
    • C.a=1,b=1
    • D.a=2,b=1
  28. 有3个关系R、S和T如下:

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

    • A.并
    • B.自然连接
    • C.笛卡儿积
    • D.交
  29. 有以下类定义:

    classMyClass

    {

    private:

    intid;

    chargender;

    char*phone;

    public:

    MyClass():id(0),gender('#'),phone(NULl){}

    MyClass(intn0,charge='#',char*ph=NULL)

    {id=no;gender=ge;phone=ph;}

    };

    下列类对象定义语句中错误的是(  )。

    • A.MyClassmyObj;
    • B.MyClassmyObj(11,"13301111155");
    • C.MyClassmyObj(12,'m');
    • D.MyClassmyObj(12);
  30. 有如下程序:

    #included

    usingnamespacestd;

    classTestClass

    {private:

    intX,y;

    public:

    TestClass(inti,intj)

    {x=i;

    y=j;}

    voidprint()

    {cout<<"printl"<

    voidprint()const

    {cout<<"print2"<

    intmain()

    {constTestClassa(1,2);

    print(); 

    return0;}

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

    • A.printl
    • B.print2
    • C.printlprint2
    • D.程序编译时出错
  31. 有下列程序:

    #include

    structst

    {intx,Y,date[2]={1,10,2,20};

    voidmain(  )

    {structst*p=date;

    printf("%d,",p->y);printf("%d\n",(++p)

    ->x);

    }

    程序的运行结果是(  )。

    • A.10,1
    • B.20,1
    • C.10,2
    • D.20,2
  32. 算法的空间复杂度是指(  )。

    • A.算法程序的长度
    • B.算法程序中的指令条数
    • C.算法程序所占的存储空间
    • D.算法执行过程中所需要的存储空间
  33. 若AA为一个类,a为该类的非静态数据成员,在该类的一个成员函数定义中访问a时,其书写格式为(  )。

    • A.a
    • B.AA.a
    • C.a{}
    • D.AA:a{}
  34. 下列关于运行符重载的描述中,正确的是(  )。

    • A.运算符重载可以改变操作数的个数
    • B.运算符重载可以改变操作数的优先级
    • C.运算符重载可以改变运算符的结合性
    • D.运算符重载可以使运算符实现特殊功能
  35. 已知一个有序线性表为(13,18,24,35,47,50,62,83,90,115,134),当用二分法查找值为90的元素时,查找成功的比较次数为(  )。

    • A.1
    • B.2
    • C.3
    • D.9
  36. 有如下函数模板定义:

    template

    T1FUN(T2n){returnn*5,0;}

    若要求以int型数据9作为函数实参调用该模板,并返回一个double型数据,则该调用应表示为(  )。

    • A.FUN(9)
    • B.FUN<9>
    • C.FUN(9)
    • D.FUN<9>(double)
  37. 下列叙述中正确的是(  )。

    • A.在模块化程序设计中,一个模块应该尽量多地包括与其他模块联系的信息
    • B.在自顶向下、逐步细化的设计过程中,首先应设计解决问题的第一个细节
    • C.在模块化程序设计中,一个模块内部的控制结构也要符合结构化原则
    • D.在程序设计过程中,不能同时采用结构化程序设计方法与模块化程序设计方法
  38. 在面向对象方法中,不属于“对象”基本特点的是(  )。

    • A.一致性
    • B.分类性
    • C.多态性
    • D.标识唯一性
  39. 下列叙述中正确的是(  )。

    • A.一个算法的空间复杂度大,则其时间复杂度必定大
    • B.一个算法的空间复杂度大,则其时间复杂度必定小
    • C.一个算法的时间复杂度大,则其空间复杂度必定小
    • D.上述三种说法都不对
  40. 下列排序方法中,最坏情况下比较次数最少的是(  )。

    • A.冒泡排序
    • B.简单选择排序
    • C.直接插入排序
    • D.堆排序
  41. 有以下程序:

    #include

    usingnamespacestd;

    classsample

    {

    private:

    intn;

    public:

    sample(){}

    sample(intm)

    {

    n=m:

    }

    sampleadd(samplesl,samples2)

    {

    this->n=s1.n+s2.n;

    return(*this);

    }

    voiddisp()

    {

    cout<<"n="<

    }

    };

    intmain()

    {

    samples1(10),s2(5),s3;

    s3.add(s1,s2);

    s3.disp();

    return0:

    }

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

    • A.n=10
    • B.n=5
    • C.n=20
    • D.n=15
  42. 已知数组arr的定义如下:

    intarr[5]={1,2,3,4,5};下列语句中输出结果不是2的是(  )。

    • A.cout<<*arr+1<
    • B.COUt<<*(arrt+1)<
    • C.cout
  43. 源程序的文档化不包括(  )。

    • A.符号名的命名要有实际意义
    • B.正确的文档形式
    • C.良好的视觉组织
    • D.正确的程序注释