itgle.com

已知类 String 的原型为class string{public:string(const char *str=null);//普通构造函数string(const string &other);//拷贝构造函数---string(void);string &operate=(const string &other);//赋值函数private:char * m-data;//用于保存字符串};请编写 string 的上述4 个函数

题目

已知类 String 的原型为

class string

{

public:

string(const char *str=null);//普通构造函数

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

---string(void);

string &operate=(const string &other);//赋值函数

private:

char * m-data;//用于保存字符串

};

请编写 string 的上述4 个函数


相似考题
更多“已知类 String 的原型为class string{public:string(const char *str=null);//普通构造函数string(const string other);//拷贝构造函数---string(void);string operate=(const string other);//赋值函数private:char * m-data;//用于保存字符串};请编写 string 的上述4 个函数”相关问题
  • 第1题:

    下面的程序执行后,屏幕上显示的应是 public class Exam{ public static void main(String[]args){ char char1[]={'t','e','s','t'}; char char2[]={'t','e','S','t','1'}; String s1=new String(char1); String s2=new String(char2,0,4); System.out.println(s1.equals(s2)); } }

    A.true

    B.false

    C.test

    D.编译错误


    正确答案:A
    解析:首先可以通过字符数组来生成一个字符串对象:String(char[]value)和 String(char[]value,int startIndex,int numChars),其中,startIndex指定字符串在数组中的起始下标, numChars表示字符个数。然后再测试字符串是否相等,可调用equals()方法,两个字符串相等则返回 true,否则返回false。题目中s1和s2都是“test”,所以最后返回是true,选项A正确。

  • 第2题:

    阅读下列程序说明和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。

  • 第3题:

    以下程序中函数scmp功能是返回形参指针s1和s2所指字符串中较小字符串的首地址。#includ<string. h>char *scmp(char *s1,char *s2){ if(strcmp(s1,s2)<0) return(s1); else return(s2);}main(){ int i;char string[20],str[3][20]; for(i=0;i<3;i++) gets(str[i]); strcpy(string,scmp(str[0],str[1])); //库函数 strcpy 对字符串进行复制 strcpy(string,scmp(stfing,str[2])); puts(string); }若运行时依次输入: abed、abba 和abc三个字符串,则输出结果为( )。

    A.abed

    B.abba

    C.abc

    D.abca


    正确答案:B

  • 第4题:

    下列( )语句是声明一个含有10个String对象的数组。

    A.char str [];

    B.char str [] [];

    C.String str[]=new String[10];

    D.String str[10];


    正确答案:C

  • 第5题:

    已知String类定义如下:

    class String

    {

    public:

    String(const char *str = NULL); // 通用构造函数

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

    ~ String(); // 析构函数

    String & perater =(const String &rhs); // 赋值函数

    private:

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

    };

    尝试写出类的成员函数实现。


    正确答案:

     

    String::String(const char *str)
    {
    if ( str == NULL ) //strlen在参数为NULL时会抛
    异常才会有这步判断
    {
    m_data = new char[1] ;
    m_data[0] = '\0' ;
    }
    else
    {
    m_data = new char[strlen(str) + 1];
    strcpy(m_data,str);
    }
    }
    String::String(const String &another)
    {
    m_data = new char[strlen(another.m_data) + 1];
    strcpy(m_data,other.m_data);
    }
    String& String::operator =(const String &rhs)
    {
    if ( this == &rhs)
    return *this ;
    delete []m_data; //删除原来的数据,新开一块内

    m_data = new char[strlen(rhs.m_data) + 1];
    strcpy(m_data,rhs.m_data);
    return *this ;
    }
    String::~String()
    {
    delete []m_data ;
    }

  • 第6题:

    编写类 String 的构造函数、析构函数和赋值函数

    已知类 String的原型为:

    class String

    {

    public:

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

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

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

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

    private:

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

    };

    请编写 String的上述 4 个函数。


    正确答案:
     

  • 第7题:

    定义一个表示100个值为null的字符串数组,正确的选项是______。

    A.String[ ]a;

    B.String a[ ];

    C.char a[100][ ];

    D.String a[ ]=new String[100]


    正确答案:D
    解析: 在C语言中,一个二维的字符型数组可以表示一个一维的字符串数组,而在Java语言中,字符char是基本类型,字符串String则是以对象的形式来表示的。选项D定义一个含有100个元素的字符串数组,如果未对字符串数组赋值,则默认值为null,所以选项D正确。

  • 第8题:

    下面( )是main()函数的合法参数。

    A.char args[]

    B.char args[][]

    C.String args[]

    D.String args


    正确答案:C

  • 第9题:

    include<iostream>

    include<string>

    using namespace std;

    class MyClass

    {

    public:

    MyClass(int i=0){member=i;}

    void SetMember(const string m){member="big"+m;m=member;}

    string GetMember(){return member;}

    void print()const{cout<<"Stu:"<<member<<endl;}

    private:

    string member;

    };

    void main()

    {

    MyClass obj1,*obj2;

    string i="wang lin";

    obj2=&obj1;

    obj2->SetMember(i);

    obj1.print();

    }


    正确答案:
    voidSetMember(conststringm){member=”big”+m;m=member;}。const修饰符的形参不能改变。应删去const或者删去m=member。

  • 第10题:

    下列程序运行的结果为:

    public class Example{

    String str=new String("good");

    char[] ch={'a','b','c'};

    public static void main(String args[]){

    Example ex=new Example();

    ex.change(ex.str,ex.ch);

    System.out.print(ex.str+" and ");

    Sytem.out.print(ex.ch);

    }

    public void change(String str,char ch[]){

    str="test ok";

    ch[0]='g';

    }

    }

    A. good and abc

    B. good and gbc

    C. test ok and abc

    D. test ok and gbc


    正确答案:B

  • 第11题:

    public class Employee{   private String name;   public Employee(String name){   this.name = name;  }   public void display(){   System.out.print(name);  }  }   public class Manager extends Employee{   private String department;   public Manager(String name,String department){   super(name);   this.department = department;  }   public void display(){   System.out.println( super.display()+”,”+department);  }   }   执行语句new Manager(“smith”,”SALES”)后程序的输出是哪项?() 

    • A、 smith,SALES
    • B、 null,SALES
    • C、 smith,null
    • D、 null,null

    正确答案:A

  • 第12题:

    单选题
    public class Employee{   private String name;   public Employee(String name){   this.name = name;  }   public void display(){   System.out.print(name);  }  }   public class Manager extends Employee{   private String department;   public Manager(String name,String department){   super(name);   this.department = department;  }   public void display(){   System.out.println( super.display()+”,”+department);  }   }   执行语句new Manager(“smith”,”SALES”)后程序的输出是哪项?()
    A

     smith,SALES

    B

     null,SALES

    C

     smith,null

    D

     null,null


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

  • 第13题:

    下面程序执行后,输出结果为:true请在程序的每条横线处填写一个语句,使程序的功能完整。

    注意:请勿改动main()主方法和其他已有的语句内容,仅在横线处填入适当的语句。

    public class TestStringCompare{

    {public static void main(String ____________________ args)

    {char charl[]={'t','e','s','t'};

    char char2[]={'t','e','s','t','1'};

    String str1=new String(___________________);

    String str2=new String(char2,0,4);

    System.out.println(__________________________);

    }

    }


    正确答案:[ ] char1 str1.equals(str2)
    [ ] char1 str1.equals(str2) 解析:本题主要考查main()主方法的使用、String类的使用。解答本题的关键是熟练掌握main()主方法的使用、String类的使用。在本题中,public static void main(String[]args)中的[]是定义数组的标志,str1.equals(str2)语句的功能是判断字符串str1和字符串str2的内容是否相等。

  • 第14题:

    以下程序十函数scmp的功能是返回形参指针s1和s2所指字符串中较小字符串的首地址: #include <stdio.h> #include <string.h> char *scrap(char *s1,char *s2) { if(strcmp(s1,s2)<0) return(s1); else return(s2); } main() { int i; char string[20], str[3][20]; for(i=0;i<3;i++) gets(str[i]); strcpy(string,scmp(str [0],str[1]));/*库函数strcpy对宁符中进行复制*/ strcpy(string,scmp(string,str[2])); printf("%s\n",string); } 若运行时依次输入:abcd、4bba和abc三个宁符市,则输出结果为

    A.abcd

    B.abba

    C.abc

    D.abca


    正确答案:A
    解析:字符串比较大小的标准是从第一个字符开始依次向右比较,遇到某一个字符ASCII码值较大时,该字符所在的字符串就是较大的字符串。主函数中调用了函数scmp(),分析不难知道该函数的作用是返回参加比较的两个字符串中的较小的字符串,它的主函数中定义了一个二维字符数组来存放三个字符串.接着通过for循环给每个字符串赋值,赋值后三个字符串分别为“abcd”、“abba”、“abc”,接着比较str[0]和str[1]的大小,根据字符串大小比较标准可知str[0]较小,然后通过函数strcpy()把str[0]中的字符串,拷贝到string中,然后比较string和str[2]的大小,比较结果是string较小,最后输出string的值为“abcd”,所以,4个选项中选项A符合题意。

  • 第15题:

    定义一个表示10个值为null的字符串数组,下面选项正确的是

    A.String [] a;

    B.String a[];

    C.char a[10][];

    D.String a[]=new String[10];


    正确答案:D
    解析:本题考查字符串数组变量的声明。选项A和选项B的效果是一样的,都是用来定义一个字符串数组,但没有指明数组个数,不满足题B-要求。选项C是一个二维的字符数组,在C语言中,一个二维的字符数组就可以表示一个一维的字符串数组,而在Java中,字符char是基本类型,字符串String则是以对象的形式来表示的。选项D正确,它定义了一个含有10个元素的字符串数组,如果没有给字符串数组赋值,则默认为null。

  • 第16题:

    A conversion operator which converts the current String instance into raw C-style. string of

    type const char*.


    正确答案:
     

  • 第17题:

    编写类 String 的构造函数,析构函数和赋值函数


    正确答案:
     

  • 第18题:

    说出下面几个函数的区别:

    private void test(string str){…}

    private void test(ref string str){…}

    private void test(out string str){…}

    如果一个页面与数据


    正确答案:
     

  • 第19题:

    请补充函数fun(char *s),该函数的功能是把字符串中的内容逆置。

    例如:字符串中原有的字符串为abcde,则调用该函数后,串中的内容变为edcba。

    注意;部分源程序给出如下。

    请勿改动主函数main和其他函数中的任何内容,仅在函数fun()的横线上填入所编写的若干表达式或语句。

    试题程序:

    $include<string.h>

    include<conio.h>

    include<stdio.h>

    define N 81

    void fun(char*s)

    {

    int i=0,t,n=strlen(s);

    for(;【 】;i++)

    {

    t=*(s+i);

    【 】;

    【 】;

    }

    }

    main()

    {

    char a[N];

    clrscr();

    printf("Enter a string:");

    gets(a);

    printf("The original string is:");

    puts(a);

    fun(a);

    printf("\n");

    printf("The string after modified:");

    puts(a);

    }


    正确答案:in/2或s+is+n-1-i或in-1-I *(s+i)=*(s+n-1-i) *(s+n-1-i)=t
    in/2或s+is+n-1-i或in-1-I *(s+i)=*(s+n-1-i) *(s+n-1-i)=t 解析:第一空:将字符串的内容逆置,实际上就是将第一个字符和最后一个字符交换,再将第二个字符与倒数第二个字符交换,依此类推,直到中间的字符为止。所以,长度为n的字符串需要交换的次数为n/2。还可以这样理解,交换时始终保持顺数的字符在倒数的字符前面。第二空:顺数第i个字符为*(s+i),倒数第i个字符为*(s+n-1-i)。第三空:掌握利用第三个变量进行变量交换的方法。本题中,第三个变量为t。

  • 第20题:

    本题分别比较两个字符串"A"和"a"是否相等,并比较两个字符"A"和"a"是否相等,并输出比较结果。

    public class javal{

    public static void main(String[]args){

    cl=‘A ‘;c2=‘a‘;

    String strl=new String("A"),str2=new String

    ("a"):

    if( )

    System.Out.println("char"+c1+"equals"+"char"

    +c2);

    else

    System.OUt.println("char"+cl+"doesn‘t equal

    "+"char"+c2);

    if( )

    System.out.println("string"+strl+"equals"+

    "string"+str2):

    else

    System.OUt.println("string"+strl+"doesn‘t e-

    qual"+"string"+str2); .

    }

    }


    正确答案:
    第1处:charcl,c2第2处:cl==c2第3处:strl.equals(str2)【解析】第1处声明两个字符型变量cl和c2;第2处表示当cl等于c2时if条件为真;第3处判断strl和str2是否相等,返回值是布尔类型true或false。

  • 第21题:

    以下程序中函数scmp的功能是返回形参指针s1和s2所指字符串中较小字符串的首地址。 #include <stdio.h> #include <string.h> char *scmp(char*s1,char*s2) { if(strcmp(s1,s2)<0) return(s1); else return(s2); } main() { int i; char string[20],str[3][20]; for(i=0;i<3;i++) gets(str[i]); strcpy(string,scmp(str[0],str[1])); /*库函数strcpy对字符串进行复制*/ strcpy(string,scmp(string,str[2])); printf("%s\n",string); } 若运行时依次输入:abcd、abba和abc三个字符串,则输出结果为( )。

    A.abcd

    B.abba

    C.abc

    D.baca


    正确答案:B
    解析:本题考查返回指针值的函数。一个函数可以带回一个整型值、字符值、实型值等,也可以带回指针型的数据,即地址。函数strcmp(字符串1,字符串2)的作用是比较字符串1和字符中2。如果字符串1=字符串2,函数值为0;如果字符串1,字符串2,函数值为一正整数;如果字符串1字符串2,函数值为一负整数。本题程序中scmp函数的作用是比较s1和s2的大小,对strcmp函数的返回值进行判断,如果字符串1字符串2,则返回字符串1的值,反之返回字符串2的值。所以main函数中scmp(str[0],str[1])的返回值是abba,通过strcpy函数把返回值abba复制到string中。当执行scmp(string,str[2])时,scrap函数的返回值为abba,再次复制到string中,最后string的值为abba。

  • 第22题:

    执行语句“stringstr("abc");”时,系统会自动调用string类的构造函数()。

    • A、string()
    • B、string(constchar*s)
    • C、string(conststring&str)
    • D、string(size_typen,charc)

    正确答案:B

  • 第23题:

    Which expressions are correct to declare an array of 10 String objects? ()   

    • A、 char str[];
    • B、 char str[][];
    • C、 String str[];
    • D、 String str[10];

    正确答案:C