创新工场笔试

考了三道题。

佩服李开复老师的省钱本事:考试直接发白纸,连印刷费也省了,试题直接用投影仪显示在讲台屏幕上。

 

三道题,看着不难,所以我就现在先在稿纸上把程序基本都写出来,最后剩近二十分钟,才匆忙开始抄写到答题纸上。

 

失策:

1、最后二十分钟抄写程序,比较匆忙,导致抄写过程完全是机械式的,来不及重新思考或检查。有点浪费了二十分钟去抄写程序的遗憾。

改正:在稿纸上,基本写出解题思路;之后,直接把答案写到答卷上。避免三道题写完了,再写答卷的话,什么思路都忘了、断了。

 

 

回来后,发现第一题答得有漏洞,于是在机器上,重新实现了程序:

题意:把句子"I love you baby",倒置成"baby you love I"。

 

答卷上的漏洞:

1、word没有反转过来:

 

2、word没有置空值:word = "";

3、对word的最后情况,没有考虑:

if (word.length() > 0)

{

for (int j = word.length() - 1; j >= 0; j--)

{

ts += word[j];

}

}

 

 

知识延伸:

1、对判断一个char是否是一个字母,我的判断是:('A' <= c && c <= 'Z') || ('a' <= c && c <= 'z')。方法是比较低效的。

可使用<ctype>库中的函数:isalpha函数。

 

2、标准库函数isalpha的实现是:

 

在ASCII码中A-Z的编码为

   二进制             十进制
A 01000001              65
B 01000010              66
.
.
Y 01011001              89
Z 01011010              90

所以A-Z的编码高位的第2、3位始终为10,然后通过后面5位来表示26个字母。

在ASCII码中a-z的编码为
   二进制             十进制
a 01100001              97
b 01100010              98
.
.
y 01111001              121
z 01111010              122
所以a-z的编码高位的第2、3位始终为11,然后通过后面5位来表示26个字母。


ch | 0x20 表示将A-Z转换为a-z

 

3、关于位操作符:

(1)、~ 取反 ~0011 = 1100

(2)、& 位与 0011 & 0110 = 0010

(3)、| 位或 0011 | 0110  = 0111

(4)、^ 异或 0011 ^ 0110 = 0101


  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值