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