1、国家二级 C+机试(操作题)模拟试卷 331及答案与解析 一、基本操作题 1 请使用 VC6或使用【答题】菜单打开考生文件夹 proj1下的工程 proj1。程序中位于每个 “ ERROR*found*”之后的一行语句有错误,请加以改正。改正后程序的输出结果应为: Name: Smith Age: 21 ID: 99999 CourseNum: 12 Record: 970 注意:只修改每个 “ ERROR *found*”下的那一行,不要改动程序中的其他内容。 #include USing namespace std; clasS StudentInfo protected: ERROR*f
2、ound* char Name; int Age; int ID; int CourseNum; float Record; public: StudentInfo(char*name, int Age, int ID, int courseNum, float record); ERROR*found* voidStudentInfo() float AVerageRecord() return Record CourseNum; void show()const coutID=ID; CourseNum=courSeNum; Record=record; int main() Studen
3、tInfo st(”Smith”, 21, 99999, 12, 97 0); st show(); return 0; 二、简单应用题 2 请使用 VC6或使用【答题】菜单打开考生文件夹 proj2下的工程 proj2。该工程中包含一个程序文件 main epp,其中有类 Quadritic、类 Root及主函数 main的定义。一个 Quadritic对象表示一个 ax2+bx+c的一元二次多项式。一个 Root对象用于表示方程 ax2+bx+C=0的一组根,它的数据成员 num_of_roots有 3种可能的值,即0、 1和 2,分别表示根的 3种情况:无实根、有两个相同的实根 和有两个
4、不同的实根。请在程序中的横线处填写适当的代码并删除横线,以实现上述类定义。此程序的正确输出结果应为 (注:输出中的 X2表示 x2): 3X2+4X+5=0 0 无实根 4 5X2+6X+2=0 0有两个相同的实根:一 0 666667和一 0 666667 1 5X2+2X一 3=0 0有两个不同的实根: 0 896805和一 2 23014 注意:只能在横线处填写适当的代码,不要改动程序中的其他内容,也不要删除或移动 “*found*”。 #include #include #include using namespace std; class Root 一元二次方程的根 public:
5、const double x1; 第一个根 const double x2; 第二个根 const int num of roots;不同根的 数量: 0、 1或 2 创建一个 “无实根 ”的 Root对象 Root(): x1(0 0), x2(0 0), num of roots(0) 创建一个 “有两个相同的实根 ”的 Root 对象 Root(double root) *found* :_ 创建一个 “有两个不同的实根 ”的 Root对象 Root(double rootl,double root2): xl (rootl), x2(root2), num of roots(2) vo
6、id show()const 显示根的信息 cout 三、综合应用题 3 请使用 VC6或使用【答题】菜单打开考生文件夹 proj3下的工程 proj3,其中定义的 Matrix是一个用于表示矩阵的类。成员函数 max_value的功能是求出所有矩阵元素中的最大值。例如,若有 33矩阵 则调用 max_value函数,返回值为 3。请编写成员函数 max_value. 要求: 补充编制的内容写在 “*333*”与 “ *666*”之间,不得修改程序的其他部分。 注意:程序最后将结果输出到文件 out dat中。输出函数writeToFile已经编译为 oN文件,并且在本程序中调用。Matrix
7、 h#include#includeusing namespace std; const int M=18; const int N=18;class Matrix int arrayMN; public: Matrix() int getElement(int i, int j)constreturn arrayij; ) void setElement(int i, int j, int value),arrayijj=value; ) int max value()const; void show(const char*s)const cout void readFromFile(const char* f, Matrixi+) 遍历矩阵的行 for(int j=0; jN; j+) 遍历短阵的列 if(temparrayij) 如果 temp小于 arrayij temp=arrayij; 把 arrayij赋值给 temp return temp; 返回 temp 【试题解析】 主要考查考生对二维数组的掌握,题目要求成员函数 max_value的功能是求出所有矩阵元素中的最大值。因此只要逐个元素比较即可,下标 i和 j作为矩阵行和列的标记,使用双层 for循环来遍历数组中的所有元素。