1、国家二级 C+机试(操作题)模拟试卷 272及答案与解析 一、基本操作题 1 使用 vC6打开考生文件夹下的源程序文件 modi1 cpp,但该程序运行时有错,请改正程序中的错误,使程序输出的结果为: 150 200 注意:错误的语句在 *error*的下面,修改该语句即可。 提示:定义 Number1为一个整型数据位长的变量。 #include iostream h *error* struct *error* int Number1: 1; int Number2; MyStruct; void main() MyStruct mstr; mstr Number1=150; mstr Nu
2、mber2=15; *error* int*ptr=&mstr Number1; cout *ptr endl; *ptr=200; cout *ptr endl; 二、简单应用题 2 使用 VC6打开考生文件夹下的源程序文件 modi2 cpp。阅读下列函数说明和代码,补充空出的代码。函数 IsPalindromes(cha*string)实现的功能是判定给定的字符串是否构成回文字符串,如果是则返回 1,否则返回 0。 如: 1234554321或者 1234321都认为是回文字符串。 如果串为空或一个字母时,均认为是回文字符串。 注意:不能修改程序的其他部分,只能补充 IsPalindro
3、mes()函数。 #include iostream h #define MAXLEN1024 bool IsPalindromes(char*string) void main() char strMAXLEN, cout “请输入一行文字 “ endl; cin getline(str, MAXLEN); cout IsPal indromes(str) endl; return; 三、综合应用题 3 使用 VC6打开考生文件夹下的源程序文件 modi3 cpp,其中定义了用于表示人基本信息的类 CHumanlnfo,但类 CHumanlnfo的定义并不完整。请按要求完成下列操作,将类 C
4、Humanlnfo的定义补充完成: (1)定义私有数据成员 bloodType用于表示血型,血型为 char型的数据。请在注 释 *1*之后添加适当的语句。 (2)完成构造函数的定义,要求具有缺省值,缺省值为身高 175,体重 70,血型A。请在注释 *2*之后添加适当的语句。 (3)完成类外 CHumanlnfo成员函数 Setlnfo的定义。请在注释*3*之后添加适当的语句。 (4)在主函数中调用成员函数 Setlnfo,把对象 d2的三个私有数据成员分别设定为身高 170,体重 64,血型为 B。请在注释 *4*之后添加适 当的语句。 注意:除在指定位置添加语句之外,请不要改动程序中的其
5、他内容。 #include iostream h class CHumanInfo private: int height; int*weight; *1* public: *2* : height(ht), weight(wt), bloodType(bt); CHumanInfo(CHumanInfo &h1): height(h1 height), weight(h1 weight), bloodType(h1 bloodType); int GetHeight() return height; int GetWeight() return weight; ) int GetBloodT
6、ype() return bloodType; void SetInfo(int ht, intwt, char bt); void Display(); ; *3* height=ht; weight=wt; bloodType=bt; void CHumanInfo: Display() cout “HumanInfo: “; cout height “cm, “ weight “Kg, BloodType“ bloodTypeendl; void main() CHumanlnfo h1(169, 61, A; CHumanInfo h2; CHumanInfo h3(h1); CHum
7、anInfo h4(h2); *4* h1 Display(); h2 Display(); h3 Display(); h4 Display(); 国家二级 C+机试(操作题)模拟试卷 272答案与解析 一、基本操作题 1 【正确答案】 (1)typedef struct (2)int Number1: 32;或 int Number1; (3)int* ptr=(int*) &mstr; 【试题解析】 (1)第 1标识下是定义结构体,结构体定义的一般形式为: struct结构体名 成员列表 变量名列表; 程序当中定义结构体名放在后面, MyStruct为结构体变量类型,相当于 typede
8、f为已有的类型定义一个新的类型,第 1个标识下应改为 “typedefstruct”。 (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也是整形,类型一致,故可通过 p
9、tr指针来改变 Number1的值。 二、简单应用题 2 【正确答案】 int fen=0; for(; stringlen!=NULL; len+)获取字符串的长度 ; len-;下标从 0开始到 len-1 for(int i=0; i len; i+, len-)第一个和最后一个比较,第二个和倒数第二个比较 if(stringi!=stringlen)不等说明不同,返回 0 return0; return1; 【试题解析】 (1)由于字符串的长度是未知的,先利用循环求出字符串的长度,循环变量从 0开始,直到数组的结束, stringlen=NUL为循环结束条件,如此便得到了数组的长度 l
10、en。 (2)知道长度后就可以判断对称位置的元素是否相同,比如第一个元素和最后一个元素,第二个元素和倒数第二个元素,如此比较下去直到到了最中间的元素为止。 (3)可以利用循环来比较是否对称,设置另一个循环变量 i, i从 0开始表示从数组的头开始读数, len从数组的尾部开始读数,如果 stringi!=stringlen,则跳出循环返回 0,如 三、综合应用题 3 【正确答案】 (1)添加语句: char bloodType; (2)添加语句: CHumanInfo(int ht=175, intwt=70, char bt=A) (3)添加语句: void CHumanInfo: SetI
11、nfo(int ht, int wt, char bt) (4)添加语句: h2 SetInfo(170, 64, B); 【试题解析】 (1)第 1个标识下定义私有数据成员 char型的 bloodType,故第 1个标识下 应添加 “char bloodType: ”。 (2)构造 CHumanlnfo()完成三个成员的初始化,并且带有缺省值参数,缺省值为身高 175,体重 70,血型 A,由函数体语句可知参数名分别为 ht、 wt和 bt,因此第2个标识下应添加 “CHumanlnfo(int ht=175, int wt=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个标识下应添加 “h2 SetInfo(170, 64, B): ”。