首页 > 全部 > 二级C++ > 国家二级C++机试(操作题)模拟试卷668

国家二级C++机试(操作题)模拟试卷668

本单篇文档共4944字,内容预览3600字,预览为有答案版,源文件无水印,下载后包含无答案空白卷版和有答案版,同时也有计算机类NCRE全国计算机二级整科真题模拟题,讲义课件,思维导图,易错高频题等下载。
二级C++ 模拟试卷 7747人下载
价格: 0.60 原价:¥8.00
收藏

国家二级C++机试(操作题)模拟试卷668

基本操作题

1.请打开考生文件夹下的解决方案文件proj1,此工程中含有一个源程序文件proj1.cpp。其中位于每个注释“//ERROR****found*****之后的一行语句存在错误。请改正这些错误,使程序的输出结果为:

There are 2 object(s).

注意:只修改注释“// ERROR****found*****的下一行语句,不要改动程序中的其他内容。

// proj1.cpp

#include <iostream>

using namespace std;

class MyClass {

public:

// ERROR **********found**********

\\tMyClass(int i = 0) value = i

{count++; }

\\tvoid Print()

\\t{cout << \\

(1)MyClass(inti=0):value(i)

(2)int MyClass::count =0;

(3)obj2.Print();

解析:(1)主要考查考生对构造函数的掌握,使用成员列表初始化给常变量赋初始值。

(2)主要考查考生对静态数据成员的掌握,静态数据成员的赋值不需要使用static关键字。

(3)主要考查考生对成员函数调用的掌握,MyClass是类名,不能调用函数,应使用对象obj2调用函数

简单应用题

2.凡是使用过C语言标准库函数strcpy(char*s1,char*s2)的程序员都知道使用该函数时有一个安全隐患,即当指针s1所指向的空间不能容纳字符串s2的内容时,将发生内存错误。类String的Strcpy成员函数能进行简单的动态内存管理,其内存管理策略为:①若已有空间能容纳新字符串,则直接进行字符串拷贝;②若已有空间不够时,将重新申请一块内存空间(能容纳下新字符串),并将新字符串内容拷贝到新申请的空间中,释放原字符串空间。

请打开考生文件夹下的解决方案文件proj2,此工程中含有一个源程序文件proj2.cpp。其中定义了类String和用于测试该类的主函数main,且成员函数Strcpy的部分实现代码也已在该文件中给出,请在标有注释“// TODO:“的行中添加适当的代码,将这个函数补充完整,以实现其功能。

注意:只在指定位置编写适当代码,不要改动程序中的其他内容,也不要删除或移动“//****found*****。

// proj2.cpp

#include <iostream>

using namespace std;

class String {

private:

\\tint size;\\t\\t\\t\\t// 缓冲区大小

\\tchar *buf;\\t\\t\\t\\t// 缓冲区

public:

\\tString(int bufsize);

\\tvoid Strcpy(char *s); \\t// 将字符串s复制到buf中

\\tvoid Print() const;

\\t~String() {if (buf != NULL) delete [ ] buf; }

};

String::String(int bufsize)

{

\\tsize = bufsize;

\\tbuf = new char[size];

\\t*buf = ’\0’;

}

void String::Strcpy(char *s)

{

\\tchar *p,*q;

\\tint len = strlen(s);

\\tif (len+1 > size) {// 缓冲区空间不够,须安排更大空间

\\t\\tsize = len+1;

\\t\\tp = q = new char[size];

//**********found**********

\\twhile((*q=*s)!=0){__________} // TODO: 添加代码将字符串s拷贝到字符指针q中

\\t\\tdelete [ ] buf;

\\t\\tbuf = p;

\\t}

\\telse {

//**********found**********

\\tfor(p=buf;_________________;p++,s++); // TODO: 添加代码将字符串s拷贝到buf中

\\t\\t

\\t}

}

void String::Print() const

{

\\tcout << size << ’\t’ << buf << endl;

}

int main()

{

\\tchar s[100];

\\tString str(32);

\\tcin.getline(s, 99);

\\tstr.Strcpy(s);

\\tstr.Print();

\\treturn 0;

}

(1)++q;++s;

(2)(*p=*s) !=0

解析:(1)主要考查考生对while循环的掌握,先看语句注释:添加代码将字符串s拷贝到字符指针q中。程序已经给出了赋值语句,这里只要使q和s递增即可。

(2)主要考查考生对for循环的掌握,先看语句注释:添加代码将字符串s拷贝到buf中。因为循环体中没有语句,直接用分号结束,因此需要在循环条件中完成赋值,同时进行条件判断,赋值语句为*p=*s,判断条件为当前字符不是字符串结束。

综合应用题

3.请打开考生文件夹下的解决方案文件proj3。该工程中包含一个源程序文件proj3.cpp,其中定义了用于表示平面坐标系中的点的类MyPoint和表示圆形的类MyCircle;程序应当显示:

(1.2).5.31.4159.78.5398

但程序中有缺失部分,请按照以下提示,把缺失部分补充完整:

(1)在//**1** ****found****的下方是构造函数的定义,它用参数提供的圆心和半径分别对cen和rad进行初始化。

(2)在//**2** ****found****的下方是非成员函数perimeter的定义,它返回圆的周长。

(3)在//**3** ****found****的下方是友元函数area的定义,它返回圆的面积。

注意:只在指定位置编写适当代码,不要改动程序中的其他内容,也不要删除或移动“****found*****。

// proj3.cpp

#include<iostream>

#include<cmath>

using namespace std;

class MyPoint{//表示平面坐标系中的点的类

double x;

double y;

public:

MyPoint (double x,double y){this->x=x;this->y=y;}

double getX()co

本文档预览:3600字符,共4944字符,源文件无水印,下载后包含无答案版和有答案版,查看完整word版点下载

剩余未完,查看全文
收藏
国家二级C++机试(操作题)模拟试卷668

推荐资源

客服

扫码添加客服微信

热线

官方客服

如遇问题,请联系客服为您解决

电话客服:

客服微信:pujinet

工作时间:9:00-18:00,节假日休息

公众号

扫码关注微信公众号