问答题使用VC6打开考生文件夹下的源程序文件modil.cpp,该程序运行时有错误,请改正其中的错误,使程序正常运行,并且输出以下结果:  4,5.  7,8  4,8.  注意:错误的语句在//******error******的下面,修改该语句即可。

题目
问答题
使用VC6打开考生文件夹下的源程序文件modil.cpp,该程序运行时有错误,请改正其中的错误,使程序正常运行,并且输出以下结果:  4,5.  7,8  4,8.  注意:错误的语句在//******error******的下面,修改该语句即可。

相似考题
更多“问答题使用VC6打开考生文件夹下的源程序文件modil.cpp,该程序运行时有错误,请改正其中的错误,使程序正常运行,并且输出以下结果:  4,5.  7,8  4,8.  注意:错误的语句在//******error******的下面,修改该语句即可。”相关问题
  • 第1题:

    使用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<<C.n<<endl; cout<<C0::n<<endl; }


    正确答案:
    (1)“staticintn=O”应改为“staticintn;”。
    (2)“intCO::n;”应改为“intCO::n=0;”。
    (3)“cout<<c.n<<endl;”应改为“cout<<c->n<<endl;”。
    【解析】本题要在屏幕上输出两个字符,首先要静态变量初始化,第1处应改为“staticintn;”,第2处要给n赋值,第3处输出时引用c的对象,应改为“cout<<c->n<<endl;”。

  • 第2题:

    请使用VC6或使用【答题】菜单打开考生文件夹projl下的工程projl,该工程含有一个源程序文件pn,jl.cpp。其中位于每个注释“//ERROR 木}}水found}}水木”之后的一行语句存在错误。请改正这些错误,使程序的输出结果为: The value is 10 注意:只修改注释“//ERROR **** found****”的下一行语句,不要改动程序中的其他内容。 //pmjl.cpp include<iostream> using namespace std; class MyClass{ int value; public: //ERROR********found********* void MyClass(int val):value(val){} int GetValueconst{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<<endl: return 0; }


    正确答案:
    (1)MyClass(int val):value(val){}
    (2)void MyClass::SetValue(int val){value=val;}
    (3)cout“”The value is”“obj.GetValue“end1;

  • 第3题:

    使用VC++6.0打开考生文件夹下的源程序文件1.cpp,该程序运行时有错,请改正错误,使得程序正确执行,并且输出以下语句: TC1:0 TC2 注意:不要改动main函数,不能增加或删除行,也不能更改程序的结构,错误的语句在//******error******的下面。 试题程序: include<iostream.h> structTC1 { TCl(inti=0) { m_i=i; } voidprint { cout<<"TCl:"<<m_i<<endl; } intm_i; }; classTC2 { public: TC2 { } voidprint { cout<<"TC2"<<endl: } //********error******** private: ~TC2 { } }; intmain { //********error******** TC1obj1; //********error******** TC20bj2; obj1.print; obj2.print; return0; }


    正确答案:
    (1)应改为“public:”。
    (2)应改为“TClobj1(0);”或“TClobjl;”。
    (3)应改为“TC20bj2;”。
    【解析】本题第1处的“private:~TC2”是析构函数,它不是私有的,所以这里应该删除“private:”或修改为“pub-lic:”。第2处的“TClobjl;”语句是定义一个TCl类型的对象objl,根据类TCl构造函数的定义“TCl(inti=o)”,知道存在整型参数,应该补充参数,或者只是先定义一个对象名,然后在使用时补充参数,即修改为“TClobjl(0);或TClobil;”。第3处的“TC20bj2;”语句修改为“TC20bj2;”。

  • 第4题:

    使用VC6打开老考生文件夹下的工程test5_1,此工程包含一个源程序文件test5_1.cpp,但该程序运行有问题,请改正程序中的错误,使程序的输出结果如下:

    x=3 y=5 z=0

    8

    源程序文件test5_1.cpp清单如下:

    include<iostream.h>

    static int x=5;

    int z=0;

    int *add(int x,int y)

    {

    cout<<"X="<<X<<"y="<<y<<" Z="<<z<<endl;

    z=z+x+y;

    /********found*********/

    return z;

    /********found*********/

    };

    void main()

    {

    int y=5;

    int x=3;

    /*********found********/

    cout<<&(add(X,y))<<endl;

    }


    正确答案:(1)错误:return z; 正确:return &z; (2)错误:}; 正确:} (3)错误:cout&(add(xy))endl; 正确:cout*(add(xy))endl;
    (1)错误:return z; 正确:return &z; (2)错误:}; 正确:} (3)错误:cout&(add(x,y))endl; 正确:cout*(add(x,y))endl; 解析:(1)主要考查考生对于函数返回类型的掌握,该函数的返回值应该是指向int型的指针,所以应该将地址作为返回值:
    (2)主要考查考生对于类定义格式与函数定义格式区别的掌握,类的定义最后应该使用“;”而函数不需要用“;”;
    (3)主要考查考生对于有返回值的函数调用的掌握,函数定义是返回指针型的,调用的时候就应该使用取地址符号。

  • 第5题:

    使用VC6打开考生文件夹下的工程test29_1,此工程包含一个源程序文件test29_1.cpp,但该程序运行有问题,请改正程序中的错误,使该程序的输出结果为:

    A:no parameters

    B:int parameter

    A:no parameters

    B:int parameter

    C:int parameter

    源程序文件test29_1.cpp清单如下;

    include <iostream.h>

    class A

    {

    /***************** found *****************/

    private:

    A(){ cout<<"A:no parameters\n";}

    A(int a) {cout<<"A: int parameter\n";}

    };

    class B:public A

    {

    public:

    B(int a){cout<<"B:int Parameter\n";}

    };

    /***************** found *****************/

    class C:public B,public A

    {

    public:

    /***************** found *****************/

    C(int a) ::B(a) {cout<<"C: int parameter\n"; )

    };

    void main ( )

    {

    B b(1);

    C c(2);

    }


    正确答案:(1)错误:private: 正确:public: (2)错误:class C:public Bpublic A 正确:class C:public B (3)错误:C(int a)::B(a){cout"C:int parameter\n";) 正确:C(int a):B(a){cout"C:int parameter\n";}
    (1)错误:private: 正确:public: (2)错误:class C:public B,public A 正确:class C:public B (3)错误:C(int a)::B(a){cout"C:int parameter\n";) 正确:C(int a):B(a){cout"C:int parameter\n";} 解析:(1)一个类的构造函数和析构函数可以由系统自动生成,也可以由用户提供,但构造函数和析构函数都必须是该类的公有成员函数,否则编译时将出现错误,不能被调用;
    (2)A已经是B的基类,C公有继承B,A也就成为了C的基类,根据程序的运行结果可知,C是要公有继承B;
    (3)派生类的构造函数,初始化基类的参数,调用基类的构造函数时,使用符号“:”,而不是“::”;

  • 第6题:

    使用VC6打开考生文件夹下的工程test21_1,此工程包含一个源程序文件test21_1.cpp,但该程序运行有问题,请改正程序中的错误,使程序的输出结果如下:

    The grade is 3

    源程序文件test21_1.cpp清单如下:

    include<iostream.h>

    class student

    {

    private:

    int grade;

    public:

    /**************** found*******************/

    student(int thegra):(thegra){}

    ~student(){}

    int get_grade(){return grade;}

    };

    void main()

    {

    int thegra=3;

    /**************** found*******************/

    student point=new student(thegra);

    /**************** found*******************/

    cout<<"The grade is"<<point.get_grade()<<endl;

    delete point;

    }


    正确答案:(1)错误:student(int thegra):(thegra){} 正确:student(int thegra):grade(thegra){} (2)错误:student point=new student(thegra) 正确:student*point=new student(thegra); (3)错误:cout"The grade is"point.get_grade()endl; 正确:cout"The grade is"point->get_grade()endl;
    (1)错误:student(int thegra):(thegra){} 正确:student(int thegra):grade(thegra){} (2)错误:student point=new student(thegra) 正确:student*point=new student(thegra); (3)错误:cout"The grade is"point.get_grade()endl; 正确:cout"The grade is"point->get_grade()endl; 解析:(1)主要考查考生对于构造函数使用参数列表初始化数据成员的掌握,可以使用参数列表的形式,也可以在函数内部实现,不过参数赋值的双方都必须出现,本题的错误就在于并没有把参数赋值给数据成员;
    (2)主要考查考生对于使用指针申请动态空间的方法的理解,new运算符申请的空间返回值为指针类型,指针类型的定义是在变量名前加上“*”;
    (3)主要考查考生对于对象指针调用成员函数方法的掌握,必须使用符号“->”,而对象本身使用符号“.”。

  • 第7题:

    使用VC6打开考生文件夹下的工程test35_1,此工程包含一个源程序文件test35_1.cpp,但该程序运行有问题,请改正程序中的错误,使该程序的输出结果为:

    400

    40

    源程序文件test35_1.cpp清单如下:

    include <iostream.h>

    class Student

    {

    public:

    Student(int xx){x=xx;}

    virtual float calcTuition();

    /***************** found *****************/

    private:

    int x;

    };

    float Student::calcTuition()

    {

    return float(x'x);

    }

    /***************** found *****************/

    class GraduateStudent::public Student

    {

    public:

    /***************** found *****************/

    GraduateStudent(int xx) ::Student(xx){}

    virtual float calcTuition();

    };

    float GraduateStudent::calcTuition()

    {

    return float(x*2);

    }

    void main()

    {

    Student s(20);

    GraduateStudent gs(20);

    cout<<s.calcTuition()<<end1;

    cout<<gs.calcTuition()<<end1;

    }


    正确答案:(1)错误:private: 正确:protected: (2)错误:class GraduateStudent::public Student 正确:class GraduateStudent:public Student (3)错误:GraduateStudent(int XX)::Student(xx){} 正确:GraduateStudent(int xx):Student(xx){}
    (1)错误:private: 正确:protected: (2)错误:class GraduateStudent::public Student 正确:class GraduateStudent:public Student (3)错误:GraduateStudent(int XX)::Student(xx){} 正确:GraduateStudent(int xx):Student(xx){} 解析:(1)本题考查点为派生类对基类成员的访问。派生类中的成员不能访问基类中的私有成员,只可以访问基类中的公有成员和保护成员。
    (2)派生类的一般格式“class派生类名>:继承方式1>基类名1>,……{派生类新定义成员>};”,所以应将“::”改为规定的“:”,“::”是作用域运算符,用来标识某个成员属于某个类。
    (3)派生类构造函数在类体内定义的一般格式“派生类名>:基类名1>(参数表1>),……{派生类构造函数体>}”,所以应将“::”改为规定的“:”。

  • 第8题:

    使用VC++6.0打开考生文件夹下的源程序文件1.cpp,该程序运行有问题,请改正main函数中的错误,使程序的输出结果为: number=1 number=10 number=100 注意:不要改动main函数,不能增加或删除行。也不能更改程序的结构,错误的语句在//******error******的下面。 试题程序: include<iostream.h> classTC { public: TC(inti) { number=i; } voidSetNumber(intm) { number=m; } intGetNumberconst { returnnumber; } voidPrintconst { cout<<"number="<<number<<endl; } private: intnumber; }; voidmain { //********error******** TCobjl; objl.Print; TCobj2(3); //********error******** objl.number=10; //********error*‰****** TC.SetNumber(100); objl.Print; obj2.Print; }


    正确答案:
    (1)应改为“TCobjl(1);”。
    (2)应改为“0bj1.SetNumber(10);”。
    (3)应改为“0bj2.SelNumber(100);”。
    【解析】本题第1处的“TCobjl;”语句是声明TC类的对象0bj1,根据TC类构造函数的定义TC(inti),存在整型参数,并且题目要求第一个输出结果两1,所以补全参数1,即第1处的“TCobjl(1);”。第2处处的“objl.number=10;”应该是调用成员函数SetNumber赋值。在C++中成员函数的使用形式应该是:对象名.成员函数,所以修改为“obj1.SetNumber(10);”。类是对象的抽象,而对象是类的具体实例。第3处“TC.SetNumber(100);”语句中的TC为类,并不是对象,这里应该使用定义的对象,即obj2,所以将语句修改为“obj2.SetNumber(100);”。

  • 第9题:

    在考生文件夹下完成如下简单应用: 1.打开“课程管理”数据库,使用SQL语句建立一个视图salary,该视图包括系号和平均工资两个字段,并且按平均工资降序排列。将该SQL语句存储在four.prg文件中。 2.打开考生文件夹下的表单six,如下图所示。其中,“登录”命令按钮的功能是:当用户输入用户名和口令以后,单击“登录”按钮时,程序在自由表“用户表”中进行查找,若找不到相应的用户名,则提示“用户名错误”,若用户名输入正确,而口令输入错误,则提示“口令错误”。修改“登录”命令按钮Click事件中标有错误的语句,使其能够正确运行。注意:不得做其他修改。


    正确答案:
    (1)【操作步骤】
    步骤1:单击工具栏中的“打开”按钮,打开考生文件夹下的数据库文件“课程管理”。
    步骤2:单击工具栏中的“新建”按钮,新建一个程序,输人如下代码。
    CREATE sql VIEW salary AS SELECT教师表.系号,AVG(教师表.工资)As平均工资FROM教师表;
    GROUP BY教师表.系号0RDER BY 2 DESC 步骤3:保存程序为four.prg,并运行该程序。
    (2)【操作步骤】
    步骤1:单击工具栏中的“打开”按钮,打开考生文件夹下的表单six.sex,“登录”按钮中的代码如下。
    ************“登录”按钮的Click事件代码************
    USE用户表
    GO TOPflag=0
    &&下面语句有错误
    wHILE.NOT.EOF
    IF Alhrim(用户名)==Alltrim(This form.Text1.Value)IF Alltrim(口令)==Alltrim(Thisform.Text2.Value)WAIT”欢迎使用”WINDOW TIMEOUT 2
    ELSE
    WAIT”口令错误”WINDOW TIMEOUT 2ENDIF
    flag=1EXITENDIF&&下面语句有错误
    NEXTENDD0&&下面语句有错误
    CASE FLAG=0
    WAIT”用户名错误”WINDOW TIMEOUT 2FNnTF
    ************************
    步骤2:修改程序中的错误如下。
    错误l:将“WHILE”改为“DO WHILE”。
    错误2:将“NEXT”改为“SKIP”。
    错误3:将“CASE”改为“IF”。
    步骤3:保存并运行表单。

  • 第10题:

    问答题
    使用VC6打开考生文件夹下的源程序文件modil.cpp,该程序运行时有错误,请改正其中的错误,使程序正确运行。并且使程序输出的结果为:  OK  注意:错误的语句在//********error********的下面,修改该语句即可。

    正确答案: 1.将语句“virtual void func();”修改为“virtual void func()=0;”
    2.将语句“cout<<OK<endl;”修改为“cout<<OK<<endl;”
    3.将语句“CDerive1 *p = (CDerive1*) obj;”修改为“CDerive1 *p=(CDerive1*) &obj;”
    解析:1.类CDerive1中的func()函数是纯虚函数,定义格式为:virtual <函数类型> <函数名> (<参数表>)=0,因此第1个标识下应将语句“virtual void func();”修改为“virtual void func()=0;”。
    2.第2个标识下的cout流中,输出数据用流插入运算符“<<”顺序加入,应改成“cout<<OK<<endl;”
    3.虚函数有非多态调用和多态调用两种调用方式,非多态调用是指不使用指针或引用的直接调用,多态调用是指通过对象的指针或引用的调用。主函数定义了CDerivel*p,p是基类CDerive1的指针,采用多态调用方式,将派生类对象的地址赋给基类指针p,因此第3个标识下应改为“CDerive1 *p=(CDerive1*) &obj;”。
    解析: 暂无解析

  • 第11题:

    问答题
    使用VC6打开考生文件夹下的源程序文件modi1.cpp,该程序运行时有错误,请改正程序中的错误,使得程序输出:  number1=4.8   number2=93.6   number3=0.9  PRODUCT=404.352  注意:错误的语句在∥******error******的下面。修改该语句即可。其他的语句不能修改。

    正确答案: 1.修改为“double product=number1* number2 * number3;”
    2.修改为“cout<<number1=<<number1<<'\t'<<number2=<<number2<<'\t';”
    3.修改为“cout<<number3=<<number3<<'\t'<<endl;”
    解析:1.变量product没有定义,number1、number2和number3均为double型变量,product是这三个变量的乘积,其数据类型是double型,因此第1个标识下应将语句“product = number1 * number2 * number3;”修改为“double product = number1 * number2 * number3;”。
    2.cout流中的数据是用流插入运算符“<<”顺序加入的,第2个标识下是输出number1、number2和number3的值,各个数据之间用“<<”顺序加入,不能用“<”,第2个标识下应将语句“cout<<number1=<<number1<'\t'<<number2=<<number2<'\t';”修改为“cout<<number1=<<number1<<'\t'<<number2=<<number2<<'\t';”。
    3.输出“PRODUCT=404.352”在“number1=4.8 number2=93.6 number3=0.9”的下一行,因此在输出“number3=0.9”后应换行,故第3个标识下的语句应该添加换行符,语句修改为“cout<<number3=<<number3<<'\t'<<endl;”。
    解析: 暂无解析

  • 第12题:

    问答题
    使用VC6打开考生文件夹下的源程序文件modil.cpp,该程序运行时有错误,请改正程序中的错误。  本题的功能是:从键盘输入字符串s,然后输出字符串s中的字符个数。  注意:不要改动main函数,不能增行或删行,也不能更改程序的结构,错误的语句在//******error******的下面。

    正确答案: 1.std::cout<<″please input a string:″<<std::endl;
    2.using namespace std;
    解析:1.第1个标识实现在屏幕上输出“please input a string:”的提示语句。在程序中用到C++标准库时,要使用std标准命名空间进行限定。cout为标准库函数,所以要声明cout是在命名空间std中定义的流对象,即第1个标识下的“std::cout<<″please input a string:″<<std::endl;”。
    2.第2个标识下的“namespace std;”语句是使用标准命名空间std,格式应该为“using namespace std;”。
    解析: 暂无解析

  • 第13题:

    使用VC++6.0打开考生文件夹下的源程序文件1.cpp,该程序运行时有错。请改正程序中的错误,使程序输出的结果为 100 37 32 注意:错误的语句在//******error******的下面,修改该语句即可。 试题程序: include<iostream.h> //******error****** voidmain { //******error****** intm=0142: //******error****** intn=0X27: intq=32; cout<<m<<endl; cout<<n<<endl; cout<<q<<endl; return; }


    正确答案:
    (1)“voidmain”。
    (2)“intm=0144;”。
    (3)“intn=OX25;”或“intn===0x25;”。
    【解析】本题主要考查了主函数定义及幂同进制之间的转换,包括十进制到八进制,十进制到十六进制。主函数定义的定义形式为“main”,函数名之后必须是一对括号,因此第1处应改为“voidmain”。cout输出默认是以十进制方式输出的,根据题目要求输出的结果可发现变量的初值不正确,十进制的100对应八进制的144,卡进制的37对应十六进制的25,因此2和3应分别改成“intm=0144;”,“intn=0×25;”或“intn=0×25;”。

  • 第14题:

    使用VC++6.0打开考生文件夹下的源程序文件1.cpp,该程序运行时有错误,请改正错误,使程序正常运行,并且要求最后一个catch必须抛出执行的任何异常。

    程序异常,输出信息为

    error

    O

    ERROR

    注意:不要改动main函数,不能增加或删除行,也不能更改程序的结构,错误的语句在//******error******的下面。

    试题程序:

    include<iostream.h)

    intmain

    {

    try

    {

    throw("error");

    }

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

    catch(chars)

    {

    cout<<s<<endl;

    }

    try

    {

    throw((int)0);

    }

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

    catch

    {

    cout<<i<<endl;

    }

    try

    {

    throw(O);

    throw("error");

    }

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

    catch

    {

    cout<<"ERROR"<<endl;

    }

    return0;

    }


    正确答案:

    (1)应改为“catch(char*s)”。

    (2)应改为“cateh(inti)”。

    (3)应改为“catch(…)”。

    【解析】本题中第1个标识前的异常抛出语句为“throw("error");”,其中的类型为字符串。所以对应的异常捕捉语句catch中应该符合这个类型,而程序中给出的语句“catch(chars)”是字符型的,所以第1处的语句修改为“catch(char*S)”。第2个标识前的异常抛出语句为“throw((int)0);”,其中的类型为int。对应的异常捕捉语句catch中应该符合这个类型,所以补充catch子句中的类型,否则如果找不到匹配的catch块,系统就会调用一个系统函数,使程序终止运行。即第2处的语句修改为“catch(inti)”。如果在catch子句中没有指定异常信息的类型,那么就用删节号“…”表示它可以捕捉任何类型的异常信息,即修改为“catch(…)”。


  • 第15题:

    打开myprog程序,该程序包含3条SQL语句,每条语句都有一个错误,请改正。


    正确答案:步骤1:单击工具栏的[打开]按钮在[打开]对话框中选择“nyprog.prg”再单击[确定]按钮打开程序文件编辑窗口文件中正确程序段如下所示: select * from 股票 where 股票代码="600008" update 数量 set 现价=现价*1.1 select 股票代码现价*持有数量 as 总金额 from 数量 步骤2:单击工具栏的[运行]按钮运行程序查看结果即可。
    步骤1:单击工具栏的[打开]按钮,在[打开]对话框中选择“nyprog.prg”,再单击[确定]按钮,打开程序文件编辑窗口,文件中正确程序段如下所示: select * from 股票 where 股票代码="600008" update 数量 set 现价=现价*1.1 select 股票代码,现价*持有数量 as 总金额 from 数量 步骤2:单击工具栏的[运行]按钮,运行程序查看结果即可。

  • 第16题:

    使用VC6打开考生文件夹下的工程test30_1,此工程包含一个源程序文件test30_1.cpp,但该程序运行有问题,请改正程序中的错误,使该程序的输出结果为:

    Previous=9,Next=11

    源程序文件test30_1.cpp清单如下:

    include <iostream.h>

    /***************** found *****************/

    void prevnext (int,int &,int&);

    int main ( )

    {

    int x=10,y,z;

    prevnext (x,y,z);

    cout << "Previous=" << y << ", Next=" << z<<end1;

    return 0;

    }

    /***************** found *****************/

    void prevnext (int x, int prev, int next)

    {

    /***************** found *****************/

    prev=x--;

    next=++x;

    }


    正确答案:(1)错误:在main()函数前缺少prevnext函数的声明 正确:void prevnext(intint &int &); (2)错误:void prevnext(int xint prevint next) 正确:void prevnext(int xint &prevint &next) (3)错误:prev=x--; 正确:prev=x-1;
    (1)错误:在main()函数前缺少prevnext函数的声明 正确:void prevnext(int,int &,int &); (2)错误:void prevnext(int x,int prev,int next) 正确:void prevnext(int x,int &prev,int &next) (3)错误:prev=x--; 正确:prev=x-1; 解析:(1)函数在使用前必须已经被定义,main()中调用prevnext函数,而该函数的实现在main()之后,所以在main()之前必须添加该函数的声明;
    (2)由运行结果可知,通过函数prevnext调动要改变main()中的实参值,所以prey和next都应为引用型参数:
    (3)由运行结果prev=x-1,而源程序的prev=x,x=x-1,这里涉及的是运算符的优先级问题。

  • 第17题:

    使用VC6打开考生文件夹下的工程test26_1,此工程包含一个源程序文件test26_1.cpp,但该程序运行有问题,请改正

    函数中的错误,使该程序的输出结果为:

    Values are: 1,2 and 3

    源程序文件test26_1.cpp清单如下;

    include <iostream.h>

    class CommonBase

    {

    public:

    int x;

    };

    /*****************found*****************/

    class DeriveCommonA::public CommonBase

    {

    public:

    int y;

    };

    class DeriveCommonB:public CommonBase

    {

    public:

    int z;

    };

    /*****************found*****************/

    class Overlapping:public DeriveCommonA; public DeriveCommonB

    {

    public:

    void Display()

    {

    cout<<"Values are: "<<DeriveCommonA::x<<", "<<y<<" and "<<z<<end1;

    }

    };

    int main ( )

    {

    Overlapping ov;

    /*****************found*****************/

    ov.x=1;

    ov.y=2;

    ov.z=3;

    ov.Display();

    return 0;

    }


    正确答案:(1)错误:class DeriveCommonA::public CommonBase 正确:class DeriveCommonA:public CommonBase (2)错误:class Overlapping:public DeriveCommonA;public DeriveCommonB 正确:class Overlapping:public DeriveCommonApublic DeriveCommonB (3)错误:ov.x=1; 正确:ov.DeriveCommonA::x=1;
    (1)错误:class DeriveCommonA::public CommonBase 正确:class DeriveCommonA:public CommonBase (2)错误:class Overlapping:public DeriveCommonA;public DeriveCommonB 正确:class Overlapping:public DeriveCommonA,public DeriveCommonB (3)错误:ov.x=1; 正确:ov.DeriveCommonA::x=1; 解析:(1)主要考查考生对于派生类定义的理解,C++规定的继承格式是在类名的后面加冒号,之后是继承方式和继承类的名称,题目中错误的使用了作用域运算符;
    (2)主要考查考生是否掌握了多继承的定义,多继承的格式基本上和单继承相同,不过在多个基类之间应该使用逗号分开,题目中错误的使用了分号,分号在C++中是结束标志;
    (3)主要考查考生对于派生类的对象访问的掌握,x是类CommonBase的成员,如果不加限制的访问就会产生二义性,编译程序不知道这个x是A类的,还是B类的,所以必须使用作用域限制符“::”,为了解决这个问题可以使用虚基类。

  • 第18题:

    使用VC6打开考生文件夹下的工程test36_1,此工程包含一个源程序文件test36_1.cpp,但该程序运行有问题,请改正函数中的错误,使该程序的输出结果为:

    2

    源程序文件test36_1.cpp清单如下:

    include<iostream.h>

    class amount;

    class coins

    {

    /***************** found *****************/

    enum units {penny, nickel, dime, quarter, half_dollar}

    /***************** found *****************/

    class amount;

    };

    class amount

    {

    /***************** found *****************/

    coins:units money;

    public:

    void setm();

    int germ();

    };

    void amount::setm()

    {

    money = coins::dime;

    }

    int amount::getm()

    {

    return money;

    }

    int main ( )

    {

    amount ob;

    ob.setm();

    cout << ob.getm()<<end1;

    return 0;

    }


    正确答案:(1) 错误;enum units{pennynickeldimequarterhalf_dollar} 正确:enum units {pennynickeldimequarterhalf_dollar}; (2) 错误:class amount; 正确:friend class amount; (3) 错误:coins:units money; 正确:coins::units money;
    (1) 错误;enum units{penny,nickel,dime,quarter,half_dollar} 正确:enum units {penny,nickel,dime,quarter,half_dollar}; (2) 错误:class amount; 正确:friend class amount; (3) 错误:coins:units money; 正确:coins::units money; 解析:(1)enum是枚举类型,units是本题中该类型的一个变量,后面为枚举表,大括号中为枚举符,枚举变量的值实际上是一个有名字的常量,所以它的定义结束时也需要一个分号;
    (2)类amount是类coins中定义的成员,要是想要访问coins类中的私有成员,把amount定义成普通的数据成员是不能做到的,只能把它定义成友元类,即可以访问coins类中的所有成员(提示:units是使用的默认定义,即私有成员);
    (3)units是类coins中的成员,在它的友元类中访问它时应该使用作用域符“::”,本题的错误是使用了冒号。

  • 第19题:

    使用VC++6.0打开考生文件夹下的源程序文件1.cpp,该程序运行时有错误,请改正其中的错误,使程序正确运行,并且使程序输出的结果为 0K 注意:错误的语句在//******error******的下面,修改该语句即可。 试题程序: include<iostream.h> 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"<endl; } private: inta; intb; }; voidmain { TC20bj; //******error****** TCl*p=(TCl*)obj; p->func; }


    正确答案:
    (1)应改为“virtualvoidfunc=0;”。
    (2)应改为“cout<<"0K"<(endl;”。
    (3)应改为“TCl*p=(TCl*)&obj;”。
    【解析】本题中TCl类中的func函数是纯虚函数,纯虚函数的定义格式为virtual<函数类型><函数名>((参数表>)=0”,因此第1处的语句应为“virtualvoidfunc=0;”。func函数没有参数表。编译程序后发现第2处的语句有错误,cout流中的数据是用流插入运算符“<<”顺序加入的,因此“<”不正确,应改成“cout<<"0K"<<endl;”。函数的调用方式有2种:非多态调用和多态调用,非多态调用是指不使用指针或引用的直接调用,多态调用是指通过对象的指针或引用的调用。在主函数中定义了Tel*P,P是指向基类TCl的指针,因此是多态调用方式,即通过对象的指针来调用,应该把派生类对象的地址赋给P,而不是对象名,因此第3处的语句应改为“TCl*p=(TCl*)&obj;”。

  • 第20题:

    使用VC++6.0打开考生文件夹下的源程序文件 1.cpp,该程序运行时有错误,请改正程序中的错误。本程序要求实现的功能为从键盘输入一个字符串,并将结果保存到文件1.txt中。 注意:不要改动main函数,不能增加或删除行,也不能更改程序的结构,错误的语句在 //******error******的下面。 试题程序: include<iostream> include<fstream> //********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:"<<endl; cin.getline(s,1024); WriteFile(s); return0; }


    正确答案:
    (1)应改为“usingnamespacestd;”。
    (2)应改为“outl.open("1.txt",ios::binary|ios::app);”。
    (3)应改为“out1.put(s[i]);”。
    【解析】本题第1处的“usingstd;”是在程序中引入标准命名空间std,对于C++中引入标准命名空间的格式,缺少namespace,所以第1处的语句修改为“usingnamespacestd;”。第2处,调用成员函数open中,输入、输出方式是在ios类中定义的,所以“out1.open("1.txt",binary|app);”语句缺少类ios,即第2处的语句修改为“out1.open("1.txt",ios::binary|ios::app);”。第3个标识应该用流成员函数put输出字符,所以第3处的语句修改为“out1.put(s[i]);”。

  • 第21题:

    请教:2016年计算机二级C++基础练习二简答题9如何解答?

    使用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="">

    (q+x)<;< p="">

    return0;

    }


      (1)应改为“for(x=0;x<5;x++)”。

      (2)应改为“cout<

      【解析】本题中根据数组a、b的定义。它们都有5个元素,而第1处的“for(x=0;x<=5;x++)”循环了6次,应该是5次,所以在第1处将其修改为“for(x=0;x<5;x++)”;第2处的P变量为指针型变量,p+x为糯向数组中第X个元素的地址,这里要输出的是存储单元的内容,所以使用“*”指针元素符,即修改为“cout<

  • 第22题:

    问答题
    使用VC6打开考生文件夹下的源程序文件modil.cpp,该程序运行时有错误,请改正程序中的错误,使得程序输出:  1,2,3,4,5,  注意:不要改动main函数,不能增行或删行,也不能更改程序的结构,错误的语句在//******error******的下面。

    正确答案: 1 public:TestClass(int i)
    2 int i(10);
    3 i--;
    解析:1.调试程序,错误提示类TestClass中的构造函数TestClass被定义为私有的,无法获得,因此这里应该改变类的访问修饰符为public,即“public:TestClass(int i)”。
    2.题目中要求输出结果为1,2,3,4,5,即循环5次。第三个标识处,while循环条件是i大于5。题干中要求不能删除i初始化中的括号,所以在括号中添加i的初始值。i要大于5且while循环要执行5次,所以i的初始值为10,而while循环中对i的操作应该是i--,这样第二个和第三个标示下应该是“int i(10);”和“i--”。
    解析: 暂无解析

  • 第23题:

    问答题
    使用VC6打开考生文件夹下的源程序文件modi1.cpp,该程序运行时有错,请改正其中的错误,使程序正常运行,并使程序输出的结果为:  Max is 7  提示:max()函数实现找出两个数中的最大值,并作为函数值返回。  注意:错误的语句在∥******error******的下面,修改该语句即可。

    正确答案: 1.将语句“int max(int a, int b)”修改为“int max(int&a,int &b)”
    2.将语句“max(-3,n);”修改为“max(m,n);”
    解析:1.函数max采用的参数传递机制是传地址,因此第1个标识下应该将语句“int max(int a, int b)”修改为“int max(int&a,int &b)”。
    2.调用函数max,实参类型应为一个整型变量,第2个标识下应将语句“max(-3,n);”修改为“max(m,n);”。
    解析: 暂无解析