1、国家二级 C+机试(操作题)模拟试卷 97及答案与解析 一、基本操作题 1 使用 VC6打开考生文件夹下的源程序文件 modi 1 cpp,该程序运行时有错,请改正错误,使得程序正确执行,并且输出以下语句: TestClassl: 0 TestClass2 注意:不要改动 main函数,不能增行或删行,也不能更改程序的结构,错误的语句在 *error*的下面。 #include Struct TestClassl TestClassl(int i=0) mi=i ; void print() cout int fun(int*a, int n) void main() int A=6, 6,
2、5, 4, 4, 3, 3, 2, 1); int j=fun(A, Si zeof(A) Si zeof(int); for(int i=0 ;i class CMyTime private: *1* 9ublic: CMyTime(int year, int month) *2* void display() char yearChar3; char monthChar3; yearChar0= (m_year 10 0) i0+。 0; yearChar1= (m_year 10)+0; monthChar0= (m month 10 0) 1 0+0; monthChar1= (m m
3、onth 10)+0, *3* cout“Current Time ”year: “yearChar”month: ”monthCharendl, void AddMonth(int m) mmonth=mmonth一 1+m; *4* mmonth=mmonth 12+1 ; void AddYear(int n) m_year=ml_year+n ; int main() CMyTime myTime(2006, 11); myTime AddMonth(5); myTime display(); myTime AddYear(1); myime display(); return 0;
4、国家二级 C+机试(操作题)模拟试卷 97答案与解析 一、基本操作题 1 【正确答案】 (1)public: (2)TestClass1 obj 1(0);或 TestClassl obj 1 ; (3)TestClass2 obj 2 ; 【试题解析】 程序要求输出 TestClassl: 0和 TestClass2。从已定源程序的 main主函数开始入手,可以看出程序首先定义 TestClassl和 TestClass2类型的变量,然后通过调用其中的 print成员函数实现输出结果。 解题思路 (1)第 1个标识下的 “private: TestClass20”是析构函数,它不是私有的,所
5、以这里应该为 “删除 private:或修改为 public: ”0 (2)第 2个标识下的 “TestClass1 obj10; “语句是定义一个 TestClassl类型 的对象obj 10,根据类 TestClassl构造函数的定义 “TestClassl(int i=0)”,知道存在整型参数,应该补充参数,或者只是先定义一个对象名,然后在使用时补充参数,即修改为 “TestClassl objl(o);或 TestClassl 0bj1; ”。 (3)同理第 3个标识下的 “TestClass2 obj2(); ”语句修改为 “TestClass2 obj2; ”0 二、简单应用题 2
6、 【正确答案】 intj ; int k=0;指向数组第一个元素 j=1 ; 指向数组 第二个元素 while(jn)将本次循环 k指向的元 素依次与其他元素比较,如果不同,则存 入数组 if(aj!=ak) a+k=aj; k指向下一个元素 j+; return k+1 ; 为新数组大小 【试题解析】 (1)该程序功能是将指定的有序数组压缩成各元素互不相同的有序数组,即相同数只保留一个,多余的被删除。它的解题思路,由第一个元素开始,利用循环将所有元素,依次与它后面的元素比较, 如果不同存入数组。 (2)从已给部分源程序的 main主函数开始入手,核心函数 int fun(int*a,int
7、n)中的参数 a为输入的数组, n为数组大小。 解题思路 (1)首先指向数组第一个元素 ak,然后将第二元素 aj与它比较,不同存入数组第二个元素 (a+k)。 (2)同时,将被比较的位置向后移动一位 (+)。循环直到数组的最后一个元素比较完毕。 三、综合应用题 3 【正确答案】 (1)添加语句: int m_year, m month; (2)添加语句: m_year=year; m month=month; (3)添加语句: yearChar2=0; monthChar2=0 ; (4)添加语句: m_year+=mmonth 112;或 m_year=ml_year+mmonth 12;
8、 【试题解析】 (1)第 1个标识下添加 CMyTime的私有成员变量 m year、 m month的声明,因此第 1个标识下应添加 “intm_year,re_month; ”。 (2)第 2个标识下完成类成员构造函数变量的初始化,即将参数分别赋值给 m year和 m month,因此第 2个标识下应添 加 “m_year=year; m_month=month; ”。 (3)第 3个标识下准备输出 yearChar数组和 monthChar数组,字符数组的最后一个字符应该为 NULL(0),因此第 3个标识下应添加 “yearChar2=0;monthChar2=0; ”。 (4)m month和参数之和赋值给 m month,其和可能超过 12,如果超过 12表示下一年了,因此 m year应该加 1,故先判断 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+mmonth12; ”。
copyright@ 2008-2019 麦多课文库(www.mydoc123.com)网站版权所有
备案/许可证编号:苏ICP备17064731号-1