单选题下列语句中,正确的是(  )。A char*myString=“Hello-World!”;B char myString=“Hello-World!”;C char myString[11]=“Hello-World!”;D char myString[12]=“Hello-World!”;

题目
单选题
下列语句中,正确的是(  )。
A

char*myString=“Hello-World!”;

B

char myString=“Hello-World!”;

C

char myString[11]=“Hello-World!”;

D

char myString[12]=“Hello-World!”;

如果没有搜索结果或未解决您的问题,请直接 联系老师 获取答案。
相似问题和答案

第1题:

下列语句中,正确的是( )。

A.char*myString="Hello-World!";

B.char myString="Hello-World!";

C.char myString[11]="Hello-World!";

D.char myString[12]="Hello-World!";


正确答案:A
解析:选项A)中char*myString="Hello-World!"字符串的长度是12个字符加上一个尾符,所以是13,因此选项C)和选项D)申请的空间都不够,报数组溢出异常。而选项B)定义的变量myString为字符变量,不是用来存放字符串的,所以错误。

第2题:

有如下的程序: #include<cstring.h) #ingclude<iostream.h) using namespace std; Class MyString {public: MyString(const char*s); ~MyString(){delete[]data;} protected: unsigned len; char*data;}; MyString::MyString(const char*S) {l

A.构造函数的实参不允许是本类的对象

B.没有定义实现深层复制(深拷贝)的复制构造函数

C.构造对象a时实参与形参类型不符

D.系统不能生成默认的复制构造函数


正确答案:B
解析: C++语宫中当一个新对象被另一个已存在的同类型对象初始化时要调用复制构造函数,语句’MyS- trmg b(a),”符合此条件将调用类MyString的复制构造函数,但是类MyString没有定义此复制构造函数,所以会出错。

第3题:

若有定义: char *st= "how are you "; ,下列程序段中正确的是A.char a[11], *p; strcpy(p=a+1,&a

若有定义: 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语言不允许用赋值表达式对字符数组赋值,如下面的语句就是非法的:str1="China",如果想把"China"这5个字符放到数组str1中,除了逐个输入外,还能使用strcpy函数,该函数的功能是将一个字符串复制到一字符数组中。例如:strcpy(str1,"China")或strcpy(str1,str2);注意,不能企图用以下语句来实行赋值(将str2的值传给str1):str1=str2;不能用赋值语句将一个字符串常量或字符数组直接给一个字符数组。
strcpy函数的结构是:strcpy(字符数组1,字符串2)
其中,需要注意的是,字符数组1的长度不应小于字符串2的长度,"字符数组1"必须写成数组名形式,如(str1),"字符串2"可以是字符数组名,也可以是字符串常量,不能用赋值语句将一个字符串常量或字符数组直接给一个字符数组。

第4题:

有如下程序:includeincludeusing namespace std;class MyString{public:My

有如下程序: #include<cstring> #include<iostream> using namespace std; class MyString{ public: MyString(const char * s); ~MyString( ){delete[ ]data;} protected: unsigned len; char * data; }; MyString::MyString(const char * s){ len=strlen(s); data=new char[1en+1]; strcpy(data,s); } int main( ){ MyString a("C++Progreanfing"); MyString b(A) ; return 0; } 在运行上面的程序时出错,错误的原因是

A.构造函数的实参不允许是本类的对象

B.没有定义实现深层复制(深复制)的复制构造函数

C.构造对象a时实参与形参类型不符

D.系统不能生成缺失的复制构造函数


正确答案:B
解析:当类中的数据成员有指针时,必须使用深层复制构造函数,否则会发生指针悬挂。在进行函数析构时,会出现指针丢失现象。

第5题:

Const mystring=“hello”的含义是( )。

A.在VBScript中,把变量mystring赋值为hello

B.在VBScript中,把常量mystring的值定为hello

C.在Java中,把变量mystring赋值为hello

D.在Java中,把变量mystring赋值为hello


正确答案:C

第6题:

有如下的程序: include include using namespace st

有如下的程序: #include<cstring> #include<iostream> using namespace std; class MyString { public: MyString(const char*s); ~MyString(){delete[]data;} Protected: unsigned len; char*data; }; MyString::MyString(const char*s) { len=strlen(s); data=new char[len+1]; strcpy(data,s); } int main() { MyString a("C++Programing"); MyString b(a); return 0; } 在运行上面的程序时出错,出错的原因是

A.构造函数的实参不允许是本类的对象

B.没有定义实现深层复制(深拷贝)的拷贝构造函数

C.构造对象a时实参与形参类型不符

D.系统不能生成缺省的拷贝构造函数


正确答案:B

第7题:

下列字符数组初始化语句中,不正确的是( )。

A.char c[]='goodmorning';

B.char c[20]="goodmorning";

C.char c[]={'a','b ','c ','d');

D.char c[]={"ffgoodmorning"};


正确答案:A
本题考查两个概念:①用单引号括起来的一个字符常量只能存放一个字符;②℃语言中没有字符串变量,只能用字符数组来存储字符串。

第8题:

有以下类定义 class MyClass { private: int id; char gender; char*phone; public: MyClass():id(0),gender('#'),phone(NULL){} MyClass(int no,char ge='#',char*ph=NULL) {id=no;gender=ge;phone=ph;} }; 下列类对象定义语句中错误的是

A.MyClass myObj;

B.MyClass myObj(11,"13301111155");

C.MyClass myObj(12,'m');

D.MyClass myObj(12);


正确答案:B
解析:本题考核构造函数的应用。对象建立用初始化列表对数据成员进行时,列表中的参数类型要与构造函数中形参类型一致。B选项中第二个参数为"13301111155"是字符串,而构造函数中第二个形参为char型,两者不一致造成错误。

第9题:

有如下的程序: #include<strin9.h> #include<iostream.h> usingnamespacestd; classMyString {public: MyString(constchar*s); MyString(){delete[]data;} protected: unsignedlem char*data;}; MyStrin9::MyString(constchar*s) {len=strlen(s); data=newchar[len+1]; strcpy(data,s);} intmain() {MyStringa("C++Programing"); MyStringb(a); return0;} 在运行上面的程序时出错,出错的原因是( )。

A.构造函数的实参不允许是本类的对象

B.没有定义实现深层复制的复制构造函数

C.构造对象a时实参与形参类型不符

D.系统不能生成默认的复制构造函数


正确答案:B
B。【解析】C++语言中当一个新对象被另一个已存在的同类型对象初始化时要调用复制构造函数,语句"MyStringb(a);"符合此条件,将调用类MyString的复制构造函数,但是类MyString没有定义此复制构造函数,所以会出错。

第10题:

有下列的程序: include include using namespace std; cl

有下列的程序: #include<cstring.h> #include<iostream.h> using namespace std; class MyString { public: MyString(const char*s); ~MyString(){delete[]data;} protected: unsigned len; char*data; }; MyString::MyString(const char*s) { len=strlen(s); data=new char[len+1); strcpy(data,s); } int main() { MyString a("C++Programing"); MyString b(a); return 0; } 在运行上面的程序时出错,出错的原因是( )。

A.构造函数的实参不允许是本类的对象

B.没有定义实现深层复制(深拷贝)的复制构造函数

C.构造对象a时实参与形参类型不符

D.系统不能生成默认的复制构造函数


正确答案:B
解析:此题考查的是类的构造函数。C++语言中当一个新对象被另一个已存在的同类型对象初始化时要调用复制构造函数。语句“My String b(a);”符合条件将调用My String的复制构造函数,但类My String未定义复制构造函数,所以会出错。

更多相关问题