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