1、国家二级 C+机试(操作题)模拟试卷 49及答案与解析 一、基本操作题 1 使用 VC6打开考生文件夹下的源程序文件 modil cpp,该程序运行时有误,请改正其中的错误,使程序正常运行,并使程序在界面上输出为: 平均值为: 29 最大值为: 112 最小值为: -11 注意:错误的语句在 *error*的下面。修改该语句即可。 1 #include 2 using namespace std; 3 int main() 4 5 int i|Ave|Min t Max; 6 int data8 (0, 112, 43, 78, -11, -6, 7, 9); 7 Ave=0 ; 8 for(
2、i=0 ; iMin) Min=datai; 20 21 cout 2 #define MAXLEN 1024 3 bool IsPalindromes(char*string) 4 5 6 7 void main() 8 9 char StrMAXLEN; 10 cout 2 #include 3 ClasS CPoint 4 5 public: 6 *1* 7 8 9 x=i ; 10 y=J; 11 12 int GetX() 13 14 return X; 15 16 int GetY() 17 18 return Y; 19 20 private: 21 int x, y; 22 ;
3、 23 Class CRectangle 24 25 public: 26 *2* 27 28 29 30 int GetArea() 31 32 *3* 33 34 int height=pointl GetY()-point2 GetY(); 35 return (width*height); width*height: -width*height; 36 37 int GetGirth() 38 39 int width=abs(pointl GetX()-point2 GetX(); 40 int height=abs(pointl GetY()-point2 GetY(); 41 r
4、eturn(2*(width+height); 42 43 private: 44 *4* 45 46 CPoint point2 ; 47 j ; 48 int main() 49 50 CRectangle rect(5, 2, 13, 18); 51 coutMax)Max=datai; (3)if(dataiMax)Max=datai。 (3)同样如果数组该元素值比 Min小,则 Min取该元素值。因此,两个 if中条件判断错误,第 3标识处 “if(dataiMin)Min=datai”改成“if(dataiMin)Min=datai”。 二、简单应用题 2 【正确答案】 1 int
5、 len=0 ; 2 for(; stringlen!=NULL; len+) 获取字符串的长度 3 ; 4 len-; 下标从 0开始到 len-1 5 for(int i=0 ; ilen; i+, len-) 第一个和最后一个比较,第二个和倒数第二个比较 6 7 if( stringi != string len)不等说 明不同,返回 0 8 return 0; 9 10 return 1 ; 【试题解析】 函数 IsPalindromes(cha水 string)实现的功能是判定给定的字符串是否构成回文字符串,如果是则返回 1,否则返回 0。回文是指前后对称的字符串,因此可比较对称位置
6、的字符是否一样来判断是否是回文,如果每个对称位置的元素均相同则是回文,返回 1,否则返回 0。 解题思路 (1)由于字符串的长度是未知的,先利用循环求出字符串的长度,循环变量从 0开始,直到数组 的结束, stringlen=NUL为循环结束条件,如此便得到了数组的长度 len。 (2)知道长度后就可以判断对称位置的元素是否相同,比如第一个元素和最后一个元素,第二个元素和倒数第二个元素,如此比较下去直到到了最中间的元素为止。 (3)可以利用循环来比较是否对称,设置另一个循环变量 i, i从 0开始表示从数组的头开始读数, len从数组的尾部开始读数,如果 stringi!=stringlen,
7、则跳出循环返回 0,如果循环结束还没发现不同则返回 l。 三、综合应用题 3 【正确答案】 (1)添加语句: CPoint(int i=0, int j=0) (2)添加语句: CRectangle(int top, int left, int right, int bottom): pointl(top,left), point2(right, bottom) (3)添加语句: int width=pointl GetX()-point2 GetX(); (4)添加语句: CPoint pointl; 【试题解析】 程序中定义了 CPoint和 CRectangle两个类,分别表示点坐标类和
8、矩形类,点 坐标类有 2个私有成员变量 x和 y表示坐标值,矩形类有 2个 CPoint成员。函数 GetArea()用来计算矩形面积,可由矩形的长和宽计算得到,同样GetGirth()函数返回矩形的周长也可由长和宽得到。主函数内定义一个 CRectangle对象,分别调用 GetArea()和 GetGirth()计算面积和周长,然后打印计算结果。 解题思路 (1)在第 1个标识下添加构造函数定义,该构造带有两个参数 x和 Y的构造函数, x、 y都为 int型,缺省值为 0,因此第 1个标识下应添加 CPoint(int i=0, int j=0)。 (2)第 2个标识下通过 Cpoint
9、类的构造函数来完成 Crectangle类成员的初始化,在函数体内没有任何函数语句,因此其初始化过程是在初始化列表里完成的,通过调用基类的构造函数来实现两个私有对象 point1和 point2的初始化,故第 2个标识下应添加 CRectangle(int top, int left, int right, intbottom): pointl(top,left), point2(right, bottom)。 (3)面积为矩形的长宽之积,因此先计算矩形的长和 宽,可由两个 Cpoint对象的x坐标相减计算得到, CPoint对象的 x坐标为私有成员,只能通过公有接口函数调用获得,因此第 3个标识下为 “int width=pointl GetX()-point2 GetX(); ”。 (4)Crectangle类的成员变量为两个 Cpoint对象成员 pointl和 point2,第 4个标识下补充 pointl的定义,故第 4个标识下应添加 “CPoint pointl; ”。
copyright@ 2008-2019 麦多课文库(www.mydoc123.com)网站版权所有
备案/许可证编号:苏ICP备17064731号-1