1、全国计算机等级考试二级 C+真题题库 1+2016 年 3 月及答案解析(总分:100.00,做题时间:120 分钟)一、选择题(每小题 1 分,共 40 分)(总题数:40,分数:40.00)1.下列有关内联函数的叙述中,正确的是( )。(分数:1.00)A.内联函数在调用时发生控制转移B.内联函数必须通过关键字 inline 来定义C.内联函数是通过编译器来实现的D.内联函数函数体的最后一条语句必须是 return 语句2.语句 int*P=&k;定义了指针 P,与这个语句等效的语句序列是( )。(分数:1.00)A.int* p;P=&k;B.int * P;P=k;C.int * p;
2、* P=&k;D.int * p;* P=k;3.有如下程序: #include using namespace std; class A public: A()coutA表达式可输出字符 AB.eof()函数可以检测是否到达文件尾C.对磁盘文件进行流操作时,必须包含头文件 fstreamD.以 ios_base:0ut 模式打开的文件不存在时,将自动建立一个新文件17.耦合性和内聚性是对模块独立性度量的两个标准。下列叙述中正确的是( )。(分数:1.00)A.提高耦合性降低内聚性有利于提高模块的独立性B.降低耦合性提高内聚性有利于提高模块的独立性C.耦合性是指一个模块内部各个元素间彼此结合的
3、紧密程度D.内聚性是指模块间互相连接的紧密程度18.若有如下类声明: Class MyClass publiC: MyClass( )Cout1;i 一=2) tout=A&(c=C|(z=a)&(c(istream&input,MiniString&8)/重载流提取运算符 char temp100;/用于输入的临时数组 temp0=/0:/初始为空字符串 inputsetw(100)temp; int inLen=strlen(temp);/输入字符串长度 if(inLen!=0) s1ength=inLen;/赋长度 if(ssPtr!=0)deletessPtr;/避免内存泄漏 ssPt
4、r=Hew chars1ength+1; strcpy(ssPtr,temp);/如果 8 不是空指针,则复制内容 else ssPtr0=/0;/如果 s 是空指针,则为空字符串 retum input; void modString(const charstring2)/更改字符串内容 if(strin92 1=0)/如果 strin92 不是空指针,则复制内容 if(strlen(strin92)!=length) length=strlen(strin92); deletesPtr; sPtr=new char1ength+1;/分配内存 strcpy(sPtr,strin92); e
5、lse sPtr0=0;/如果 string2 是空指针,则为空字符串 MiniString&operator=f const MiniString&otherString); MiniString(corot char*s=“):lengtll(s!=0)?strlen(s):0)/构造函数 sPtT=0: if(1ength=0) setString(S); MiniString()/析构函数 deletesPtr; private: int length;/字符串长度 char*sPtr;/指向字符串起始位置 void setString(const char*string2)/辅助函数
6、 sPtr=Dew charstr|en(string2)+1;/分配内存 if(stnIl92!=0)strcpy(sPtr,string2);/如果 string2 不是空指针,则复制内容 else slur0=/0;/如果 string2 是空指针,则为空字符串 ; /pwj3cpp #include #include using namespace std; #include”proj3h” MiniString&MiniStrin9:0perator=(const MiniString&otherString) /重载赋值运算符函数。提示:可以调用辅助函数 setString /*3
7、33* /*666* int main() MiniSuing strl(”Heuo!”),str2; void writeToFile(const char*); sir2=strl;/使用重载的赋值运算符 str2modString(“Happy new year!“); coutA表达式可输出字符 A B.eof()函数可以检测是否到达文件尾C.对磁盘文件进行流操作时,必须包含头文件 fstreamD.以 ios_base:0ut 模式打开的文件不存在时,将自动建立一个新文件解析:本题考查 c+流,想要输出字符“A”,则应该是 cout”括起来的参数表)或从模板函数实参表(用“()”括起
8、来的参数表)。如果从后者获得的信息已经能够判定其中部分或全部虚拟类型参数所对应的实际参数,而且它们又正好是参数表中最后的若干参数,则模板实参表中的那几个参数可以省。如果模板实参表中的实参都被省了,则空表“setw(100)temp; int inLen=strlen(temp);/输入字符串长度 if(inLen!=0) s1ength=inLen;/赋长度 if(ssPtr!=0)deletessPtr;/避免内存泄漏 ssPtr=Hew chars1ength+1; strcpy(ssPtr,temp);/如果 8 不是空指针,则复制内容 else ssPtr0=/0;/如果 s 是空指针
9、,则为空字符串 retum input; void modString(const charstring2)/更改字符串内容 if(strin92 1=0)/如果 strin92 不是空指针,则复制内容 if(strlen(strin92)!=length) length=strlen(strin92); deletesPtr; sPtr=new char1ength+1;/分配内存 strcpy(sPtr,strin92); else sPtr0=0;/如果 string2 是空指针,则为空字符串 MiniString&operator=f const MiniString&otherStr
10、ing); MiniString(corot char*s=“):lengtll(s!=0)?strlen(s):0)/构造函数 sPtT=0: if(1ength=0) setString(S); MiniString()/析构函数 deletesPtr; private: int length;/字符串长度 char*sPtr;/指向字符串起始位置 void setString(const char*string2)/辅助函数 sPtr=Dew charstr|en(string2)+1;/分配内存 if(stnIl92!=0)strcpy(sPtr,string2);/如果 string
11、2 不是空指针,则复制内容 else slur0=/0;/如果 string2 是空指针,则为空字符串 ; /pwj3cpp #include #include using namespace std; #include”proj3h” MiniString&MiniStrin9:0perator=(const MiniString&otherString) /重载赋值运算符函数。提示:可以调用辅助函数 setString /*333* /*666* int main() MiniSuing strl(”Heuo!”),str2; void writeToFile(const char*);
12、sir2=strl;/使用重载的赋值运算符 str2modString(“Happy new year!“); coutstrl/n: coutstr2/n: writeToFile(“); return 0; (分数:18.00)_正确答案:(length=otherString1ength; /把对象字符串 0therString 的长度赋值给变量 length setString(otherStringsPtr); /调用函数 setstring,实现给类变量 sptr 分配空间,以及逐个把对象 0therstring 字符串的值复制到 sptr 中 returnthis: /返回被赋值的对象)解析: