参考答案和解析
正确答案:

 

更多“下面代码有何错误void func1(){int *pa = NULL;func2(pa);delete pa;}void func2(int *pb){pb = new int(5);}”相关问题
  • 第1题:

    有如下程序include using namespace std;class A{public:virtual void func1 (){ cou

    有如下程序#include <iostream>using namespace std;class A{public:virtual void func1 (){ cout<<"A1"; }void func2(){ cout<<"A2"; }};class B: public A{public:void func l(){ cout<<"B1"; }void func2(){ cout<<"B2"; }};int main() {A *p=new B;p->func1();p->func2();return 0;}运行此程序,屏幕上将显示输出( )。

    A.B1B2

    B.A1A2

    C.B1A2

    D.A1B2


    正确答案:C

  • 第2题:

    已知一个类A,类A有三个公有成员:void f1(int),void f2(int)和int a;定义指向类A成员函数的指针是( )。

    A.A*p;

    B.int A::*Pc=&A.a;

    C.void(A::*pA) ();

    D.void(A::*p


    正确答案:C
    解析:A定义了一个类的对象指针;B定义一个类A数据成员指针;C定义了一个类A的成员函数指针;D定义一个类A的对象指针数组。

  • 第3题:

    下面程序编译时发现ma[3]=9错误,其原因是______。 include class FunArray { int*pa;

    下面程序编译时发现ma[3]=9错误,其原因是______。

    include<iostream.h>

    class FunArray

    {

    int*pa; //指向一个数组空问

    int size; //数组元素个数

    public:

    FunArray(int a[],int thesize):pa(a),size(thesize){}

    int Size( ){return size;}

    }

    };

    void main( )

    {

    int s[]={3,7,2,1,5,4};

    FunArray ma(s,sizeof(s)/sizeof(int));

    ma[3]=9;

    cout<<ma[3]<<endl;

    }


    正确答案:没有重载[]运算符
    没有重载[]运算符 解析:ma不是一般的数组,而是一个新定义的类,尽管该类封装了一个数组,但新类并没有提供[]操作符的具体实现,因此是错误的。

  • 第4题:

    设有C语言变量说明“static int a[][2]={{1,2),(3,4}};int *pa,(*pb)[2];”,则执行语句“pa=pb=&

    设有C语言变量说明“static int a[][2]={{1,2),(3,4}};int *pa,(*pb)[2];”,则执行语句“pa=pb=&a[0][0];”后,(*(pa+1))的值为(31)。

    A.2

    B.3

    C.&a[0][1]

    D.&a[1][0]


    正确答案:A
    解析:对于语句“pa=pb=&a[0][0];”赋值后pb已经变为列指针,则pa也是列指针。在进行TC编译时,会出现“Warning:Suspiciouspointerconversioninfunctionmain”的提示信息,表明pb由行指针变为列指针。

  • 第5题:

    有如下程序void func1(int st[],int i){ printf("%c",st[i]); if(i}void func2(int st[],int i){ printf("%c",st[i]); if(i}main(){ char st[ ]="hello,friend! "; int i=0;func1(st,i); printf("\n");}程序执行后输出的结果是A.hello B.hel C.hlo D.编译出错


    正确答案:D
    本题主要考查全局变量的作用域。在本题中,程序首先声明两个无返回值函数func1和func2。func1函数带有两个形参,一个是需要输出的数字,一个是输出数组元素的下标。在函数体中,首先输出以形参作为下标的数组元素值,然后执行if条件判断语句,其条件为形参变量i<3。如果结果为真,则将变量i加2后保存,然后调用func2函数;如果条件结果为假,则结束该函数。
    从程序中不难看出,func2函数与func1函数基本类似,只是最后它对函数func1进行调用,与前者不同,两个函数是互相调用的。
    在主函数中首先定义了一个字符数组,并赋了初值,然后定义一个变量i并赋值为0,如果数组st是一个全局数组,那么调用函数func1,根据我们对函数func1的分析可知,此时能输出st[0]即字符’h’,而此时if语句的结果为真,执行i加2并调用func2函数操作。此时变量i的值为2,因此,输出st[2]即字符‘l’,此时函数func2中的if条件语句结果为真,同样执行i加2并调用func1函数操作,然后通过func1函数输出st[4]即字符‘o’,但由于数组只是一个局部数组,局部数组的作用域是定义它的函数或者程序段,调用函数func1时,数组有效,当再调用函数func2时,已经超出了数组的作用域。因此,系统在编译时会报错。本题答案选D。

  • 第6题:

    下面程序执行后的结果是()。includeusing namespace std;void func1(int i);void func

    下面程序执行后的结果是( )。 #include<iostream> using namespace std; void func1(int i); void func2(int i); char st[]="hello, friend!"; void func1(int i) { cout<<st[i]; if(i<3){i+=2;func2(i);} } void func2(int i) { cout<<st[i]; if(i<3){i+=2;func1(i);} } void main() { int i=0;func1(i);cout<<endl;}

    A.ello

    B.hel

    C.hlo

    D.him


    正确答案:C
    解析:主函数中调用func1()函数,实参赋值为0,在该函数中先输出st[0],即“h,,;然后func1()函数又调用func2()函数,实参赋值为2,func2()函数运行时先输出st[2],即“1”;然后又调用func1()函数,实参赋值为4,func1()函数运行时先输出st[4],即“o”。

  • 第7题:

    下面代码有何错误

    void func2(int *value)

    {

    *value = 2;

    }

    void func1()

    {

    int *p = 0;

    func2(p);

    }


    正确答案:
     

  • 第8题:

    C 程序写运行结果。

    class A

    {

    public:

    void f1()

    {

    printf("A::f1\r\n");

    }

    virtual void f2()

    {

    printf("A::f2\r\n");

    }

    void callfunc()

    {

    printf("A::callfunc\r\n");

    f1();

    f2();

    }

    };

    class B :public A

    {

    public:

    void f1()

    {

    printf("B::f1\r\n");

    }

    void f2()

    {

    printf("B::f2\r\n");

    }

    void callfunc()

    {

    printf("B::callfunc\r\n");

    f1();

    f2();

    }

    };

    int main()

    {

    B *pB=new B;

    pB->callfunc();

    A *pA=pB;

    pA->callfunc();

    return 0;

    }


    正确答案:
     

  • 第9题:

    有下列程序void func1(int i);void func2(int i);char st[ ]="hello,friend! ";void func1(int i){ printf("%c",st[i]); if(i<3){i+=2;func2(i);}}void func2(int i){ printf("%c",st[i]); if(i<3){i+=2;func1(i);}}main(){ int i=0;func1(i); printf("\n");}执行后的输出结果是A.hello B.helC.hlo D.hlm


    正确答案:C
    根据变量作用域与其定义语句在程序中出现位置之间的关系,可把变量分为局部变量和全局变量两种。其中,在函数外部定义的变量叫做全局变量,又称为外部变量;在函数体内定义的变量是局部变量,又称为内部变量。全局变量的作用域是整个程序,而局部变量的作用域是定义它的函数或者程序段。
    在本题中,程序首先声明两个无返回值函数func1和func2,然后定义一个全局数组st。做这类除主函数外,有其他函数的试题时,首先需要分析其他函数来得知函数的作用,然后再看主函数。
    func1函数带有一个整型变量的形参,在函数体中,首先输出以形参作为下标的数组元素值,然后执行if条件判断语句,其条件为形参变量i<3。如果结果为真,则将变量i加2后保存,然后调用func2函数;如果条件结果为假,则结束该函数。
    从程序中不难看出,func2函数与func1函数基本类似,只是最后它对函数func1进行调用,与前者不同,两个函数是互相调用的。
    在主函数中定义一个变量i并赋值为0,然后调用函数func1,根据我们对函数func1的分析可知,输出st[0]即字符‘h’,而此时if语句的结果为真,执行i加2并调用func2函数操作。此时变量i的值为2,因此,输出st[2]即字符‘l’,此时函数func2中的if条件语句结果为真,同样执行i加2,并调用func1函数操作,然后通过func1函数输出st[4]即字符‘o’,此时由于变量i的值等于4,是大于3的,函数结束。程序运行到出口,最后输出换行。因此,本程序最终的输出结果是hlo。

  • 第10题:

    对于类定义 class A{ public: virtual void func1( ){} void func2( ){} }; class B:public A{ public: void func1( ){cout<<"class B func 1"< < end1;} virtual void func2( ){cout << "class B func2"<< end1;} }; 下面正确的

    A.A::func2( )和B::func1( )都是虚函数

    B.A::func2( )和B::func1( )都不是虚函数

    C.B::func1( )是虚函数,而A::func2( )不是虚函数

    D.B::func1( )不是虚函数,而A::func2( )是虚函数


    正确答案:C
    解析:基类中说明的虚函数,在派生类中自然就是虚函数,所以类B中funcl()是虚函数;而类A中的func2没有被关键字virtual修饰,所以不是虚函数。

  • 第11题:

    有以下程序: #include 〈iostream〉 using namespace std; class A { public: virtual void setx(int i,int j=0) { x=i; y=j; } virtual void print()=0; protected: int x,y; }; class B : public A { public: void print() { cout〈〈x*x〈〈", "; } }; class C : public A { public: void print() { cout〈〈x*x*x〈〈end1; } }; int main() { A *pa; B b; C c; pa=&b; pa->setx(5); pa->print (); pa=&c; pa->setx(2); pa->print(); return 0; } 程序运行后的输出结果是( )。

    A.25,8

    B.2,5

    C.5,2

    D.8,25


    正确答案:A
    解析:该程序中定义了A类、B类和C类共3个类。其中,类A是抽象类,它的类体内有一个纯虚函数pnnt()。抽象类不可以定义对象,但可以定义指向对象的指针。类B和类C都是类A的公有派生类,这些类是具体类,它们对A类中纯虚函数都有不同的实现。该程序的主函数中,定义一个指向类A对象的指针pa,又定义了类B和类C的2个对象,并使指针pa分别指向这些对象。这里,采用动态联编,在运行时选择print()函数。所以,执行语句序列“pa=&b;pa->setx(5);pa->print();”后,系统调用类B的print()函数,输出25;执行语句序列“pa=&c;pa->setx(2);pa->prim();”后,系统调用类C的prim()函数,输出8。

  • 第12题:

    单选题
    有以下变量说明,下面正确的语句是() int a=10,b; int &pa=a,&pb=b;
    A

    &pb=a;

    B

    pb=pa;

    C

    pb=&pa;

    D

    ?pb=?pa;


    正确答案: A
    解析: 暂无解析

  • 第13题:

    下列程序执行后的输出结果是______。

    A.hello

    B.hel

    C.hlo

    D.hlm void func1 (int i); void func2 (int i); char st[]="hello,friend!"; void func1(int i) { printf("%c",st[i]); if(i<3){ i+=2;func2(i); } } void func2 (int i) { printf("%c",st[i]); if(i<3){ i+=2;func1(i); } } main() { int i=0;func1(i);printf("\n");}


    正确答案:C

  • 第14题:

    下列程序执行后的输出结果是 void funcl(int i); void func2(int i); char st[]="hello,friend!"; void funcl(int i) {printf("%c",st[i]); if(i<3){i+=2;func2(i);}} void func2(int i) { printf("%c",st[i]); if(i<3){i+=2;func1(i);}} main() {int i=

    A.hello

    B.hel

    C.hlo

    D.hlm


    正确答案:C

  • 第15题:

    已知一个类Sample,( )是定义指向类Sample成员函数的指针,假设类有三个公有成员:voidfl(int),void f2(int)和int a。

    A.Sample*p

    B.Int Samale::*pc=&Sample::a

    C.Void (Sample::*Pa) ()

    D.Sample *P[10]


    正确答案:C

  • 第16题:

    写出下列代码的输出内容

    #include

    int inc(int a)

    {

    return(++a);

    }

    int multi(int*a,int*b,int*c)

    {

    return(*c=*a**b);

    }

    typedef int(FUNC1)(int in);

    typedef int(FUNC2)(int*,int*,int*);

    void show(FUNC2 fun,int arg1, int*arg2)

    {

    INCp=&inc;

    int temp =p(arg1);

    fun(&temp,&arg1, arg2);

    printf("%d\n",*arg2);

    }

    main()

    {

    int a;

    show(multi,10,&a);

    return 0;

    }


    正确答案:
    答:110

  • 第17题:

    下列程序执行后的输出结果是()。includevoid func1(int i);void func2(int i);char st[

    下列程序执行后的输出结果是( )。 #include<stdio.h> void func1(int i); void func2(int i); char st[]="hello,friend!"; void funcl(int i) { printf("%c",st[i]); if(i<3){i+=2;func 2(i);} } void func 2(int i) { printf("%c",st[i]); if(i<3){i+=2;funcl(i);} } main() { int i=0; funcl(i);printf("\n"); }

    A.hello

    B.hel

    C.hlo

    D.hlm


    正确答案:C
    解析:本题首先调用函数funcl(0),输出st[0]=h,i值变为2,再调用函数func2(2),输出st[2]=1,此时i3,执行i+=2,i值变为4,然后再调用函数funcl(4),输出st[4]=o,此时i值大于3,函数调用结束。因此,输出结果为hlo。

  • 第18题:

    下列程序执行后的输出结果是( )。 void func1 (int i); void func2(int i); char st[]="hello,friend!"; void func1 (int i) { printf("%c",st[i]); if(i<3){i+=2;func2(i);} } void func2(int i) { printf("%c",st[i]); if(i<3){i+=2;func1(i);}

    A.hello

    B.hel

    C.hol

    D.hlm


    正确答案:C

  • 第19题:

    int func1(int& b)

    {

    return 0;

    }

    void func2()

    {

    int bbb = 3;

    func1(&bbb);

    func1(bbb);

    }

    func2中有何错误,func1的参数b 的类型是什么。


    正确答案:
     

  • 第20题:

    有如下程序:includeusing namespace std;class A{public:virtual void func1(){cout<

    有如下程序: #include<iostream> using namespace std; class A{ public: virtual void func1(){cout<<"A1";} void func2(){cout<<"A2";} }; class B:public A{ public: void func1(){cout<<"B1";} void func2(){cout<<"B2";} }; int main() { A *p=new B; p->func1(); p->func2(); return 0; } 执行该程序,屏幕上将显示输出( )。

    A.B1B2

    B.A1A2

    C.B1A2

    D.A1B2


    正确答案:C
    解析:程序中B为A的派生类,由主函数入手,主函数中定义了类A的指针p指向类B。根据基类中的“virtualvoidfunc1()”知道A中的func1为虚函数,执行“p->func1();”语句,通过指针变量调用此虚函数,此时调用的就是指针变量指向的同名函数,即派生类的func1函数,输出B1。而fun2不是虚函数,所以执行“p->func2();”输出为A2。

  • 第21题:

    下列程序 void func1(int i); void func2(int i) char st[]="hello,friend!"; void funcl(int i) { printf("%c",st[i]); if(i<3){i+=2;func2(i);} } void func2(int i) { printf("%c",st[i]); if(i<3){i+=2;funcl(i);} } main() { int i=0;funcl(i);printf("\n");} 执行后的输出结果是( )

    A.hello

    B.hel

    C.hlo

    D.hlrn


    正确答案:C

  • 第22题:

    下列程序中,正确的为______。

    A.main() { int *pb=&b; float 1>=15.25; print f("%d\n" ,*pb); }

    B.amin() { int a,*pa; a=10; *pa=a; prinffC%d",*pa); }

    C.main() { char s[20]; char *ps=&s; scanf("%s",*p); printf("%s",*p); }

    D.main() { char str[10]; int *ps=str[0]; str="abcdefg"; printf("%s",*p); }


    正确答案:B

  • 第23题:

    有以下变量说明,下面正确的语句是() int a=10,b; int &pa=a,&pb=b;

    • A、&pb=a;
    • B、pb=pa;
    • C、pb=&pa;
    • D、?pb=?pa;

    正确答案:B