1、国家二级 C+机试(操作题)模拟试卷 445及答案解析(总分:6.00,做题时间:90 分钟)一、基本操作题(总题数:1,分数:2.00)1.使用 VC6打开考生文件夹下的源程序文件 modilcpp,但该程序运行时有错,请改正程序中的错误,使程序输出的结果为: 150 200 注意:错误的语句在*error*的下面,修改该语句即可。提示:定义 Number1为一个整型数据位长的变量。#includeiostreamh*error*struct *error* int Number1:1; int Number2;MyStruct;void main() MyStruct mstr; mstr
2、Number1=150; mstrNumber2=15; *error* int *ptr=&mstrNumber1; cout*ptrend1; *ptr=200; cout*ptrendl;(分数:2.00)_二、简单应用题(总题数:1,分数:2.00)2.使用 VC6打开考生文件夹下的源程序文件 modi2cpp。阅读下列函数说明和代码,补充空出的代码。函数 IsPalindromes(cha*string)实现的功能是判定给定的字符串是否构成回文字符串,如果是则返回1,否则返回 0。 如:1234554321 或者 1234321都认为是回文字符串。 如果串为空或一个字母时,均认为是回
3、文字符串。 注意:不能修改程序的其他部分,只能补充 IsPalindromes()函数。 #include #define MAXLEN 1024 bool IsPalindromes(char*string) void main() char StrMAXLEN; cout“请输入一行文字“_三、综合应用题(总题数:1,分数:2.00)3.使用 VC6打开考生文件夹下的源程序文件 modi3cpp,其中定义了用于表示人基本信息的类CHumanlnfo,但类 CHumanlnfo的定义并不完整。请按要求完成下列操作,将类 CHumanlnfo的定义补充完成: (1)定义私有数据成员 blood
4、Type用于表示血型,血型为 char型的数据。请在注释“*1*”之后添加适当的语句。 (2)完成构造函数的定义,要求具有缺省值,缺省值为身高 175,体重 70,血型 A。请在注释“*2*”之后添加适当的语句。 (3)完成类外 CHumanInfo成员函数 Setlnfo的定义。请在注释“*3*”之后添加适当的语句。 (4)在主函数中调用成员函数 SetInfo,把对象 d2的三个私有数据成员分别设定为身高 170,体重 64,血型为 B。请在注释“*4*”之后添加适当的语句。 注意:除在指定位置添加语句之外,请不要改动程序中的其他内容。#includeiostreamhclass CHum
5、anInfoprivate: int height; int weight; *1*public: *2* :height(ht),weight(wt),bloodType(bt); CHumanInfo(CHumanInfo &h1):height(h1height), weight(h1weight),bloodType(h1bloodType); int GetHeight() return height; int GetWeight() return weight; int GetBloodType() return bloodType; void SetInfo(int ht,int
6、 wt,char bt); void Display(); ; *3* height=ht; weight=wt; bloodType=bt; void CHumanInfo:Display() cout“HumanInfo:“; coutheight“cm, “weight“Kg,BloodType“bloodTypeend1;void main() CHumanInfo h1(169,61,A); CHumanInfo h2; CHumanInfo h3(h1); CHumanInfo h4(h2); *4* h1Display(); h2Display(); h3Display(); h
7、4Display();(分数:2.00)_国家二级 C+机试(操作题)模拟试卷 445答案解析(总分:6.00,做题时间:90 分钟)一、基本操作题(总题数:1,分数:2.00)1.使用 VC6打开考生文件夹下的源程序文件 modilcpp,但该程序运行时有错,请改正程序中的错误,使程序输出的结果为: 150 200 注意:错误的语句在*error*的下面,修改该语句即可。提示:定义 Number1为一个整型数据位长的变量。#includeiostreamh*error*struct *error* int Number1:1; int Number2;MyStruct;void main()
8、 MyStruct mstr; mstrNumber1=150; mstrNumber2=15; *error* int *ptr=&mstrNumber1; cout*ptrend1; *ptr=200; cout*ptrendl;(分数:2.00)_正确答案:(正确答案:(1)typedef struct (2)int Number1:32; 或 int Number1; (3)int* ptr=(int*)&mstr;)解析:解析:(1)第 1标识下是定义结构体,结构体定义的一般形式为: struct结构体名 成员列表 变量名列表; 程序当中定义结构体名放在后面,MyStruct 为结构
9、体变量类型,相当于typedef为已有的类型定义一个新的类型,第 1个标识下应改为“typedef struct”。 (2)第 2标识下是定义 Number1为一个整型数据 变量,整型数据位数为 32(4字节),因此第 2个标识下应改成“int Number1:32;”或“int Number1;”。 (3)ptr 为整型数据指针,mstr 为 MyStruct类型结构变量,两者类型不一致应该做强制类型转换,第 3个标识下应改成“int*ptr=(int*)&mstr;”,表示将 mstr的地址给 ptr,ptr 指向 MyStruct的第一个域 Number1,Number1 也是整形,类型
10、一致,故可通过 ptr指针来改变 Number1的值。二、简单应用题(总题数:1,分数:2.00)2.使用 VC6打开考生文件夹下的源程序文件 modi2cpp。阅读下列函数说明和代码,补充空出的代码。函数 IsPalindromes(cha*string)实现的功能是判定给定的字符串是否构成回文字符串,如果是则返回1,否则返回 0。 如:1234554321 或者 1234321都认为是回文字符串。 如果串为空或一个字母时,均认为是回文字符串。 注意:不能修改程序的其他部分,只能补充 IsPalindromes()函数。 #include #define MAXLEN 1024 bool I
11、sPalindromes(char*string) void main() char StrMAXLEN; cout“请输入一行文字“_正确答案:(正确答案: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;)解析:解析:(1)由于字符串的长度是未知的,先利用循环求出字符串的长度,循环变量从 0开
12、始,直到数组的结束,stringlen=NUL 为循环结束条件,如此便得到了数组的长度 len。 (2)知道长度后就可以判断对称位置的元素是否相同,比如第一个元素和最后一个元素,第二个元素和倒数第二个元素,如此比较下去直到到了最中间的元素为止。 (3)可以利用循环来比较是否对称,设置另一个循环变量 i,i 从 0开始表示从数组的头开始读数,len 从数组的尾部开始读数,如果 stringi!=stringlen,则跳出循环返回 0,如果循环结束还没发现不同则返回 1。三、综合应用题(总题数:1,分数:2.00)3.使用 VC6打开考生文件夹下的源程序文件 modi3cpp,其中定义了用于表示人
13、基本信息的类CHumanlnfo,但类 CHumanlnfo的定义并不完整。请按要求完成下列操作,将类 CHumanlnfo的定义补充完成: (1)定义私有数据成员 bloodType用于表示血型,血型为 char型的数据。请在注释“*1*”之后添加适当的语句。 (2)完成构造函数的定义,要求具有缺省值,缺省值为身高 175,体重 70,血型 A。请在注释“*2*”之后添加适当的语句。 (3)完成类外 CHumanInfo成员函数 Setlnfo的定义。请在注释“*3*”之后添加适当的语句。 (4)在主函数中调用成员函数 SetInfo,把对象 d2的三个私有数据成员分别设定为身高 170,体
14、重 64,血型为 B。请在注释“*4*”之后添加适当的语句。 注意:除在指定位置添加语句之外,请不要改动程序中的其他内容。#includeiostreamhclass CHumanInfoprivate: int height; int weight; *1*public: *2* :height(ht),weight(wt),bloodType(bt); CHumanInfo(CHumanInfo &h1):height(h1height), weight(h1weight),bloodType(h1bloodType); int GetHeight() return height; int
15、 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:“; coutheight“cm, “weight“Kg,BloodType“bloodTypeend1;void main() CHumanInfo h1(169,61,A); CHumanInf
16、o h2; CHumanInfo h3(h1); CHumanInfo h4(h2); *4* h1Display(); h2Display(); h3Display(); h4Display();(分数:2.00)_正确答案:(正确答案:(1)添加语句:char bloodType; (2)添加语句:CHumanInfo(int ht=175,int wt=70,char bt=A) (3)添加语句: void CHumanInfo:SetInfo(int ht,int wt,char bt) (4)添加语句:h2SetInfo(170,64,B);)解析:解析:(1)第 1个标识下定义私有
17、数据成员 char型的 bloodType,故第 1个标识下应添加“charbloodType;”。 (2)构造 CHumanInfo()完成三个成员的初始化,并且带有缺省值参数,缺省值为身高 175,体重 70,血型 A,由函数体语句可知参数名分别为 ht、 wt 和 bt,因此第 2个标识下应添加“CHumanInfo(int ht=175,intwt=70,char bt=A)”。 (3)第 3个标识下在类外完成成员函数SetInfo的定义,在类外定义成员函数的格式为:返回值类型类名:成员函数(参数表),故第 3个标识下应添加“void CHumanInfo:SetInfo(int ht,int wt,char bt)”。 (4)调用函数 SetInfo()需要 3个参数,程序要求把对象 d2的三个私有数据成员分别设定为身高 170,体重 64,血型为 B,即把这三个值传入函数 SetInfo(),因此第 4个标识下应添加“h2SetInfo(170,64,B);”。