巨人网络游戏程序员面试题.docVIP

  • 14
  • 0
  • 约7.04千字
  • 约 11页
  • 2019-03-30 发布于湖北
  • 举报
软件工程师笔试试题 笔试时间:三小时内 姓名: 余文瑛 开始时间: 08:10 完成时间: 11:10 (解题前,请首先写设计思路。) (请自行解答,一旦发现抄袭,笔试成绩取消。) 第一题:写一个函数,交换两个变量的值,不使用第三个变量。 如a=3,b=5,交换之后a=5,b=3; 答: 描述:不使用新的空间,那么只能使用原来的变量‘记忆’旧的数据,由 void swap(int *a,int *b) //C++语言描述 { *a=*a+*b; *b=*a-*b; *a=*a-*b; } 第二题: 编程求两个矩形的相交矩形 分别输入两个空间中两个矩形的左上角坐标x,y,以及宽(width)高(height), 如果两个矩形有相交,输出相交的矩形左上角,右下角坐标,x1,y1,x2,y2 例如: 键盘输入: 0,0,100,100 20,20,100,40 输出: 20,20,100,60 算法描述: 我们将平面上的两个矩形分为左右两边,将左上角的横坐标较小的那个矩形看成’左边’矩形,较大的为右边矩形。对于输入的rect1和rect2,如果rect2.p1.x大于rect2.p1.x则交换他们的位置. 我们用R1表示左边巨型,R2表示右边矩形 那么他们的相对位置有4种情况: R1右部上下两个顶点均//被包含在R2中 R2左部上下两个定点均被包含在R1中 R1右上方顶点被包含在右部矩形中,而右下角不在 R1的右下角顶点被R2包含,而右上角不在 其中在(3)(4)种,还要分两种情况计算. #include iostream using namespace std; //为了保证安全性,一般将类的成员访问属性设置为private,通过相关的属性(函数进行访问),但本例中 //为了简便,将部分成员直接设置为public访问属性 class Point //定义点类 { public: int x,y; public: Point() { } Point(int a,int b) { x=a; y=b; } }; class Rect //矩形类 { public: Point p1; //左上角点坐标 int height; // 高 int width;//长 public: Rect(Point a,int w,int h) { p1=a; height=h; width=w; } Rect() {} }; class Intersect //处理相交情况类 { private: Rect R1,R2; //2个矩形 public: Point p1; bool b_inter;//指示是否相交 bool b_include;//指示是否包含(约定:包含必相交) public: Intersect(Rect rect1,Rect rect2 ) { R1=rect1; R2=rect2; b_inter=false;//指示两矩形是否相交,初始值为false,在构造函数中初始化 b_include=false; } void slove() //求相交 { if(R1.p1.x+R1.width=R2.p1.x) // { include(); if(!b_include) shuzhifangxiang(); } else { swap(R1,R2); //使得rect1是左边图形 include(); if(!b_include) shuzhifangxiang(); } } void swap(Rect *r1,Rect *r2) //矩形交换位置,目的是获得相对位置在左边的矩形为参照 {Rect temp; temp=*r1; *r1=*r2; *r2=temp;} void include() //判断并求包含的相交 { if((R2.p1.x=R1.p1.x)(R2.p1.y=R1.p1.y)((R2.p1.x+R2.width)=(R1.p1.x+R1.width))((R2.p1.y+R2.height)=(R1.p1.y+R1.height)))

文档评论(0)

1亿VIP精品文档

相关文档