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

上传人:博****1 文档编号:471028141 上传时间:2023-11-24 格式:DOC 页数:11 大小:46KB
返回 下载 相关 举报
巨人网络游戏程序员面试题_第1页
第1页 / 共11页
巨人网络游戏程序员面试题_第2页
第2页 / 共11页
巨人网络游戏程序员面试题_第3页
第3页 / 共11页
巨人网络游戏程序员面试题_第4页
第4页 / 共11页
巨人网络游戏程序员面试题_第5页
第5页 / 共11页
点击查看更多>>
资源描述

《巨人网络游戏程序员面试题》由会员分享,可在线阅读,更多相关《巨人网络游戏程序员面试题(11页珍藏版)》请在金锄头文库上搜索。

1、软件工程师笔试试题笔试时间:三小时内 姓名: 余文瑛 开始时间: 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), 如果两个矩形有相

2、交,输出相交的矩形左上角,右下角坐标,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种情况:(1) R1右部上下两个顶点均/被包含在R2中(2) R2左部上下两个定点均被包含在R1中(3) R1右上方顶点被包含在右部矩形中,而右下角不在(4) R1的右

3、下角顶点被R2包含,而右上角不在其中在(3)(4)种,还要分两种情况计算.#include 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(Poi

4、nt 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()

5、/求相交 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.

6、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) Point p11(R2.p1.x,R2.p1.y); Point p22(R2.p1.x+R2.width,R2.p1.y+R2.height); b_inter=true; b_include=true; p1=p11; p2=p22;cout包含=R2.p1.y&(R1.p1.y+R1.height)=R2.p1.y+R2.height) /(1)R1右部上下两个顶点均/被包含在R2中 Point p11(

7、R2.p1.x,R1.p1.y); Point p22(R1.p1.x+R1.width,R1.p1.y+R1.height); b_inter=true; p1=p11; p2=p22;cout情况1endl; /(2)R2左部上下两个定点均被包含在R1中if(R1.p1.y=(R2.p1.y+R2.height) Point p11(R2.p1.x,R2.p1.y); Point p22(R1.p1.x+R1.width,R2.p1.y+R2.height);b_inter=true; p1=p11; p2=p22;cout情况2endl;/(3)if(R1.p1.y=R2.p1.y)&(

8、R1.p1.y+R1.height)=(R2.p1.y+R2.height)/R1右上方顶点被包含在右部矩形中,而右下角不在 /依然有两种情况/1只包含右侧矩形的1个端点/2包含右侧图形的2个端点if(R2.p1.x+R2.width=R1.p1.x+R1.width) Point p11(R2.p1.x,R1.p1.y); Point p22(R1.p1.x+R1.height,R2.p1.y+R2.height); p1=p11; p2=p22; cout情况3.1endl;else Point p11(R2.p1.x,R1.p1.y); Point p22(R2.p1.x+R2.widt

9、h,R2.p1.y+R2.height); p1=p11; p2=p22; cout情况3.2=R2.p1.y)&(R1.p1.y+R1.height)=(R2.p1.y+R2.height)&(R1.p1.y=R2.p1.y)/R1的右下角顶点被R2包含,而右上角不在 /依然有两种情况/1包含右侧矩形的两个端点/2至包含右侧图形的1个端点if(R1.p1.x+R1.width=R2.p1.x+R2.width)Point p11(R2.p1.x,R2.p1.y); Point p22(R1.p1.x+R1.width,R1.p1.y+R1.height); p1=p11; p2=p22;co

10、ut情况4.1endl;elsePoint p11(R2.p1.x,R2.p1.y); Point p22(R2.p1.x+R2.width,R2.p1.y+R2.height); p1=p11; p2=p22;cout情况4.2endl;b_inter=true;int main()/测试情况二/Point p1(0,0);/Point p2(20,20);/Rect Rect1(p1,100,100);/Rect Rect2(p2,100,40);/测试情况一,三/.Intersect inter(Rect1,Rect2);inter.slove ();coutinter.p1 .x ,i

11、nter.p1 .y endl;coutinter.p2 .x ,inter.p2 .y endl;return 0;s第三题:模拟实现乘法运算A*B = C,A和B最大值为9999. 要求输出如下 1234 * 121 - 1234 2468 1234 = - 14 9 3 1 4算法描述;(1) 开辟两个数组,分别存储2个四位整数(注意在输入的时候123应当输入0123,即应该输入四位数)(2) 用第二个乘数的个位数分别乘以第一个乘数的个位,十位,百位和千位,并处理进位问题(3) 分别用第二个数的十位,百位,千位重复(2)的步骤(4) 将乘法中间数组temp48,竖直方向求和(并处理进位问题),然后该和的个位数即是最终答案的对应为数值(5) 输出最终答案数组product8;#include#includeusing namespace std;class Helppublic:int a4,b4; /两个数组,分别存储两个乘数int product8; /存储成绩int temp48; /存储中间

展开阅读全文
相关资源
相关搜索

当前位置:首页 > 高等教育 > 习题/试题

电脑版 |金锄头文库版权所有
经营许可证:蜀ICP备13022795号 | 川公网安备 51140202000112号