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

 

4.

  char * strcpy(char * pstrDest,const char * pstrSource)

  {

  assert((pstrDest!=NULL)&&(pstrSource!=NULL));

  char * pstr=pstrDest;

  while((*(pstrDest++)=*(pstrSource++))!='\0');

   return pstr;

  }

更多“请编写能直接实现char * strcpy(char * pstrDest,const char * pstrSource)函数功能的代码。”相关问题
  • 第1题:

    ( 14 )补充完整下面的类定义:

    class XCH{

    char* a;

    public:

    XCH ( char* as ) { // 构造函数

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

    strcpy ( a,aa ) ;

    }

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

    Delele []a;

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

    strcpy ( a, x .a )

    【 14 】 ;

    }

    ~XCH () {delete []a;}

    };


    正确答案:

  • 第2题:

    ( 13 )有如下程序:

    #include <iostream>

    using namespace std;

    class GrandChild{

    public:

    GrandChild(){ strcpy (name,"Unknown"); }

    const char * getName()const { return name; }

    virtual char * getAddress()const=0;

    private:

    char name[20];

    };

    class GrandSon : public GrandChild{

    public:

    GrandSon{char *name} {}

    Char * getAddress() const { return "Shanghai";}

    };

    int main(){

    GrandChild *gs=new GrandSon("Feifei");

    cout<<gs->getName()<<" 住在 "<<gs->getAddress()<<endl;

    delete gs;

    return 0;

    }

    运行时的输出结果是 【 13 】 。


    正确答案:

  • 第3题:

    补充完整下面的类定义:

    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

  • 第4题:

    有如下程序: #inClude<iostream> using namespaCe std; Class Book{ publiC: Book(Char*t=””){strCpy(title,t);} private: Char titlel40]; }; Class Novel:publiC Book{ publiC: Novel(Char*t=””):Book(t){} Char*Category( )Const{return”文学”;} }; int main( ){ Book * pb; pb=new Novel( ); Cout<<pb→Category( ); delete pb; return 0; } 若程序运行时输出结果是“文学”,则横线处缺失的语句是( )。

    A.Char*Category( );

    B.Char*Category( )Const;

    C.virtual Char*Category( )Const;

    D.virtual Char*Category( )Const=0;


    正确答案:D
    本题考查纯虚函数和抽象类,纯虚函数是在声明虚函数时被“初始化”为0的函数,包含纯虚函数的类为抽象类,抽象类足不能被实例化的,但是可以定义指向抽象类数据的指针变量,当派生类成为具体类后,就可以用这种指针指向派生类的对象,然后通过该指针调用虚函数,实现多态性的操作。所以本题答案为D。

  • 第5题:

    请编写能直接实现int atoi(const char * pstr)函数功能的代码。


    正确答案:

     

     

  • 第6题:

    void setmemory(char **p, int num)

    { *p=(char *) malloc(num);}

    void test(void)

    { char *str=NULL;

    getmemory(&str,100);

    strcpy(str,"hello");

    printf(str);

    }

    运行test函数有什么结果?( )


    正确答案:
     

  • 第7题:

    检查错误

    int CopyStringCount(const char* Str)

    {

    int nCount = 0;

    char* pBuffer;

    pBuffer = new char[_MAX_PATH];

    strcpy(pBuffer,Str);

    for(;*pBuffer!='\0'; pBuffer++)

    if(*pBuffer == '\') nCount ++;

    // delete [] pBuffer;

    return nCount;

    }


    正确答案:
     

  • 第8题:

    已知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 ;
    }

  • 第9题:

    void Test(void){char *str = (char *)

    malloc(100); strcpy(str, “hello”); free(str); if(str != NULL) { strcpy(str, “

    world”); printf(str);}}请问运行 Test 函数会有什么样的结果?


    正确答案:
     

  • 第10题:

    编写类 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 个函数。


    正确答案:
     

  • 第11题:

    若有定义:char*st="how are you";下列程序段中正确的是

    A.char a[11],*p;strcpy(p=a+1,&st[4]);

    B.char a[11];strcpy(++a,st);

    C.char a[11];strcpy(a,st);

    D.char a[],*p;strcpy(p=&a[1],st+2);


    正确答案:A
    解析:本题综合考查字符数组的赋值和strcpy函数的用法。C语言不允许用赋值表达式对字符数组赋值,如下面的语句就是非法的:strl=“China”,如果想把“China”这5个字符放到数组strl中,除了逐个地输入外,还能使用strcpy函数,该函数的功能是将一个字符串复制到一字符数组中。例如:strcpy(strl,“China”);或strcpy(strl,str2);注意,不能企图用以下语句来实行赋值(将str2的值传给strl):strl=str2;不能用赋值语句将一个字符串常量或字符数组直接给一个字符数组。strcpy函数的结构是:strcpy(字符数组1,字符串2)其中,需要注意的是,字符数组1的长度不应小于字符串2的长度,“字符数组1”必须写成数组名形式,如(strl),“字符串2”可以是字符数组名,也可以是字符串常量,不能用赋值语句将一个字符串常量或字符数组直接给一个字符数组。

  • 第12题:

    以下与库函数strcpy(char*p1,char*p2)功能不相等的程序段是()

    • A、strcpyl(char*p1,char*p2){while((p1++=p2++)!=’/0’);}
    • B、strcpy2(char*pl,char*p2){while((*p1=*p2)!=’/0’)pl++,p2++;}
    • C、strcpy3(char*pl,char*p2){while((*p1++=*p2++);)
    • D、strcpy4(char*p1,char*p2){whi1e(*p2)*pl++=*p2++;}

    正确答案:D

  • 第13题:

    ( 32 )有如下程序

    #include<iostream>

    using namespace std;

    class Publication{ // 出版物类

    char name[30];

    public:

    Publication(char *name=" 未知名称 "){

    strcpy(this->name,name);

    }

    const char * getName()const{ return name; }

    virtual const char * getType()const{ return " 未知类型 ";}

    };

    class Book: public Publication{ // 书类

    public:

    Book(char *name): Publication(name){}

    virtual const char * getType()const{ return " 书 " ; }

    };

    void showPublication( Publication &p){

    cout<<p.getType()<<":"<<p.getName()<<endl;

    }

    int main(){

    Book book(" 精彩人生 ");

    showPublication(book);

    return 0;

    }

    运行时的输出结果是

    A )未知类型:未知名称

    B )未知类型:精彩人生

    C )书:未知名称

    D )书:精彩人生


    正确答案:D

  • 第14题:

    设函数f的原型是:char *f (const char*);,pf 是指向f 的指针,则pf 的定义是【 】。


    正确答案:char(*p)(const char*)=f;
    char(*p)(const char*)=f; 解析:如果要使指针指向函数,函数的原型应该改为上面的形式。

  • 第15题:

    阅读下列函数说明和C函数,将应填入(n)处的字句写在对应栏内。

    [函数2.1说明]

    函数strcpy的功能是将字符串str2的内容复制到字符申str1。

    [函数2.1]

    (1) strcpy (char *slr1, const char *str2)

    { char * temp;

    while( * str2!='\0') *cp++ =(2);

    (3)='\0';

    return str1;

    }

    [函数2.2说明]

    函数int strcmp(const char *str1, const char *str2)的功能是按字典序比较两个字符串str1和str2的大小。当str1<str2时返回-1,当str1>str2时返回1,否则返回0。

    [函数2.2]

    int strcmp(const char *str1, const char *str2)

    { while( *str1= =* str2) {

    if(* s1= =(4)) return 0;

    s1++;

    (5);

    }

    if( *str1<*str2) return -1;

    return 1;

    }


    正确答案:char * (2) * str2++ (3) * cp (4) ‘\0’ (5) s2++或 ++s2
    char * (2) * str2++ (3) * cp (4) ‘\0’ (5) s2++或 ++s2 解析:(1)根据函数说明,char *是函数strcpy的返回值类型;
    (2)while循环是字符串复制的关键,它将str2的字符一个个复制到cp;
    (3)字符复制完成后,应在字符串cp的末尾添加结束符;
    (4)~(5):while循环的功能是从字符串首开始逐个比较str1和str2的每一字符,如果循环一直执行到两字符串末尾,则说明两串相等,应返回0值。

  • 第16题:

    如何为函数int atoi(const char * pstr)编写测试向量?


    正确答案:
          

  • 第17题:

    补充完整下面的类定义:

    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对象作为返回值。

  • 第18题:

    输入二个 64 位的十进制数,计算相乘之后的乘积

    已知 strcpy 函数的原型是:

    char * strcpy(char * strDest,const char * strSrc);

    1.不调用库函数,实现strcpy 函数。

    2.解释为什么要返回char *。


    正确答案:
     

  • 第19题:

    已知strcpy 的函数原型:char *strcpy(char

    *strDest, const char *strSrc)其中strDest 是目的字符

    串,strSrc 是源字符串。不调用C++/C 的字符串库

    函数,请编写函数strcpy。


    正确答案:

     

    char *strcpy(char *strDest, const char *strSrc)
    {
    if ( strDest == NULL || strSrc == NULL)
    return NULL ;
    if ( strDest == strSrc)
    return strDest ;
    char *tempptr = strDest ;
    while( (*strDest++ = *strSrc++) != ‘\0’)
    ;
    return tempptr ;
    }

  • 第20题:

    已知类 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 个函数


    正确答案:
     

  • 第21题:

    编写 strcpy函数

    已知 strcpy函数的原型是

    char *strcpy(char *strDest, const char *strSrc);

    其中 strDest 是目的字符串,strSrc 是源字符串。

    (1)不调用 C++/C 的字符串库函数,请编写函数 strcpy

    (2)strcpy能把 strSrc 的内容复制到 strDest,为什么还要 char * 类型的返回值?


    正确答案:
     

  • 第22题:

    设已有定义:char*st="how are you";,下列程序段中正确的是______。

    A.char a[11],*p;strcpy(p=a+1,&st[4]);

    B.char a[11];strcpy (++a,st);

    C.char a[11];strcpy (a,st);

    D.char a[], *p;strcpy(p=&a[1],st+2);


    正确答案:A

  • 第23题:

    语句()能正确完成赋字符串的功能。

    • A、chars[4];s[0]=“string”
    • B、char*s;get(s)
    • C、char*s[]=“string”
    • D、char*s;strcpy(s,“string”)

    正确答案:C