1、国家二级 C+机试(操作题)模拟试卷 13及答案与解析 一、基本操作题 1 使用 VC+6 0打开考生文件夹下的源程序文件 1 cpp,使它能运行正确的结果。 注意:不要改动其他语句,不得增行或删行,也不得更改程序的结构 ! 本程序要求屏幕输出: i=12345 注意:语句在 *error*的下面。修改该语句即可,其他的语句不能修改。 试题程序: #include *error* class TC() public: *error* void TC() TC(int i) tout int num(char*str) int main() char str1024; cout class TC
2、 public: TC(int data=0) this- data=data; this- next=NULL; int data: TC*next: ; void Insert(TC*p, int data) TC*temp=new TC(data); TC*pParent=p; TC*pNext=p- next; while(pNext) if(data)pNext- data) * * * * * * * * 1 * * * * * * * * temp- next=pNext: return: else pParent=pNext: * * * * * * * * 2 * * * *
3、 * * * * if(pNext=NULL) pParent- next=temp; return: void printf(TC*p) * * * * * * * * 3 * * * * * * * * while() coutdata; if(data=0)break; Insert(&head, data); while(1); printf(&head); Delete(&head); return; 国家二级 C+机试(操作题)模拟试卷 13答案与解析 一、基本操作题 1 【正确答案】 (1)“class TC()”应改为 “class TC”。 (2)“void TC()”应改为
4、 “ TC()”。 (3)“”应改为 “; ”。 【试题解析】 本题考查了考生对类的定义了解的情况。类定义类名后不能有括号,所以第 1处应该是 “class TC”。类的析构函数不能有返 回类型,所以应改为“ TC()”。最容易忽略的地方,就是类定义之后必须跟一个分号。因为类的定义属于类型定义语句,就好像定义一个结构、用 typedef关键字定义一个类型的别名一样,其后都要跟语句结束标志 “; ”。 二、简单应用题 2 【正确答案】 int number=0: for(int i=0; stri!=0; i+) if(stri9 stri(0) 非数字字符 number+: return nu
5、mber: 【试题解析】 利 用循环搜索数组 str中的元素,循环变量从 0开始,直到stri=0(到了字符数组末端 ),不断从 str中读取元素。每读到一个元素就判断是否是非数字字符,即满足条件 “stri9 stri(0”的字符为非数字字符,非数字字符个数加 1,循环结束就得到了非数字字符的个数。 三、综合应用题 3 【正确答案】 (1)应添加 “pParent- next=temp; ”。 (2)应添加 “pNext=pNext- next; ”。 (3)将 “while()”补充完整为 “while(p- next!=NULL)”。 (4)将 “TC*t1=; ”补充完整为 “TC*t
6、1=p- next; ”。 【试题解析】 本题第 1处要求 “在父结点的 Next中保存新插入的结点的指针 ”。对于指针的操作, pParent- next为 pParent的子结点,在父结点的 Next中保存新插入的结点的指针,即 “pParent- next=temp; ”。 第 2处要求 “把 pNext的子结点赋给 pNext本身 ”。 pNext- next为 pNext的子结点,把 pNext的子结点赋给 pNext本身,即 “pNext=pNext- next; ”。注释 3下是判定 p的子结点不为空。 p的子结点是 p- next。程序中的 “while()”缺乏 p的子结点不为空的判断条件,所以修改为 “while(p- next!=NULL)”。 第 4处要求 “用 t1保存动态申请内存结点的链表头 ”。 p为链表, p- next为链表头。程序中的语句 “TC*t1=: ”中 t1沿有被赋值,所以修改为 “TC*t1=p-next; ”
copyright@ 2008-2019 麦多课文库(www.mydoc123.com)网站版权所有
备案/许可证编号:苏ICP备17064731号-1