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

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

举报
开通vip

巨人网络游戏程序员面试题软件工程师笔试试题 软件工程师笔试试题 笔试时间:三小时内 姓名: 余文瑛 开始时间: 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; } 第二题...

巨人网络游戏程序员面试题
软件 工程 路基工程安全技术交底工程项目施工成本控制工程量增项单年度零星工程技术标正投影法基本原理 师笔试试题 软件工程师笔试试题 笔试时间:三小时内 姓名: 余文瑛 开始时间: 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种情况: (1)​ R1右部上下两个顶点均//被包含在R2中 (2)​ R2左部上下两个定点均被包含在R1中 (3)​ R1右上方顶点被包含在右部矩形中,而右下角不在 (4)​ R1的右下角顶点被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(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))) {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(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<<"情况1"<=(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<<"情况2"<=R2.p1.y)&&((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.1"<=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; cout<<"情况4.1"< #include using namespace std; class Help { public: int a[4],b[4]; //两个数组,分别存储两个乘数 int product[8]; //存储成绩 int temp[4][8]; //存储中间乘法过程 public: void cout_1array(int A[]) //输出一维数组 { int i; for(i=0;i<4;i++) cout<>a[i]; } void cin_Barray() //接受键盘输入,初始化一维数组 { for( int i=0;i<4;i++) cin>>b[i]; } void show_Multiplication() //模拟显示计算过程 { int i,j,k=7,g,jinwei=0,l=0; for(i=3;i>=0;i--,k--,l++) { g=k; for(j=3;j>=0;j--,g--) { temp[l][g]=(jinwei+a[j]*b[i])%10 ;// jinwei=(jinwei+a[j]*b[i])/10; } jinwei=0; } cout<=0;j--,k--) { sum=0; for(i=0;i<=3;i++) { sum=sum+temp[i][j]; } sum=sum+jinwei; product[k]=sum%10; jinwei=(jinwei+sum)/10; } } private: void init_2array() //将二维数组中的初始化为0 { for(int i=0;i<4;i++) for(int j=0;j<8;j++) temp[i][j]=0; } public: Help() { init_2array() ;//将二维数组中的初始化 } }; int main() { Help help; help.cin_Aarray (); help.cin_Barray (); help.cout_1array (help.a ); cout<<"*"; help.cout_1array (help.b ); cout<<"="<
本文档为【巨人网络游戏程序员面试题】,请使用软件OFFICE或WPS软件打开。作品中的文字与图均可以修改和编辑, 图片更改请在作品中右键图片并更换,文字修改请直接点击文字进行修改,也可以新增和删除文档中的内容。
该文档来自用户分享,如有侵权行为请发邮件ishare@vip.sina.com联系网站客服,我们会及时删除。
[版权声明] 本站所有资料为用户分享产生,若发现您的权利被侵害,请联系客服邮件isharekefu@iask.cn,我们尽快处理。
本作品所展示的图片、画像、字体、音乐的版权可能需版权方额外授权,请谨慎使用。
网站提供的党政主题相关内容(国旗、国徽、党徽..)目的在于配合国家政策宣传,仅限个人学习分享使用,禁止用于任何广告和商用目的。
下载需要: 免费 已有0 人下载
最新资料
资料动态
专题动态
is_273318
暂无简介~
格式:doc
大小:85KB
软件:Word
页数:11
分类:互联网
上传时间:2011-08-26
浏览量:41