更多“单选题有如下类定义:横线处应填写的表达式是(  )。A new char[strlen(aa) + 1]B char[strlen(aa) + 1]C char[strlen(aa)]D new char[sizeof(a) - 1]”相关问题
  • 第1题:

    补充完整下面的类定义:

    class XCH{

    char*a;

    public:

    XCH(char*a A) { //构造函数

    a=new char[strlen(aA) +1];

    strcpy(a,aA) ;

    }

    XCH&operator=(const XCH&x){//重载赋值函数

    delete[ ]a;

    a=new char[strlen(x.A) +1];

    strcpy(a,x.A) ;

    ______;

    }

    ~XCH( ){delete[ ]a;}

    };


    正确答案:return*this
    return*this

  • 第2题:

    下面的程序执行后,文件test.t中内容是______。 inc1udevoid fun(char*fname,char*st) {

    下面的程序执行后,文件test.t中内容是______。 #inc1ude<stdio.h> void fun(char*fname,char*st) { FILE*myf;int i; myf=fopen(fname,"w") for(i=0;i<strlen(st);i++)fputc(st[i]myf); fdose(myf); } main() { fun("test.t""new word");fun("test.t,"hello,");}

    A.hello,

    B.new wor1dhello

    C.new world

    D.hello,rld


    正确答案:A
    解析:C语言中文件有文本文件与二进制文件,对文件的使用前必须先打开,打开方式有只读,写入、读写等方式。

  • 第3题:

    执行下列语句后,输出结果为steven的是

    char*str="steven";

    eout.write(str, );

    A.strlen(str)

    B.sizeof(str)

    C.strlen(str+1)

    D.sizeof(str-1)


    正确答案:A
    解析:本题考察在C++中,字符串的存放方式,以及不同的字符串函数的作用。其中,strlen是专门用于求字符串长度的,其自动去掉字符数组后面的那个‘\0’,而sizeof后面求的则是str指针,指针在目前的32位机器中是固定大小的,其值与字符串的长度是没有关系的。故可以排除B和D。而选项C则将‘\0’多考虑了一次。

  • 第4题:

    根据程序中的注释将下列缺失部分补充完整。

    class A{

    char*a;

    public:

    A():a(0){}

    A(char*aa){ //把aa所指字符串复制给a所指向的存储空间

    a= 【 】 char[strlen(aa)+1];

    strcpy(a,aa);

    }

    ~A(){delete[]a;}

    }


    正确答案:new
    new 解析:本题主要考查对动态存储分配的掌握。要将字符串复制给a所指向的内存空间,需先给指针a动态分配内存空间,故使用运算符new。

  • 第5题:

    有以下程序includeincludevoidfun(char*s[],intn){char*t;int i,j;for(i=0

    有以下程序 #include <stdio.h> #include <string.h> void fun(char *s[],int n) { char *t; int i,j; for(i=0;i<n-1;++) for(j=i+1;j<n;j++) if(strlen(s[i])>strlen(s[j])) {t=s[i];s[i];s[j];s[j]=t;} } main() { char *ss[]={"bcc

    A.xy,aaaacc

    B.aaaacc,xy

    C.bcc,aabcc

    D.aabcc,bcc


    正确答案:A
    解析: 函数fun(char*s[],int n)的功能是对字符串数组的元素按照字符串的长度从小到大排序。在主函数中执行fun(ss,5)语句后,*ss[]={"xy","bcc"," bbcc","aabcc","aaaacc"},ss[0],ss[4]的输出结果为xy,aaaacc。

  • 第6题:

    有以下类定义:

    class A{

    char*a;

    public:

    A( ):a(0){ }

    A(char*aA) { //把aa所指字符串复制到a所指的存储空间

    a=______;

    strcpy(a,aA) ;

    }

    ~A( ){delete[ ]a;}

    };

    画线处应填写的表达式是

    A.new char[strlen(aA)+1]

    B.char[strlen(aA)+1]

    C.char[strlen(aA)]

    D.new char[sizeof(aA)-1]


    正确答案:A
    解析:为a申请一个比aa串长增加1的一个存储空问。B和C缺少new运算子,D分配空间不足。

  • 第7题:

    以下程序运行后的输出结果是______。includeinclude usingnamespacestd;classY

    以下程序运行后的输出结果是______。

    include <iostream>

    include <string>

    using namespace std;

    class Y;

    class X

    {

    int x;

    char *strx;

    public:

    X(int a, char *str)

    {

    x=a;

    strx=new char[strlen(str)+1]

    strcpy (strx,str);

    }

    void show(Y &ob);

    };

    class Y

    {

    prlvate:

    int y;

    char *stry;

    public:

    Y(int b,char *str)

    {

    y=b;

    stry=new char[strlen(str)+1];

    strcpy(stry,str);

    }

    friend void X::show(Y &ob);

    };

    void X::show{Y &ob)

    {

    cout<<strx<<",",

    cout<<ob.stry<<endl;

    }

    int main{

    {

    X a (10, "stringX");

    Y b (20, "stringY");

    a. show (b);

    renurn 0;

    }


    正确答案:stringX stringY
    stringX stringY 解析:本题考核友元函数的应用。该程序中,类X的成员函数show()在类Y中说明为类Y的友元函数,因此,在该友元成员show()中可以访问类Y的私有成员stry.成员函数show()的功能就是输出类X的私有成员strx和 Y对象ob的私有成员stry。主函数main()中定义了 X类的一个对象a和Y类的一个对象b,并且都进行了初始化.然后调用对象a的成员函数show,输出对象a中私有成员strx中的内容和对象b中私有成员stry中的内容,即字符串stringX和stringY。

  • 第8题:

    下列程序在32位linux或unix中的结果是什么?

    func(char *str)

    {

    printf(" %d",sizeof(str));

    printf(" %d",strlen(str));

    }

    main()

    {

    char a[]="123456789";

    printf(" %d",sizeof(a));

    printf(" %d",strlen(a));

    func(a);

    }


    正确答案:

     

    10 9 4 9

  • 第9题:

    有以下程序:include include using namespace std;class Y;class X{private

    有以下程序: #include <iostream> #include <string> using namespace std; class Y; class X { private: int x; char *strx; public: X(int a, char *str) { x=a; strx=new char[strlen(str)+1]; strcpy(strx,str); } void show(Y &ob) ; }; class Y { private: int y; char *stry; public: Y(int b,char *str) { y=b; stry=new char[strlen(str)+1]; strcpy(stry, str); } friend void X: :show(Y &ob) ; }; void X: :show(Y &ob) { cout<<strx<<", "; cout<<ob, stry<<end1; } int main ( ) { X a(10,"X"); Y b (20, "Y"); a. show(B) ; return 0; } 执行后的输出结果是( )。

    A.X,Y

    B.a,b

    C.X,X

    D.Y,Y


    正确答案:A
    解析:本题考核类的定义和友元函数的应用。①该程序中,类X的成员函数show()在类Y中说明为友元,因此,在该友元成员show()中可以访问类Y的私有成员stry。②成员函数show()的功能就是输出类X的私有成员strx和Y对象ob的私有成员stry,③主函数main()中定义了X类的一个对象a和Y类的一个对象b,并且都进行了初始化。然后调用对象a的成员函数show,输出对象a中私有成员strx中的内容和对象b中私有成员stry中的内容,即字符串stringX和stringY。

  • 第10题:

    如下程序的输出结果是includeincludeusing namespace std;class XCD{char*

    如下程序的输出结果是 #include<lostream> #include<cstring> using namespace std; class XCD{ char*a; int b; public: XCD(char*aa,int bB) { a=new char[strlen(aA) +1]; strcpy(a,aA) ; b=bb; } char*Geta( ){return a;} int Getb( ){return b;} }; int main( ){ char*pl="abcd",*p2="weirong": int dl,6,d2=8; XCD x(pl,d1),y(p2,d2); cout<<strlen(x.Geta( ))+y.Getb( )<<endl; return 0; }

    A.12

    B.16

    C.14

    D.11


    正确答案:A
    解析:构造对象x,所以x.a="abcd",x.b=6,构造对象y,y.a="weirong",y.b=8,所以strlen(x.geta( ))+y.getb( )=12。 

  • 第11题:

    单选题
    有如下程序:#include #include main(){ char name[10]=c-book; char *str=name; printf(%d,%d,%d,%d, sizeof(name), strlen(name), sizeof(str), strlen(str));}程序运行后的输出结果是(  )。
    A

    10,6,4,6

    B

    11,6,11,6

    C

    11,6,1,6

    D

    10,7,1,7


    正确答案: B
    解析:
    由一维数组初始化的知识可知,name[10] = "c-book",即name[10]="c-book\0\0\0\0"。sizeof函数用来获取类型或数据对象的长度,也即是一个这种数据类型的变量在内存中所占字节数。strlen函数统计字符串长度,遇到'\0'统计结束。字符指针变量和字符数组在内存中的存储情形不同,数组指的是按照数组长度分配的若干存储空间,在内存中字符类型变量占1个字节;而指针只是一个存储字符串首地址的存储空间,指针占4个字节。所以sizeof(name)=1×10=10,strlen(name)=6,sizeof(str)=4,strlen(str)=6。答案选择A选项。

  • 第12题:

    单选题
    若字符指针p所指向的字符串为“abcdefg”,在执行语句char* ap=new char[strlen(p)+1];之后,ap指向的字符数组的元素个数为(  )。
    A

    9

    B

    8

    C

    7

    D

    6


    正确答案: B
    解析:
    字符指针p指向的字符串为“abcdefg”,则strlen(p)= 7,因此ap指向的字符数组的元素个数为8个。

  • 第13题:

    有如下类定义:

    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]


    正确答案:A
    A。【解析】对动态分配存储空间的考查,在C++中,回车键需计一字符,即总的长度为strlen(aa)+1。

  • 第14题:

    阅读下列程序说明和C++程序,把应填入其中(n)处的字句,写对应栏内。

    【说明】

    下面的程序实现了类String的构造函数、析构函数和赋值函数。

    已知类String的原型为:

    class String

    {

    public:

    String(coust char * str = NULL); //普通构造函数

    String( const String &other); //拷贝构造函数

    ~String(void); //析构函数

    String & perate =(const String &other); //赋值函数

    private:

    char * m_data; // 用于保存字符串

    };

    //String 的析构函数

    String:: ~String (void)

    {

    (1);

    }

    //String 的普通构造函数

    String: :String( const char * str)

    {

    if (2)

    {

    m_data = new char[1];

    *m_data = '\0';

    }

    else

    {

    int length = strlen(str);

    m_data = new ehar[ length + 1 ];

    strepy(m_data, str);

    }

    }

    //拷贝的构造函数

    String:: String( const String &other)

    { int length = strlen(other. m_data);

    m_data = new char[ length + 1 ];

    strepy(m_data, other, m_data); //赋值函数

    String & String::operate = (eonst String &other) //

    {

    if (3)

    return * this;

    delete [] m_clara; //释放原有的内存资源

    int length = strlen( other, m_data);

    m_data = new chart length + 1 ];

    (4);

    return (5);

    }


    正确答案:(1)delete[]m_data或者delere m_data
    (1)delete[]m_data或者delere m_data 解析:由于m_data 是内部数据类型,也可以写成delete m_data。

  • 第15题:

    有如下类定义:

    class A{

    char *a;

    public:

    A():*(0){}

    A(char * aA){//把aa所指字符串拷贝到a所指向的存储空间

    a=________;

    strcpy(a,aA);

    }

    ~A(){delete[]a;}

    };

    横线处应填写的表达式是

    A.new char[strlen(aA)+1]

    B.char[strlen(aA)+1]

    C.char[strlen(aA)]

    D.new char[sizeof(aA)-1]


    正确答案:A
    解析:利用new运算符进行内存申请操作,长度为aa字符串长度加上字符串结束标志‘\0’,总共申请strlen(aa)+1字节,故选A)。

  • 第16题:

    补充完整下面的类定义:

    class XCH{

    char*a:

    public:

    XCH(char球an){ //构造函数

    a=new char[strlen(aft)+1];

    strcpy(a,aA);

    }

    XCH&operator=(const XCH&x){ //重载赋值函数

    delete[]a;

    a=new char[strlen(X.A)+1];

    strcpy(a,x.A);

    【 】

    }

    一XCH(){delete[]a;}

    };


    正确答案:return XCH(A)
    return XCH(A) 解析:要函数返回的是XCH&类型,因此这里要调用XCH构造函数定义一个临时的XCH对象作为返回值。

  • 第17题:

    有以下程序: #include 〈iostream〉 #include 〈string〉 using namespace std; class visited { private: int number; char *name; public: static int glob; void set mes(char *a); }; void visited::set mes(char *a) { name=new char[strlen(A) +1]; strcpy(name,A) ; number=++glob; } int visited::glob-O; int main() { visited person[10]; int i; char str[8]; for(i=0;i<5;i++) { cin>>str; person[i] .set mes(str); } cout<

    A.5

    B.4

    C.3

    D.2


    正确答案:A
    解析:本题考核静态数据成员的应用。分析程序:①类visited中,定义了两个私有成员:整型变量number和指针变量name。两个公有成员:静态数据变量glob和函数setmes()。②在函数setmes中,把传入的字符串保存在类的私有成员name中,并把静态数据成员glob自加,同时赋值给私有成员number。通过以上分析可知,函数setmes()用来记录输入的名字(即来访者的姓名),静态数据变量glob用来记录有多少来访者。在主函数中,输入5个字符串(即5个来访者的姓名)后,用来记录来访者数目的静态数据成员glob的值变成5。所以程序最后的输出结果是5。

  • 第18题:

    下列程序在32位linux或unix中的结果是什么?

    func(char *str)

    {

    printf("%d",sizeof(str));

    printf("%d",strlen(str));

    }

    main()

    {

    char a[]="123456789";

    printf("%d",sizeof(a));

    func(a);

    }


    正确答案:

     

    10 4 9

  • 第19题:

    有如下程序:

    #include<iostream>

    #include<cstring>

    using namespace std;

    class XCD{

    char*a;

    int b;

    public:

    XCD(char;l:aa,int bB){

    a=flew char[strlen(aA)+1];

    strcpy(a,aA);

    b=bb;

    }

    char*lE Geta(){return a;}

    int Getb(){return b;}

    };

    int main(){

    char*pl=”abcd”.*p2=”weirong”;

    int dl=6,d2=8;

    XCD x(pl;d1),Y(p2,d2);

    cout<<strlen(X.Gem())+Y.Getb()<<endl;

    return 0;

    }、

    运行时的输出结果是

    A.12

    B.16

    C.14

    D.11


    正确答案:A
    解析:定义x、y时调用构造函数使x.a为“abcd”,x.b=dl=6;y.a为“weirong”,y.b=c12=8。所以strlen(x.Geta( ))等于p1的长度4,y.Getb( )等于8。4+8=12,所以输出结果为12。

  • 第20题:

    请给出如下程序的结果

    char szTemp[1000] = "";

    int nLen1 = sizeof(szTemp);

    int nLen2 = strlen(szTemp);

    strcpy(szTemp, "abc");

    int nLen3 = sizeof(szTemp);

    int nLen4 = strlen(szTemp);

    int nTemp[100];

    int *pTemp = nTemp;

    int nLen5 = sizeof(pTemp);

    char szResult[200] = "";

    sprintf(szResult, "%d,%d,%d,%d,%02d.", nLen1, nLen2, nLen3, nLen4, nLen5);

    则szResult = ____。


    正确答案:
     

  • 第21题:

    阅读以下程序,写出程序运行后的输出结果是 ______。includevoid main(){ char a[]={

    阅读以下程序,写出程序运行后的输出结果是 ______。 #include<iostream.h> void main(){ char a[]={'H','e','r','1',‘o’,'\0'}; int i, j; i=sizeof(a)/sizeof(char); j=strlen(a) cout<<i<<' '<<j; }

    A.6 6

    B.5 6

    C.1 5

    D.6 5


    正确答案:D

  • 第22题:

    阅读以下程序,写出程序运行后的输出结果是 ______。includevoid main(){char a[]={'

    阅读以下程序,写出程序运行后的输出结果是 ______。 #include<iostream.h> void main(){ char a[]={'H','e','1','1','o','\0'}; int i,j; i=sizeof(a)/sizeof(char); j=strlen(a) cout<<i<<‘ ’<<j;

    A.6 6

    B.5 6

    C.1 5

    D.6 5


    正确答案:D

  • 第23题:

    单选题
    有以下程序:#include #include main(){ char name[9]=c##line; char *str=name;  printf(%d,%d,%d,%d, sizeof(name), strlen(name), sizeof(str), strlen(str)); }程序运行后的输出结果是(  )。
    A

    9,7,4,7

    B

    8,6,9,6

    C

    8,6,3,6

    D

    10,8,5,8


    正确答案: D
    解析:
    由于name是一个长度为9的一维数组,故在内存中占用9字节长度,而其中字符串"c##line"只有7个字符,strlen函数返回的是该字符串的长度,不包含结束符,str是一个指针变量,占用4字节长度,但是由于name首地址赋给了str指针变量,在调用strlen函数时,返回的是指针对应地址单元的字符串的长度7,答案选择A选项。