金山招聘的机试题

题目如下:

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模式的示例代码,并比较两种方式各自的优缺点。

 

 

 

 

 

 

参考答案:

1、

#include<iostream>
using namespace std;

class obj{
public:
obj(){
if(_obj==0) {cout<<"/n对象数目达到上限/n";return;}
_obj--;}
~obj(){_obj=1;}
private:
static int _obj;
};
int obj::_obj=1;


int main()
{
obj a;
   
}

 

 

 

 

2、

int one=0x80000000;
int two=0x7FFFFFFF;
return(one&x)|(two&x));

 

 

3、

int sign(INT32 x)
{
INT32 a=x>0? 1:(x==0? 0:(x<0? -1:-1));
return a;
}

 

http://topic.csdn.net/u/20100524/14/0eff992a-2849-4db6-bdaa-d4a200e79b7c.html

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值