此篇文章记录于2018年笔者当时校招之路
时过一年,又是一轮毕业季,故放出此私密文章,为广大应届生分享笔者当时校招之路
可能上批FX笔试题太难了,这次笔试题大大降低了难度。
题目大体意思是这样,输入一个字符串,然后将每个字符加密拼接,
拼接算法是将每个字符转换为二进制数字,然后将这些二进制数字分别逆序后,再拼接。
比如 输入 ab
输出 10000110100011
这道题是比较简单的,主要意思是将字符转换成二进制,然后再将二进制字符反过来拼接就好,不过需要注意的是
0如果在前面,是需要删除了,笔者刚开始没注意这个,所以case没过,好在后来发现了,现将代码分享出来,祝大家早日拿到心怡的offer!
#include<iostream>
#include<vector>
#include<string>
using namespace std;
#include<algorithm>
string outc(char c)//这个函数的作用是将字符转换成二进制,由于char是一个字节,即位,所以我们只要要将10000000循环与运算就好
{
string result;
unsigned char k = 0x80;
for (int i = 0; i < 8; i++, k >>= 1)
{
if (c & k)
{
result = result + "1";
}
else
{
result = result + "0";
}
}
//到了这边已经将字符装换成二进制了,但是还需要把前面的0删除,
//下面这段循环就是发现第一个不是0的位置,然后取后面的字符串
for (int i = 0; i < result.size(); i++)
{
if (result[i] != 0)
{
result = result.substr(i);
break;
}
}
reverse(result.begin(), result.end());//注意,需要翻转,这里直接调用函数就行
return result;
}
int main()
{
string input;
while (getline(cin,input))
{
for (int i = 0; i < input.size(); i++)
{
cout << outc(input[i])<<" ";
}
}
cout << endl;
return 0;
}