读书人

小弟我朋友金山招聘的机试题发给大家

发布时间: 2012-04-03 12:38:19 作者: rapoo

我朋友金山招聘的机试题,发给大家分享下。。。
发下我朋友金山的机试体吧,望大家各抒己见,提供高效的算法,本人只会做5个,我们一起学习下吧。

题目如下:

1.在程序设计和运行中,有时候我们希望一个类有且只有一个实例,请用C++语言写一个这样的示例类。

2. 请实现一个具有以下功能的函数,但不能使用任何形式条件判断、分支、跳转等类型的语句或指令:
int sign(INT32 x) {
if (x > 0) return 1;
else if (x == 0) return 0;
else return -1;
}



3. 请实现以下两个函数:
char toupper(char c);
char tolower(char c);
分别用于将传入的字母转为大写和小写。两个函数传入的参数取值范围都是[a-zA-Z],并且为ASCII编码,实现时不用检查参数合法性。解法中不能使用任何形式的条件判断、分支、跳转等类型的语句或指令。请尽可能多的写出你知道的办法。

4. 请完成一个函数,找出给定目录下体积最大的文件。函数可以指定是否搜索子目录。

5. 有一段英文文档(只由字母和空格组成),请实现一个函数,把这篇文档中指定的单词替换为目标单词。

以下两题请任选一道作答,如果时间充足,也可以两道都答:
6. 给定一个介于0与1之间的小数,以及分母的最大位数(1-6位)。请构造一个程序,寻找分母在指定位数之内,与给定小数最接近的分子——分母对(显然,分子、分母须为整数)。例如,黄金分割比0.618...,分母限定为2位时,最接近的分数为55/89;分母限定为3位时,为 610/987。

7. 请分别用C++的面向对象和泛型机制,编写实现Template Method模式的示例代码,并比较两种方式各自的优缺点。




[解决办法]

C/C++ code
/*    1.在程序设计和运行中,有时候我们希望一个类有且只有一个实例,请用C++语言写一个这样的示例类。*/#include<iostream>using namespace std;class OnlyOneObject{public:    OnlyOneObject();     ~OnlyOneObject();private:    static int counter;};int OnlyOneObject::counter = 0;inline OnlyOneObject::OnlyOneObject(){     if (counter==0)    {        counter++;        cout << "创建了实例对象" << endl;    }    else    {        cerr << "无法创建实例对象。" << endl;        return;    }}inline OnlyOneObject::~OnlyOneObject(){    if (counter==1)    {        counter--;    }}int main(){    OnlyOneObject obj1;    OnlyOneObject obj2;    OnlyOneObject obj3;    obj1.~OnlyOneObject();    OnlyOneObject obj4;}
[解决办法]
第二题
#include<iostream.h>

int GetSingn(int a)
{
return ((a>>31)&1)?(-1):((a^0)?1:0);

}

void main()
{
int a = -1;

cout<<GetSingn(a)<<endl;

}
[解决办法]
好多都5识!!!
[解决办法]
mark
[解决办法]
探讨
我来做这个:

3. 请实现以下两个函数:
char toupper(char c);
char tolower(char c);
分别用于将传入的字母转为大写和小写。两个函数传入的参数取值范围都是[a-zA-Z],并且为ASCII编码,实现时不用检查参数合法性。解法中不能使用任何形式的条件判断、分支、跳转等类型的语句或指令。请尽可能多的写出你知道的办法。

C/C++ co……

[解决办法]
第一题:

SingleTon.h
class CSingleTon
{
public:
static CSingleTon& GetInstance();

virtual ~CSingleTon();

void Show();

private:
CSingleTon();

CSingleTon(const CSingleTon &)
{
}
operator=(const CSingleTon &)
{
}

static CSingleTon m_Instance;

};

SingleTon.cpp

#include "SingleTon.h"

#include<iostream.h>

//////////////////////////////////////////////////////////////////////
// Construction/Destruction
//////////////////////////////////////////////////////////////////////

CSingleTon CSingleTon::m_Instance;

CSingleTon::CSingleTon()
{

}

CSingleTon::~CSingleTon()
{

}

CSingleTon& CSingleTon::GetInstance()
{
return m_Instance;
}

void CSingleTon::Show()
{
cout<<"单例模式"<<endl;
}

main.cpp
#include<iostream.h>
#include "SingleTon.h"


void main()
{

CSingleTon& single = CSingleTon::GetInstance();
single.Show();

}
[解决办法]
第二题:
// 正数:1-0;0:0-0;负数:0-1
return (0x80000000&(x+0x7FFFFFFF))-(0x80000000&x);

第三题:
char toupper(char c)
{
static up[0xFF] = { ... };
return up[c];
}
[解决办法]

探讨
C/C++ code

int sign(INT32 x)
{
return ((x > 0) - ((x & 0x80000……

[解决办法]
探讨
引用:
C/C++ code
int sign(INT32 x)
{
return ((x > 0) - ((x & 0x80000000) == 0x80000000));
}

如果是正数呢?

[解决办法]
探讨
引用:
引用:
C/C++ code
int sign(INT32 x)
{
return ((x > 0) - ((x & 0x80000000) == 0x80000000));
}

如果是正数呢?

整数就返回1啊

读书人网 >C++

热点推荐