1、国家二级 C+机试(操作题)模拟试卷 389及答案与解析 一、基本操作题 1 使用 VC6打开考生文件夹下的源程序文件 modil cpp,该程序运行时有错,请改正其中的错误,使程序正常运行,即使程序在界面输出以下类似内容: 0012FF68 1 0012FF3C 5 0012FF6C 2 0012FF44 4 0012FF70 3 0012FF4C 3 0023FF74 4 0012FF54 2 0012FF78 5 0012FF5C 1 006AFDCC 006AFDEF数据可能因为机器的不同,程序的输出的内容会有差异。只要相差为 4的连续地址即可。 注意:不要改动 main函数,不能增行
2、或删行,也不能更改程序的结构, 错误的语句在 *error*的下面。 #include using namespace std; int main() int*p, a5=1, 2, 3, 4, 5; double*q, b5=5 0, 4 0, 3 0, 2 0, 1 0); int x; p=a; q=b; *error* for(x=0; xch,则新的查找区间的下界不变,上界改为 k-1;否则新的查找区间的下界改为 k+1,上界不变。在新区间内继续用二分法查找。 注意:请勿改动主函数 main与其他函数中的任何内容,仅在函数 fun的花括号中填入所编写的若干语句。 #include i
3、nt fun(char*Str, char ch) Void msin() char Str=(a, b, c, d, e, f, g, h, i, j, k, 0); char ch; coutch; cout using namespace std; Class CBase public: CBase(int i)b=i; ) *1* protected: int b; ; class CDerive: public CBase public: *2* void di splay() coutdi splay(); void main() *4* func(d1); func(d2); 国
4、家二级 C+机试(操作题)模拟试卷 389答案与解析 一、基本操作题 1 【正确答案】 (1)for(x=0 ; xch) high=k-1; else low=k+1; if(Strlow=ch) return loW; return一 1; 【试题解析】 根据题干中给出的二分法查找思想,从己给部分源程序的 main主函数开始入手,核心函数 int fun(char*str,char ch)中的 ch参数为输入的字符,其中返回值为 ch所在的位置。 三、综合应用题 3 【正确答案】 (1)添加语句: vi rtual Void di splay()=0 ; (2)添加语句: CDerive(
5、i nt i): CBa se(i) (3)添加语句: void display()coutIn CDerive2S di spl ay() “” b= ”bendl; ) (4)添加语句: CDe rire *d1=new CDerive(1); CDerive2 *d2= newCDerive2(2); 【试题解析】 程序中定义了类 CBase、 CDerive和 CDerive2, CDerive和CDerive2公有派生于类 CBase, CDerive和 CDerive2均有成员函数 display(),用于输出。函数 func(CBase*obj)的参数为 CBase对象指针,在函数体内通过该指针调用其 display()函数。