1、国家二级 C+机试(操作题)模拟试卷 63及答案与解析 一、基本操作题 1 使用 VC6打开考生文件夹下的源程序文件 modil cpp,但该程序运行时有错,请改正 main()函数中的错误,使程序的输出结果如下: Constructor Default constructor Area is 12 Area is 0 Area is 12 注意:错误的语句在 *error*的下面,修改该语句即可。 1 #include 2 class CRectangle 3 4 private: 5 double length, width; 6 public: 7 CRectangle() 8 9 co
2、utlength=l; 19 this-width=w; 20 21 void GetArea() 22 23 coutch,则新的查找区间的下界不变,上界改为 k-1;否则新的查找区间的下界改为 k+1,上界不变。在新区间内继续用二分法查找。 注意:请勿改动主函数 main与其他函数中的任何内容,仅在函数 fun的花括号中填入所编写的若干语句。 1 #include 2 int fun(char*str, char ch) 3 4 5 6 void main() 7 8 char str=a, b, c, d, e, f, g, h, i, j, k, 0); 9 char ch; 10 c
3、outch; i2 cout 2 class CMyTime 3 4 private: 5 *1* 6 7 public: 8 CMyTime(int year, int month) 9 10 *2* 11 12 13 void display() 14 15 char yearChar3; 16 char monthChar3, 17 yearChar0=(m_year 100) 10+0, 18 yearChar1=(m_year 10)+0; 19 monthChar0=(m month 100) 10+0; 20 monthChar1=(m month 10)+0; 21 *3* 2
4、2 23 coutch) 11 high=k一 1; 12 else low=k+1; 13 14 if(str10w=ch) 15 return low; 16 return -1 ; 【试题解 析】 根据题干中给出的二分法查找思想,从已给部分源程序的 main主函数开始入手,核心函数 int fun(char*str,char ch)中的 ch参数为输入的字符,其中返回值为 ch所在的位置。 解题思路 (1)首先,初始查找区间的下界为 0。 (2)然后,求得字符串长度 len,上界为 len-1,查找区间的中后, k-(下界 +上界 ) 2;若 listk等于 ch,查找成功。 (3)若
5、listkch,则新的查找区间的下界不变,上界改为 k 1:否则新的查找区间的下界改为 k+1,上界不变。 三、综合应用题 3 【正确答案】 (1)添加语句: int m year, m month; (2)添加语句: m_year=year; m month=month; (3)添加语句: yearChar2=0; monthChar2=0 ; (4)添加语句: m_year+=m month 12;或 m_year=m_year+m_month 12 ; 【试题解析】 程序中定义了类 CMyTime,含有 m_year和 m_month两个成员变量,成员函数 display()显示成员变量
6、的值, AddMonth(int m)和 AddYear(int n)函数分别改变 m_month和 m_year两个成员变量的值。 解题思路 (1)第 1个标识下添加 CMyTime的私有成员变量 m_year、 m_month的声明,因此第 1个标识下应添加 “intm_year,m_month; ”。 (2)第 2个标识下完成类成员构造函数变量的初始化,即将参数分别赋值给m_year和 m_month,因此第 2个标识 F应添加 “m_year=year;m_month=month; ”。 (3)第 3个标识下准备输出 yearChar数组和 monthChar数组,字符数组的最后一个字符应该为 NULL(O),因此第 3个标识下应添加 “yearChar2=0;monthChar2=0; ”。 (4)m month和参数之和赋值给 m_month,其和可能超过 12,如果超过 12表示下一年了,因此 m_year应该加 l,故先判断 m month是否比 12大,可取m_month 12和 m_year相加,如果 m_month没有超过 12则 m_month 12=0反之则为 1,第 4标识下应添加 “m year+=m month 12;或m_year=m_year+m_month 12; ”。