1、国家二级 C+机试(操作题)模拟试卷 371及答案解析(总分:6.00,做题时间:90 分钟)一、基本操作题(总题数:1,分数:2.00)1.使用 VC6打开考生文件夹下的源程序文件 modicpp,该程序运行时有错误,请改正其中的错误,使得程序正确运行。 程序输出: s1:n=20 s2:n=10 执行 s3add(s1,s2) s3:n=30 s4:n=30 注意:不要改动 main函数,不能增行或删行,也不能更改程序的结构,错误的语句在 *error*的下面。 #include Class TestClass int n; public: TestClass() TestClass(in
2、t m) n=m; *error* TestClass add(TestClass s1,s2) this 一n=s1n+S2n; *error* return(this); void di sp() coutID=ID Number; *1* ; C1ass CBooks private: Class NOde public: Node*next; CBook*book; *m pBook; public: CBooks() m pBook=NULL: CBooks() *2* while() Node*P =m pBook 一next; delete m pBook 一book; dele
3、te m pBook; mpBook=P; int AddBoo kMenber(int nID,char*Author) Node*p=mpBook; Node*q=NULL; *3* while() if f nID=P 一 book 一ID) return 0; q=p; P=p 一next; if(P=NULL) P=new Node; P 一next=NULL; Pbook= new CBook(nID,Author); if(q=NULL) m pBook=P; else q 一next=p; return 1; char*GetBookAuthor(int nID) Node*p
4、=m pBook; *4* while() if(P 一book 一ID=nID) return P一 book 一AUthor; P=P 一next; return 0; ; int main() CBooks booksl; bookslAddBookMenber (1,“Tom”); books 1AddBookMenber (3,“Lee”); books 1AddBookMenber (4,“Lily”); bookS 1AddBookMenber(5,“Harry”); coutn=s1n+S2n; *error* return(this); void di sp() coutID
5、=ID Number; *1* ; C1ass CBooks private: Class NOde public: Node*next; CBook*book; *m pBook; public: CBooks() m pBook=NULL: CBooks() *2* while() Node*P =m pBook 一next; delete m pBook 一book; delete m pBook; mpBook=P; int AddBoo kMenber(int nID,char*Author) Node*p=mpBook; Node*q=NULL; *3* while() if f
6、nID=P 一 book 一ID) return 0; q=p; P=p 一next; if(P=NULL) P=new Node; P 一next=NULL; Pbook= new CBook(nID,Author); if(q=NULL) m pBook=P; else q 一next=p; return 1; char*GetBookAuthor(int nID) Node*p=m pBook; *4* while() if(P 一book 一ID=nID) return P一 book 一AUthor; P=P 一next; return 0; ; int main() CBooks
7、booksl; bookslAddBookMenber (1,“Tom”); books 1AddBookMenber (3,“Lee”); books 1AddBookMenber (4,“Lily”); bookS 1AddBookMenber(5,“Harry”); coutbooks1GetBookAuthor(1)books1GetBookAuthor(5)_正确答案:(正确答案:(1) 添加语句: strcpy(Author,AuthorName); (2)将“while()”补充完整为:while(mpBook!=NULL) (3)将“while()”补充完整为:while(P!
8、:NULL) (4)将“while()”补充完整为:while(p!=NULL)解析:解析:程序当中定义了 CBook类和 CBooks类,CBook 类描述书的基本信息,包含 ID和 Author数组两个成员变量,CBooks 类描述由 Node对象组成的链表,每个 Node对象包含指向 CBook对象的指针和下一个 Node对象的指针。第一个 Node对象的 next指针指向第二个 Node对象,同样第二个 Node对象的next指针指向第三个 Node对象,如此形成一个链表结构。成员函数 AddBookMenber(int nlD,char*Author)实现向链表中添加一个 Node节点,成员函数 GetBookAuthor(int nID)返回某个 Node节点的 CBook对象的 ID为 nlD的 CBook对象的 Author数组名。