请编写能直接实现char * strcpy(char * pstrDest,const char * pstrSource)函数功能的代码。
4.
char * strcpy(char * pstrDest,const char * pstrSource)
{
assert((pstrDest!=NULL)&&(pstrSource!=NULL));
char * pstr=pstrDest;
while((*(pstrDest++)=*(pstrSource++))!='\0');
return pstr;
}
第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;}
};
第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;
第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);
第12题:
以下与库函数strcpy(char*p1,char*p2)功能不相等的程序段是()
第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 )书:精彩人生
第14题:
设函数f的原型是:char *f (const char*);,pf 是指向f 的指针,则pf 的定义是【 】。
第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;
}
第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;}
};
第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);
第23题:
语句()能正确完成赋字符串的功能。