1、国家二级 C+机试(操作题)模拟试卷 208及答案与解析 一、基本操作题 1 请使用 VC6或使用【答题】菜单打开考生文件夹 proj1下的工程 proj1。程序中位于每个 “ ERROR*found*”之后的一行语句有错误,请加以改正。改正后程序的输出结果应为: value=63 number=1 注意:只修改每个 “ ERROR*found*”下的那一行,不要改动程序中的其他内容。 1 #include 2 using namespace std; 3 4 class MyClasS 5 int*p; 6 const int N; 7 public: 8 ERROR * found* 9
2、MyClas S(int val): N=1 10 11 p=new int; 12 *p=val; 13 14 ERROR *found* 15 MyClass()delete*p; ) 16 friend void print(MyClass obj); 17 ; 18 ERROR *found* 19 void MyClass: print(MyClasS obj) 20 21 cout “value=“ 2 #include 3 using namespace std; 4 class MyString 5 6 private: 7 char*str; 8 public: 9 MySt
3、ring(char*s) 10 11 *found* 12 str=new_; 13 strcpy(str, s); 14 15 MyString() 16 17 *found* 18 _; 19 20 char 22 char 27 *found* 28 return_; 29 30 int main() 31 32 MyString test(“test string“); 33 cout=2007-06-19 2007-06-21=“; 6 date2 show(); cout=“; 9 date3 show(); cout= “; 12 date4 show(); cout 3 #in
4、clude 4 using namespace std; 5 class Date 6 int year; 7 int month; 8 int day; 9 public: 10 Date(int y, int m, int d): year 11 (y), month(m), day(d)int getYear()constreturn year; 12 int getMonth()const return month; 13 int getDay()constreturn day; 14 void show(ostream 15 bool operator=: (Date date)co
5、nst 16 return year=date year month 17 =date month day=date day; 18 bool isLessThan(Date date)const; 19 ; 20 void writeToFile(const char*path); 国家二级 C+机试(操作题)模拟试卷 208答案与解析 一、基本操作题 1 【正确答案】 (1)MyClass(int val): N(1) (2) MyClass()deletep; (3)void print(MyClass&obj) 【试题解析】 (1)主要考查考生对构造函数的掌握,在这里不能使用赋值语句。
6、 (2)主要考查考生对析构函数的掌握,析构函数的 delete语句要使用标识符 “”,即 deletep;。 (3)主要考查考生对友元函数的掌握,友元函数并不属于类,因此定义时前面不用加类名和作用域符号。 二、简单应用题 2 【正确答案】 (1)charstrlen(s)+1 (2)deletestr (3)istrlen(str) (4)str0 【试题解析】 (1)主要考查构造函数中成员变量的赋值、动态内存的分配和字符串长度函数的使用,成员变量 str是字符串指针,赋值时使用 new分配内存空间,为了存放字符串尾部的空字符,需要分配的容量为字符串 str长度 +1,另外使用 strlen获
7、取 str的长度。 (2)主要考查考生对析构函数定义的掌握和动态内存的释放, MyString类的成员str是在构造函数中使用 new分配的,所以在析构函数中需要使用 delete释放。 (3)主要考查考生对字符串库函数调用的掌握,使用 strlen获取 str的长度,判断下标 i是否越界。 (4)如果下标 i越界,根据题意返回第一个元素 str0。 三、综合应用题 3 【正确答案】 1 bool less=false: 2 if(yeardate getear() year=date get-Year()& monthdate getMonth() year=date getYear()&m
8、onth=date getMonth()&daydate getDay() 3 4 less=true: 5 6 retum less: 【试题解析】 主要考查考生对成员函数、关系运算符和逻辑运算符的掌握,成员函数 isLessThan是将该对象本身与参数 date进行比较,返回是否小于的布尔值。为了比较 isLessThan的调用对象与 date的大小,需要依次比较 year、 month、day三个整数,由于 date的 year、 month、 day都是私有成员,所以不能在islessThan中直接使用 date的私有成 员,而是应该使用 date的共有成员函数来返回这些值,再将本身的成员与返回值比较,同时,为了比较时间大小,应该首先将 year进行比较,接着是 month,最后是 day,并将比较结果暂存布尔变量 less中,最后返回。