1、国家二级 C+机试(操作题)模拟试卷 8及答案与解析 一、基本操作题 1 使用 VC+6 0打开考生文件夹下的源程序文件 1 cpp,但该程序运行有问题,请改正 main()函数中的错误,使该程序的输出结果正确。 程序输出: 8 8 注意:错误的语句在 *found*的下面。修改该语句即可,其他的语句不能修改。 试题程序: #include class C0 public: * * * * * * * * error* * * * * * * * static int n=0: C0() n+: C0() n-; ; * * * * * * * * error* * * * * * * * i
2、nt C0: n; void main() C0 obj; C0 obj27; C0*c=NULL; c=&obj: * * * * * * * * error* * * * * * * * cout #define N 100 int aNN; int fun(int n) void main() int n: coutn; for(int i=0; i(n; i+) for(int j=0; jaij; cout class People public: *1* void print() int sex; ; class Boy: public People publict Boy() *
3、2* void print() coutnnend1; ”。 二、简单应用题 2 【正确答案】 int row; int max; int min; int col; for(row=0; row(n; row+) 外循环求行最大值中的最小值 for(max=arow0, col=l; coln; col+) 求每一行中的最大值 if(maxarowcol) max=arowcol; if(row=0) 求最小值 min=max; else if(maxmin) min=max; return rain; 【试题解析】 本题有两层循环,内层 循环求每一行的最大值,外层循环求最小值。求最大值,首
4、先将最大值赋值为每行第一列的元素,然后依次循环比较。将求出的第一个最大值赋值为第一个最小值,然后将以后求得的最大值依次与之比较,求出所有值的最小值。 三、综合应用题 3 【正确答案】 (1)将 “void print(); ”补充完整为 “virtual void print(); ”。 (2)应添加 “sex=1; ”。 (3)应添加 “sex=0; ”。 (4)应添加 “void fun(People&p)”。 【试题解析】 第 1处要求 “基类 People完成打印功能,定义其中的打印函数为虚函数 ”。虚函数是函数的一种,定义虚函数,在函数名前声明 virtual就可以了,所以将第 1处
5、的 “void print()”语句修改为 “virtual void print()”。 第 2处要求 “类 Boy继承于 People,在构造函数中设置性别为 1”。基类 People中变量 sex用来存放性别, Boy继承 People,所以 Boy中性别的变量可以使用基类中的 sex变量,设置性别为 1,即 “sex=1; ”。 第 3处要求 “类 Girl继承于 People,在构造函数中设置性别为 0”。在第 3处添加语句 “sex=0; ”。 第 4处要求 “实现函数 fun,用于传递不同的类型,打印出性别 ”。根据“p print(); ”语句知道, fun函数的形参为指针 p,由于它调用了基类 People中的成员函数 print,所以 p的基类为 People,即添加函数 fun的定义为 “void fun(People&p)”。