软件工程师笔试试题 笔试时间:三小时内 姓名: 余文瑛 开始时间: 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
x大于 rect2
x 则交换他们的位置
我们用 R1 表示左边巨型,R2 表示右边矩形 那么他们的相对位置有 4 种情况: (1) R1 右部上下两个顶点均//被包含在 R2 中 (2) R2 左部上下两个定点均被包含在 R1 中 (3) R1 右上方顶点被包含在右部矩形中,而右下角不在 (4) R1 的右下角顶点被 R2 包含,而右上角不在 其中在(3)(4)种,还要分两种情况计算
#include using namespace std; //为了保证安全性,一般将类的成员访问属性设置为private,通过相关的属性(函数进行访问),但本例中 //为了简便,将部分成员直接设置为public 访问属