国家二级C++机试(操作题)模拟试卷669
基本操作题
1.请打开考生文件夹下的解决方案文件proj1,其中有枚举PetType、宠物类Pet和主函数main的定义。程序中位于每个// ERROR****found****之后的一行语句有错误,请加以更正。更正后程序的输出应为:
There is a dog named Doggie
There is a cat named Mimi
There is an unknown animal named Puppy
注意:只修改每个// ERROR****f0und****下的那一行,不要改动程序中的其他内容。函数strcpy(char*p,const char*q)的之后用是将q指向的字符串拷贝到p指向的字符数组中。
#include <iostream>
using namespace std;
//宠物类别:狗、猫、鸟、鱼、爬行动物、昆虫、其他
enum PetType{DOG, CAT, BIRD, FISH, REPTILE, INSECT, OTHER};
class Pet{//宠物类
PetType type; //类别
char name[20]; //名字
public:
Pet(PetType type, char name[ ]){
this->type=type;
// 将参数name中的字符串复制到作为数据成员的name数组中。
// ERROR **********found**********
this->name=name;
}
// ERROR **********found**********
PetType getType()const{return PetType; }
const char* getName()const{return name; }
const char* getTypeString()const{
switch(type){
case DOG: return \\
(1)strcpy(this->name.name);
(2)PetType getType() const {return type; }
(3)return \\
解析:(1)主要考查字符串复制函数strcpy(,其格式为:strcpy(字符串1,字符串2)或strcpy(指向字符串1的指针,指向字符串2的指针),功能是将字符串2拷贝到字符串1中,本题使用第二种格式。
(2)主要考查考生对成员函数的掌握,根据私有成员的定义类型PetType type,可知要返回的是type。
(3)主要考查考生对switch语句的掌握,当在switch语句体中找不到相应的字段时,跳出switch语句,程序返回\\
简单应用题
2.请打开考生文件夹下的解决方案文件proj2,该工程中包含一个源程序文件proj2.cpp。其中定义了模板函数insert(T dataset[ ], int & size, Titem)和主函数main。模板函数insert用来将一个数据inem插入到一个已排好序(升序)的数据集dataset中,其中类型T可以为int、double、char等数据类型,size为当前数据集中元素的个数,当插入操作完成后,size值将更新。模板函数insert的部分实现代码已在文件proj2.cpp中给出,请在标有注释\\
(1)item < setdatai]
(2)setdata[size +i-j]= setdata[size+i-j-1]
(3)setdata[size]=item
解析:(1)主要考查考生对if语句的掌握,题目要求,判断查找元素的插入位置。因为要插入的序列是升序排列的,当item <setdata[i]时,即为要插入位置。
(2)主要考查考生对for循环的掌握,因为要在第i个位置外插入元素,所以将插入位置后的所有元素往后移动一个位置移动时应从最后一个位置开始,因此使用语句setdata[size +i-j]=setdata[size +i-j-1]。
(3)主要考查考生对成员函数的掌握,题目要求将元素加到最后一个位置上。size表示数组的长度,因为数组下标是从0开始的,所以最后一个位置为size,即:setdata[size]= item。
综合应用题
3.请打开考生文件夹下的解决方案文件proj3。此工程中包含一个源程序文件proj3.cpp,其中定义了用于表示平面坐标系中的点的类MyPoint和表示线段的类MyLine;程序应当显示:
(0,0)(1,1)
1.41421.1
但程序中有缺失部分,请按照以下提示,把缺失部分补充完整:
(1)在//**1** ****found****的下方是构造函数的定义,它用参数提供的两个端点对point1和point2进行初始化。
(2)在//**2** ****found****的下方是成员函数length的定义,返回线段的长度。
(3)在//**3** ****found****的下方是成员函数slope的定义中的一条语句。
函数slope返回线段的斜率,方法是:若线段的两个端点分别是(x1,y1)和(x2,y2),则斜率k为:k=
(1)point1(p1), point2(p2)
(2)length()const
(3)point2.getY()- point1.getY()
解析:(1)主要考查考生对构造函数的掌握,这里使用成员列表初始化给point1和point2赋初始值。
(2)主要考查考生对成员函数的掌握,由类的定义中函数的声明:double length()const; //返回线段的长度,可知这里要输入length()const。
(3)主要考查考生对成员函数的掌握,由函数声明:double slope()const; //返回直线的斜率,可知返回语句要返回直线的斜率,因此要输入:point2.getY()- point1.getY)。
本文档预览:3600字符,共3097字符,源文件无水印,下载后包含无答案版和有答案版,查看完整word版点下载