今天开始就参加各种笔试了,让我记录一下有趣的笔试题目吧

第 一 次 笔 试

1.推断题

关键语句 x = x&(x-1);

给定x,要求计算多少次之后,x = 0;

答:这个语句的作用用例子就可以看出

1&0 = 0;count = 1;

11&10 = 10,10&01 = 00;count = 2;

110&101 = 100,100&011 = 000;count = 2;

可以看出语句的作用就是数二进制位中 1 的个数,所以只需要将x的值转化为二进制就行,使用除余法就可以得到;

 

2.求24题

给出5,5,5,1 要求每个数用且仅用一次进行四则运算得出24。

答:这种题好像只能试10,0,25,1 -> 15,5,50,2;  5,-5,0,0;  20,30,125,5;  6,-4,5,0.2; -> 剩下操作数1 (以5,5开头无解);

6,4,5,5  -> 11,1,30,1.2; 9,-1,20,0.8;(见上);(见上); -> 剩下操作数5(5,1开头无解);

6,-4,5,5 -> 见上;1,-9,-20,-0.8;(见上);(见上); -> 剩下操作数5(1,5开头无解);

答案是无解?!搞不清楚闹哪样;

 

3.基础代码题

写出能找出一串字符串中第一个唯一的字符的函数 例如abacddeeff,返回 b;

答:代码如下

 1 char firstSingle(char* str){
 2     
 3     char * a = str;
 4     char * b = str;
 5     
 6     for(; *a != '\0';a++){
 7         
 8         bool same = false;
 9         
10         for(b = str; b != a;b++){
11             if(*a == *b){
12                 same = true;
13                 break;
14             }
15         }
16         if(!same){
17             for(b = a+1; *b != '\0';b++){
18                 if(*a == *b){
19                     same = true;
20                     break;
21                 }
22             }
23             if(!same)    break;
24         }
25     }
26     return *a;
27 }

有重复检查,但是是最容易想到的一种方法

 

转载于:https://www.cnblogs.com/noprofessional/p/7643636.html

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值