1、国家二级 C+机试(操作题)模拟试卷 465及答案与解析 一、基本操作题 1 请使用 VC6或使用【答题】菜单打开考生文件夹 proj1下的工程 proj1,其中在编辑窗口内显示的主程序文件中定义有类 AAA和主函数 main。程序文本中位于每行 “ ERROR*found*”下面的一行有错误,请加以改正。改正后程序的输出结果应该是: sum=60 注意:只修改每个 “ ERROR*found*”下面的一行,不要改动程序中的其他任何内容。 #include using namespace std; class AAA int a10; int n; ERROR*found* private:
2、AAA(int aa , int nn): n(nn) ERROR*found* for(int i=0; i using namespace std; class Date 日期类 int year, month, day;年、月、日 public: Date(int year, int month, int day): year(year), month(month), day(day) int getYear()constreturn year; int getMonth()constreturn month; int getDay()constreturn day; ; class P
3、erson 人员类 char name14;姓名 bool is male;性别,为 true时表示男性 Date birth date;出生日期 public: Person(char*name, bool is male, Date birth date) *found* : _ strcpy(this-name, name); const char*getName()constreturn name; bool isMale()constreturn is male; Date getBirthdate()constreturn birth date; 利用 strcmp()函数比较姓名
4、,返回一个正 数、 0或负数,分别表示大于、等于、小于 int compareName(const Person&p)const *found* _ void show() couti) Person p=psm; psm=psi; psi=p; int main() Person staff= Person(“张三 “, true, Date(1978, 4, 20), Person(“王五 “, false, Date(1965, 8, 3), Person(“杨六 “, false, Date(1965, 9, 5), Person(“李四 “, true, Date(1973, 5,
5、30) ; const int size =siZeof (staff) sizeof(staff0); int i; cout #include using namespace std; class XArray数组类 int*a; int size; public: XArray(int b, int len): size(len)构造函数 if(sizename, name);可知,要使用成员列表初始化的成员为 is_male和 birth_date。 (2)主要考查考生对 strcmp()函数的掌握,先看程序对该函数的功能要求:利用strcmp()函数比较姓名,返回一个正数、 0或负数
6、,分别表示大于、等于、小于。因为 strcmp()函数的功能是比较字符串大小,因此可以直接被 return语句调用:return strcmp(name, p getName();。 (3)主要考查考生对成员函数的掌握,程序的注释为:显示出生月,由此可以知道这里要输出出生月份,直接调用函数 getMonth()即可。 三、综合应用题 3 【正确答案】 int XArray: sum() 补充函数体 int i, max=a0, min=a0; for(i=1; iai) min=ai; return max+min; 【试题解析】 Xarray类中包含两个数据成员: a是数组的指针, size是数组的长度。 main()函数中使用数组 s1构造 Xarray对象 x,此时对象 x中, a是包含 10个整型元素的数组指针, size是 10。成员函数 sum()的作用是求得数组 asize中最大值和最小值之和,所以函数体中需要遍历 a的 10个元素,找出最大值 max和最小值 min,再将两者之和返回,程序首先将数组 a的第一个元素赋给 max和 min,然后从下标为 1的元素开始向后遍历,遍历过程中,将当前遍历到的元素与 max和 min比较,存在比 max大的元素时,更新 max值;存在比 min小的元素时,更新 min值,最后将两者之和作为函数值返回。