[计算机类试卷]国家二级C++机试(操作题)模拟试卷306及答案与解析.doc

上传人:livefirmly316 文档编号:497384 上传时间:2018-11-28 格式:DOC 页数:10 大小:39.50KB
下载 相关 举报
[计算机类试卷]国家二级C++机试(操作题)模拟试卷306及答案与解析.doc_第1页
第1页 / 共10页
[计算机类试卷]国家二级C++机试(操作题)模拟试卷306及答案与解析.doc_第2页
第2页 / 共10页
[计算机类试卷]国家二级C++机试(操作题)模拟试卷306及答案与解析.doc_第3页
第3页 / 共10页
[计算机类试卷]国家二级C++机试(操作题)模拟试卷306及答案与解析.doc_第4页
第4页 / 共10页
[计算机类试卷]国家二级C++机试(操作题)模拟试卷306及答案与解析.doc_第5页
第5页 / 共10页
点击查看更多>>
资源描述

1、国家二级 C+机试(操作题)模拟试卷 306及答案与解析 一、基本操作题 1 使用 VC6打开考生文件夹下的源程序文件 modi1 cpp,该程序运行时有错,请改正错误,使得程序正确执行,并且输出以下语句: TestClass1: 0 TestClass2 注意:不要改动 main函数,不能增行或删行,也不能更改程序的结构,错误的语句在 *error*的下面。 #inClude struct TestClass1 TestClass1(int i=0) m i=i; Void print() cout int fun(char*data) void main() char str1024; c

2、out #include #include #define NMAX 50 class Teacher; class Student public: Student(char *name=“未知 ”, char *number=“00000”, double mark=0 01 int len=strien(name); m name: new charlen+1; strcpy(m name, name); strcpy(m number, number); m mark=mark; Student() deletem name; ) void DisplayMsg() coutname;

3、innumber; inmark; m_count+; m_pStui=new Student (name, number, mark); coutm_mark m pStuindex-m_mark) index=j; *2* if() Student*ps=m pStui; m pStui=m pStu index; m_pStuindex=ps; void Teacher: Display() coutDisplayMsg(); int Teacher: BestScore(Student *pS) int index=0; int count=1; *3* for(int j=1; jm

4、 mark m pStuindex_m mark) count=1; index=j; pSpcount+=m pStu index; else if(m pStuj-m mark =m_pStuindex-m_mark) index=j; pScount+=m_pStu index; return count; Void main() Teacher Teacher; Student *pStudentNMAX; cout DisplayMsg(); 国家二级 C+机试(操作题)模拟试卷 306答案与解析 一、基本操作题 1 【正确答案】 (1)public: (2)TestClass1 o

5、bj1(0);或 TestClass1 obj1; (3)TestClass2 obj2; 【试题解析】 (1)第 1个标识下的 “private: TestClass20”是析构函数,它不是私有的,所以这里应该为 “删除 private:或修改为 public: ”。 (2)第 2个标识下的 “TestClass1 obj1(); ”语句是定义一个 TestClass1类型的对象obj1(),根据类 TestClass1构造函数的定义 “TestClass1(int i=0)”,知道存在整型参数,应该补充参数,或者只是先定义一个对象名,然后在使用时补充参数,即修改为 “TestClass1

6、obj1(0);或 TestClass1 obj1; ”。 (3)同理第 3个标识下的 “TestClass2 obj2)_; ”语句修改为 “TestClass2 obj2; ”。 二、简单应用题 2 【正确答案】 int MinPos=0; 初始化最小值位置 if(data=NULL) 判断输入字符串是否为空 return -1; char MinData=data0;设置字符串第一个字符为最小值 if(MinData=0) 判断第一个字符是否存在 return -1; for(int i=1; datai!=0; i+) if(datai=MinData) MinData=datai;

7、逐个判断每个字母是否小于标记字符 MinPos=i; 最小值位置 return MinPos; 【试题解析】 (1)MinPos变量首先指向字符串 data的第一个字符,同时将标志位MinPos初始值赋为 0。 (2)然后利用 for循环对每一个当前字符与 MinPos标记的字符进行比较。 (3)循环中将求得的最小数据 datai赋 值给 MinData,并将该数据项数组标志位赋给标志位 MinPos。 三、综合应用题 3 【正确答案】 (1)添加语句: friend class Teacher; (2)将 “if()”补充完整为: if(index!=j) (3)添加语句: ps0=m pS

8、tu0; 【试题解析】 (1)学生的信息受到严密保护和限制,任课老师可以修改学生数据,比如本科升到研究需要修改学号等信息,因此老师类 (Teacher)可以访问学生类 (Student),故老师类是学生类友元类,故第 1个标识下应添加 “friend class Teacher; ”。 (2)SortScore()成员函数是实现按成绩高低的排序,函数结构是二重循环,采用的是选择法排序,每次在内层循环中寻找成绩最高的元素的下标,如果找到的最高成绩的元素的下标和现在的位置 (外层循环变量 i+1的值 )不同则两者交换,故第2个标识下的判断条件为 “if(index!=j)”。 (3)BestScore(Student*pS)实现查找成绩最高学生名单,即利用循环查找数组中的每个元素的成绩值,先假设第一个元素的成绩最高,然后再循环中逐个 比较,如果有成绩更高的,那么将更高的成绩保存下来,搜索整个数组就能找到成绩最高的学生,即第 3标识下应添加 “ps0=m pStu0; ”。

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 考试资料 > 职业资格

copyright@ 2008-2019 麦多课文库(www.mydoc123.com)网站版权所有
备案/许可证编号:苏ICP备17064731号-1