二级C分类模拟129

上传人:沈*** 文档编号:144838350 上传时间:2022-08-28 格式:DOC 页数:6 大小:86.50KB
收藏 版权申诉 举报 下载
二级C分类模拟129_第1页
第1页 / 共6页
二级C分类模拟129_第2页
第2页 / 共6页
二级C分类模拟129_第3页
第3页 / 共6页
资源描述:

《二级C分类模拟129》由会员分享,可在线阅读,更多相关《二级C分类模拟129(6页珍藏版)》请在装配图网上搜索。

1、二级C+分类模拟129(总分:100.00,做题时间:90分钟)一、基本操作题(总题数:1,分数:30.00)1. 请使用VC6或使用【答题】菜单打开projl下的工程projl,该工程中包含程序文件main.cpp,其中有类Foo和主函数main的定义。程序中位于每个“ / ERROR*found* ”之后的一行语句有错误,请加 以改正。改正后程序的输岀结果应该是:X=aY=42注意:只修改每个“ / ERROR *found*”下的那一行,不要改动程序中的其他内容。#include using namespace std;class Foo public:Foo(char x) x_ =

2、x;char getX() const return x_;public:static int y_;private:charx_;/ error *fo un d*int Foo.y_ = 42;int main(int argc, char * argv)/ error *fo un d*Foo f;/ error *fo un d*cout X = f.x_ endl;cout Y = f.y_ endl;return 0;(分数:30.00 ) 正确答案:()解析:(1)int Foo:y_=42;(2) Foo f(a);(3) cout X = f.getX() endl ;答案考

3、生文件夹考点本题考查的是Foo类,其中涉及构造函数、const函数和静态成员。给类的静态成员赋值时要加上类名和作用域符号,与类的成员函数一样,类的私有成员不能被类外函数调用。解析(1)主要考查考生对静态成员的掌握,因为静态整型变量y_是Foo类的公有成员,所以给 y_赋值时要加上“ Foo: ”,即卩 int Foo:y_=42;。(2)主要考查考生对构造函数的掌握,题目要求程序输岀:X=aY=42可以知道,在给Foo类的f声明时要同时初始化为字符a,即语句Foo f(a);。 主要考查考生对成员函数的掌握,因为x是类Foo的私有成员,所以不能在main函数中直接调用,要 通过公有成员函数 g

4、etX() 调用。 类的静态成员和类的成员函数一样,赋值时要加上类名和作用域符号,要注意通过观察题目对程序输出结 果的要求,来给类赋初始值。二、简单应用题 ( 总题数: 1,分数: 30.00)2. 请使用VC6或使用【答题】菜单打开 proj2下的工程proj2。其中有类Point( “点”)、Rectangle(矩 形”)和Circle( “圆”)的定义。在程序所使用的平面坐标系统中,x轴的正方向是水平向右的,y轴的正方向是竖直向下的。请在横线处填写适当的代码并删除横线,以实现上述类定义。此程序的正确输出结果 应该是:- 圆形 圆心 =(3, 2) 半径 =1面积 =3.14159- 外切

5、矩形 左上角 =(2 , 1) 右下角 =(4 , 3) 面积 =4 注意:只能在横线处填写适当的代码,不要改动程序中的其他内容,也不要删除或移动“ / #include #include using namespace std;/ 平面坐标中的点/本题坐标系统中,x轴的正方向水平向右,y轴的正方向竖直向下。 class Point public:Point(double x=0.0, double y=0.0): x_(x), y_(y) double getX() const return x_; double getY() const return y_; void setX(doubl

6、e x) x_=x; void setY(double y) y_=y; private:double x_; /x坐标double y_; /y坐标;/ 矩形class Rectangle public:Rectangle (Point p, int w, int h): point (p), width (w), height (h) double area() const / 矩形面积return width * height;Point topLeft() const /左上角顶点return point;Point bottomRight() const/右下角顶点(注:y轴正方向竖

7、直向下)/*found*return Point();private:Point point; / 左上角顶点 double width; / 水平边长度 double height; / 垂直边长度;/ 圆形class Circle public:Circle (Point p, double r):center(p), radius(r) Rectangle boundingBox() const; /外切矩形double area() const / 圆形面积/*found*return PI *;public:static const double PI; /圆周率private:Po

8、int center; / 圆心double radius; /半径;const double Circle:PI = 3.14159;Rectangle Circle:boundingBox() const /*found*Point pt();int w, h;/*found*w = h =;return Rectangle(pt, w, h);int main ()Point p(3, 2);Circle c(p, 1);cout - 圆形/n;cout 圆心=( p.getxo , p.getY() )/n;cout 半径 = 1 endl;cout 面积 = c.area() end

9、l endl;Rectangle bb = c.boundingBox();Point t1 = bb.topLeft();Point br = bb.bottomRight();cout-外切矩形 -/n;cout 左上角 = (t1.getx() , t1.getY() )/ncout 右下角 = (br.getx() , br.getY() )/ncout 面积 = bb.area() endl;return 0;(分数:30.00 ) 正确答案:()解析:(1)point.getX()+width , point.getY()+height(2) radius*radius(3) ce

10、nter.getX()-radius, center.getY()-radius(4) 2*radius答案考生文件夹考点本题考查Point类、Rectangle类和Circle类,其中涉及构造函数、const函数和静态成员。解析(1)主要考查考生对成员函数的掌握,程序要求返回右下角顶点,该点的x坐标为左上角顶点的x坐标加上 width,该点的y坐标为左上角顶点 y坐标加上height ,即return Point(point.getX()+width , point.getY()+height) ;。(2) 主要考查考生对成员函数的掌握,程序要求计算圆形面积,也就是返回圆面积,即return

11、PI*radius*radius ;。(3) 主要考查考生对成员函数的掌握,首先看函数声明:Rectangle Circle:boundingBox() const,可知该函数要返回的是一个Rectangle类型,即要返回的是圆的外切矩形。再看Rectangle类的构造函数Rectangle(Point p ,int w ,int h),由此可知,空格处要定义的点pt为左上角点,即 Pointpt(center.getX()-radius ,center.getY()-radius) ;。由函数声明和 Rectangle类的构造函数可知,w和h应该为直径,即 w=h=2*radius ;。三、

12、综合应用题(总题数:1,分数:40.00)3. 请使用VC6或使用【答题】菜单打开proj3下的工程proj3,其中定义了 MyString类,一个用于表示字符串的类。成员函数reverse的功能是将字符串进行“反转”。例如,将字符串ABCDEF反转”后,得到字符串FEDCBA将字符串 ABCDEFG反转”后,得到字符串GFEDCBA请编写成员函数 reverse。在main函数中给岀了一组测试数据,此时程序运行中应显示:读取输入文件-反转前-STR仁ABCDEFSTR2=ABCDEFG- 反转后-STR1=FEDCBASTR2=GFEDCBA要求:补充编制的内容写在/ *333*”与/ *6

13、66*”之间,不得修改程序的其他部分。注意:程序最后将结果输岀到文件out.dat中,输岀函数 WriteToFile已经编译为obj文件,并且在本程序中调用。/mgsering.h#include #include using namespace std;class MyString public:MyString(const char * s)str = new charstrlen (s) + 1;strcpy(str, s);MyString() delete str;void reverse();friend ostrea m& operator (ostream & os, con

14、st MyString &m ystr)os mystr.str;return os;private:char * str;void writeToFile(char *, const MyString&);/main.cpp#include mystring.h#include void MyString:reverse()/ *333* *666 *int main ()char inname128, pathname80; strcpy(pathname, );sprintf(inname, in.dat, pathname);cout 读取输入文件 . /n/n;ifstream in

15、file(inname);if(infile.fail() cerr 打开输入文件失败 !;exit(1);char buf4096;infile.getline(buf, 4096) ;MyString str1(ABCDEF), str2(ABCDEFG), str3(buf);cout -反转前 -/n;cout STR1 = str1endl;cout STR2 = str2endl endl;str1.reverse();str2.reverse();str3.reverse();cout -反转后 -/n;cout STR1 = str1endl;cout STR2 = str2e

16、ndl endl;writeToFile (pathname, str3);return 0;分数: 40.00 ) 正确答案:()解析:int length=strlen(str); /把字符串str的长度赋值给lenthfor(int i=0 , j=length-1 ; i j ; i+ , j-)/ 从 i=0 , j=length-1 , i j 为条件开始遍历,并把Stri和Strj 交换char temp = stri; /给定义的临时变量 temp赋值为stristri = strj; /给 Stri 赋值 Strjstrj = temp; / 给 Strj 赋值为 temp答案考生文件夹考点主要考查MyString类,其中涉及动态数组、构造函数、析构函数、成员函数和友 元函数。本题要把动态数组中的字符串反转过来,用两个变量i和j来代表要调换的元素的下标,再通过中间变量temp进行交换即可。解析主要考查考生对动态数组的掌握,先看题目要求:成员函数reverse的功能是将字符串进行“反转”。再由类的定义可知,字符串存放在动态数组str中,由strlen函数得出字符串的长度,最后一个字符的下标为length-1 ,第一个字符的下标为 0,将这两个字符交换,然后j依次减1同时i依次加1,继续交换, 直到i大于j时停止循环即可。

展开阅读全文
温馨提示:
1: 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
2: 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
3.本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
5. 装配图网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
关于我们 - 网站声明 - 网站地图 - 资源地图 - 友情链接 - 网站客服 - 联系我们

copyright@ 2023-2025  zhuangpeitu.com 装配图网版权所有   联系电话:18123376007

备案号:ICP2024067431-1 川公网安备51140202000466号


本站为文档C2C交易模式,即用户上传的文档直接被用户下载,本站只是中间服务平台,本站所有文档下载所得的收益归上传人(含作者)所有。装配图网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。若文档所含内容侵犯了您的版权或隐私,请立即通知装配图网,我们立即给予删除!