1、二级 C+-96 及答案解析(总分:100.00,做题时间:90 分钟)一、程序改错题(总题数:1,分数:30.00)1.使用 VC+6.0 打开 下的源程序文件 1.cpp,该程序运行时有错,请改正程序中的错误,使程序输出的结果为 150 200 注意:错误的语句在/*error*的下面,修改该语句即可。 提示:定义 Num1 为一个整型数据位长的变量。 试题程序: #includeiostream.h /*error* struct /*error* int Num1:1; int Num2; MyStruct; void main() MyStruct mstr; mstr.Num1=1
2、50; mstr.Num2=15; /*error* int * ptr= cout*ptrendl; *ptr=200; cout*ptrendl; (分数:30.00)_二、简单应用题(总题数:1,分数:30.00)2.使用 VC+6.0 打开 下的源程序文件 2.cpp。阅读下列函数说明和代码,补充空出的代码。函数IsPalindromes(char * string)实现的功能是判定给定的字符串是否构成回文字符串,如果是则返回 1,否则返回 0。 例如:abcdcba 或者 1234321 都认为是回文字符串。 如果串为空或一个字母时,均认为是回文字符串。 注意:不能修改程序的其他部分
3、,只能补充 IsPalindromes 函数。 试题程序: #includeiostream.h #define MAXLEN 1024 bool IsPalindromes(char * string) void main() char strMAXLEN; cout“请输入一行文字“endl; cin.getline(str,MAXLEN); coutIsPalindromes(str)endl; return; (分数:30.00)_三、综合应用题(总题数:1,分数:40.00)3.使用 VC+6.0 打开 下的源程序文件 3.cpp,其中定义了用于表示个人基本信息的类 PInfo,但类
4、 PInfo的定义并不完整。请按要求完成下列操作,将类 PInfo 的定义补充完成: (1)定义私有数据成员 bloodType 用于表示血型,血型为 char 型的数据。请在注释 1 之后添加适当的语句。(2)完成构造函数的定义,要求具有默认值,默认值为身高 175,体重 70,血型 A。请在注释 2 之后添加适当的语句。 (3)完成类 PInfo 外成员函数 SetInfo 的定义。请在注释 3 之后添加适当的语句。 (4)在主函数 main 中调用成员函数 SetInfo,把对象 d2 的 3 个私有数据成员分别设定为身高 170,体重64,血型 B。请在注释 4 之后添加适当的语句。
5、注意:除在指定位置添加语句之外,请不要改动程序中的其他内容。 试题程序: #includeiostream.h class PInfo private: int height; int weight; /*1* public: /*2* :height(ht),weight(wt),bloodType(bt); PInfo(PInfo int GetWeight() return weight; int GetBloodType() return bloodType; void SetInfo(int ht,int wt,char bt); void Display(); ; /*3*。 he
6、ight=ht; weight=wt; bloodType=bt; void PInfo:Display() cout“HumanOnfo:“; coutheight“cm,“weight“Kg, BloodType“bloodTypeendl; void main() PInfo h1(169,61,“A“); PInfo h2; PInfo h3(h1); PInfo h4(h2); /*4* h1.Display(); h2.Display(); h3.Display(); h4.Display(); (分数:40.00)_二级 C+-96 答案解析(总分:100.00,做题时间:90
7、分钟)一、程序改错题(总题数:1,分数:30.00)1.使用 VC+6.0 打开 下的源程序文件 1.cpp,该程序运行时有错,请改正程序中的错误,使程序输出的结果为 150 200 注意:错误的语句在/*error*的下面,修改该语句即可。 提示:定义 Num1 为一个整型数据位长的变量。 试题程序: #includeiostream.h /*error* struct /*error* int Num1:1; int Num2; MyStruct; void main() MyStruct mstr; mstr.Num1=150; mstr.Num2=15; /*error* int *
8、ptr= cout*ptrendl; *ptr=200; cout*ptrendl; (分数:30.00)_正确答案:()解析:(1)“typedef struct”。 (2)“int Num1:32;”或“int Num1;”。 (3)“int * ptr=(int *)”。 答案考生文件夹 解析 第 1 处是定义结构体,结构体定义的一般形式为 struct结构体名 成员列表 变量名列表; 程序当中定义结构体名放在后面,MyStruct 为结构体变量类型,相当于 typedef 为已有的类型定义一个新的类型,第 1 处应改为“typedef struct”。第 2 处是定义 Num1 为一个
9、整型数据变量,整型数据位数为 32(4 字节),因此第 2 处应改成“int Num1:32;”或“int Num1;”。ptr 为整型数据指针,mstr 为MyStruct 类型结构变量,两者类型不一致应该做强制类型转换,第 3 处应改成“int * ptr=(int *)”,表示将 mstr 的地址给 ptr,ptr 指向 MyStruct 的第一个域 Num1,Num1 也是整型,类型一致,故可通过 ptr 指针来改变 Num1 的值。二、简单应用题(总题数:1,分数:30.00)2.使用 VC+6.0 打开 下的源程序文件 2.cpp。阅读下列函数说明和代码,补充空出的代码。函数IsP
10、alindromes(char * string)实现的功能是判定给定的字符串是否构成回文字符串,如果是则返回 1,否则返回 0。 例如:abcdcba 或者 1234321 都认为是回文字符串。 如果串为空或一个字母时,均认为是回文字符串。 注意:不能修改程序的其他部分,只能补充 IsPalindromes 函数。 试题程序: #includeiostream.h #define MAXLEN 1024 bool IsPalindromes(char * string) void main() char strMAXLEN; cout“请输入一行文字“endl; cin.getline(st
11、r,MAXLEN); coutIsPalindromes(str)endl; return; (分数:30.00)_正确答案:()解析:int len=0; for(;stringlen!=NULL;len+) /获取字符串的长度 ; len-; /下标从 0 开始到 len-1 for(int i=0;ilen;i+,len-) /第一个和最后一个比较,第二个和倒数第二个比较 if(stringi!=stringlen) /不等说明不同,返回 0 return 0; return 1; 答案考生文件夹 解析 本题由于字符串的长度是未知的,先利用循环求出字符串的长度,循环变量从 0开始,直到数
12、组的末尾,stringlen=NULL 为循环结束条件,如此便得到了数组的长度 len。知道长度后就可以判断对称位置的元素是否相同,比如第一个元素和最后一个元素,第二个元素和倒数第二个元素,如此比较下去直到到了最中间的元素为止。可以利用循环来比较是否对称,设置另一个循环变量 i,i 从0 开始表示从数组的头部开始读数,len 从数组的尾部开始读数,如果 stringi!=stringlen,则跳出循环返回 0,如果循环结束还没发现不同,则返回 1。三、综合应用题(总题数:1,分数:40.00)3.使用 VC+6.0 打开 下的源程序文件 3.cpp,其中定义了用于表示个人基本信息的类 PInf
13、o,但类 PInfo的定义并不完整。请按要求完成下列操作,将类 PInfo 的定义补充完成: (1)定义私有数据成员 bloodType 用于表示血型,血型为 char 型的数据。请在注释 1 之后添加适当的语句。(2)完成构造函数的定义,要求具有默认值,默认值为身高 175,体重 70,血型 A。请在注释 2 之后添加适当的语句。 (3)完成类 PInfo 外成员函数 SetInfo 的定义。请在注释 3 之后添加适当的语句。 (4)在主函数 main 中调用成员函数 SetInfo,把对象 d2 的 3 个私有数据成员分别设定为身高 170,体重64,血型 B。请在注释 4 之后添加适当的
14、语句。 注意:除在指定位置添加语句之外,请不要改动程序中的其他内容。 试题程序: #includeiostream.h class PInfo private: int height; int weight; /*1* public: /*2* :height(ht),weight(wt),bloodType(bt); PInfo(PInfo int GetWeight() return weight; int GetBloodType() return bloodType; void SetInfo(int ht,int wt,char bt); void Display(); ; /*3*
15、。 height=ht; weight=wt; bloodType=bt; void PInfo:Display() cout“HumanOnfo:“; coutheight“cm,“weight“Kg, BloodType“bloodTypeendl; void main() PInfo h1(169,61,“A“); PInfo h2; PInfo h3(h1); PInfo h4(h2); /*4* h1.Display(); h2.Display(); h3.Display(); h4.Display(); (分数:40.00)_正确答案:()解析:(1)应添加“char bloodT
16、ype;”。 (2)应添加“PInfo(int ht=175,int wt=70,char bt=“A“)”。 (3)应添加“void PInfo:SetInfo(int ht,int wt,charbt)”。 (4)应添加“h2.SetInfo(170,64,“B“);”。 答案考生文件夹 解析 本题第 1 处定义私有数据成员为 char 型的 bloodType,故第 1 处应添加“char bloodType;”。构造 PInfo()完成 3 个成员的初始化,并且带有默认值参数,默认值为身高 175,体重70,血型 A,由函数体语句可知参数名分别为 ht、wt 和 bt,因此第 2 处应添加“PInfo(int ht=175,int wt=70,char bt=“A“)”。第 3 处的语句在类外完成成员函数 SetInfo 的定义,在类外定义成员函数的格式为“返回值类型类名:成员函数(参数表)”,故第 3 处应添加“void PInfo:SetInfo(int ht,int wt,char bt)”。调用函数 SetInfo 需要 3 个参数,程序要求把对象 d2 的 3个私有数据成员分别设定为身高 170,体重 64,血型为 B,即把这 3 个值传入函数 SetInfo,因此第 4 处应添加“h2.SetInfo(170,64,“B“);”。