1、国家二级 C+机试(操作题)模拟试卷 261及答案与解析 一、基本操作题 1 使用 VC6打开考生文件夹下的源程序文件 modi1 cpp,该程序运行时有错,请改正其中的错误,使程序正确运行,并且使程序输出的结果为: Hello Visual C+! Hello Visual C+! 注意:错误的语句在 *error*的下面,修改该语句即可。 #include iostream h class CMyObjett public: CMyObject() *error* cout “Hello, “VisualC+!“ endl; CMyObject(int n) *error* cout “H
2、ello, nVisual C+!“ endl; *error* CMyObject() ; void main() CMyObject obj1; CMyObject obj2(0); 二、简单应用题 2 使用 VC6打开考生文件夹下的源程序文件 modi2 cpp。阅读下列函数说明和代码。函数 MergeAndSort(int s, int e, int a, int m, int n)实现将两个数组合并。这两个数组已经有序,按照由小到大的顺序排列。 例如: e=1, 3, 5, 6, m是数组 e的长度,即为 4。 a=2,4, 5, 7, 11, 13, n是数组 a的长度,即为 6。
3、 则执行的结果为: s=1, 2, 3, 4, 5, 6, 7, 11, 13 补充函数 fun(int s, int e, int a, int m, int n),使之实现上述要求。 注意: 请勿改动主函数。 #include iostream h void MergeAndSort(int s, int e, int a, int m, int n) int main() int data20, i; int a=(1, 3, 5, 6); int b=2, 4, 5, 7, 11, 13; cout “a=“; for(i=0; i 4; i+) cout ai , ; cout en
4、dl; cout “b=“; for(i=0; i 6; i+) cout bi , ; cout endl; MergeAndSort(data, a, b, 4, 6); cout “s=“; for(i=0; i 9; i+) cout datai , ; cout endl; return0; 三、综合应用题 3 使用 VC6打开考生文件夹下的源程序文件 modi3 cpp。其中定义的类并不完整,按要求完成下列操作,将类的定义补充完整。完成以下功能: (1)定义 CMyTime的私有成员函数 m year、 m month类型为 int,请在注释 *1*后添加适当的语句。 (2)补充完
5、成 CMyTime的构造函数,完成对 m year、 m month的赋值,请在注释 *2*后添加适当的语句。 (3)完成 print()的输出,请在注释 *3*后添加适当的语句。输出格式如下: Current Time year: xx month: xx 注意: xx表示两位 0 9的数字,如 Current Time year: 08month: 04。 (4)完成对 month的增加函数 AddMonth(int m),请在注释 *4*后添加适当的语句。 注意:除在指定位置添加语句之外,请不要改动程序中的其他内容。 #include iostream h class CMyTime p
6、rivate: *1* public: CMyTime(int year, int month) *2* void display() char yearChar3; char monthChar3; yearChar0=(m_year 100) i0+0; yearChar1=(m_year 10)+0; monthChar0=(m_month 100) 10+0; monthChar1=(m_month 10)+0; *3* cout “Current Time“ “year: “ yearChar “month: “ monthChar endl; void AddMonth(int m
7、) m_month=m_month-1+m; *4* m_month=m_month 12+1; void AddYear(int n) m_year=m_year+n; ; int main() CMyTime myTime(2006, 11); myTime AddMonth(5); myTime display(); myTime AddYear(1); myTime display(); return0; 国家二级 C+机试(操作题)模拟试卷 261答案与解析 一、基本操作题 1 【正确答案】 (1)cout “Hello, “ (2)cout “Helio, (3) CMyObjec
8、t() 【试题解析】 (1)由程序的运行结果可知,语句 CMyObject obj1;定义 obj1对象调用默认的构造函数,此时屏幕上输出 “Hello Visual C+!”cout流中的数据是用流插入运算符 “ ”顺序加入的,第 1个标识下 “Hello, ”字符串插在输出流中,因此必须加双引号引用起来,即第 1个标识下应该为 “cout ”“Hello, “”。 (2)第 2个标识下 “ n”表示换行,与要求的输出结果不同,因此第 2个标识下应改为 “cout “Hello, ”。 (3)析构函数是一个特殊的函数,其函数名与类名相同,并在其名加 “ ”,用来与构造函数加以区别,因此第 3
9、个标识下应改为 “ CMyObject()”。 二、简单应用题 2 【正确答案】 int i, j, k; i=0; j=0; k=0; while(i m & j n) if(ei aj) Sk+=ei+;取小的,因为从小到大排序 else if(ei=aj)相等,取 ei或 aj都可 si+=ei; i+; j+; else ei aj,取小的 aj sk+=aj+; while(i m)sk+=ei+;如果数组 e后面还有没有加进来的元素,则加进去 while(j n)sk+=aj+;如果数组 a后面还有没有加进来的元素,则加进去 【试题解析】 (1)由审题分析可知,可设置循环来逐个读取
10、 e数组和 a数组的元素值,然后选择小的元素放在数组 s中,如果 相等则取 a数组元素或 e数组元素均可,可以利用 if else语句来进行判断。 (2)由于数组 e和数组 a长度可能不一定相同,因此在循环结束之后,还需要把长度长的数组的剩余的元素添加到 s数字中,即循环结束后如果 e数组内还有字符的话把 e数组内剩下的字符添加到 s数组内,同样如果 a数组内还有字符的话把 a数组内剩下的字符添加到 S数组内。 三、综合应用题 3 【正确答案】 (1)添加语句: int m_year, m_month; (2)添加语句: m_year=year; m_month=month; (3)添加语句:
11、 yearChar2=0; monthChar2=0; (4)添加语句: m_year+=m_month 12;或 m_year=m_year+m_month 12; 【试题解析】 (1)第 1个标识下添加 CMyTime的私有成员变量 m_year、m_month的声明,因此第 1个标识下应添加 “int m_year, m_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+m_month 12; ”。