华为js面试题_刷华为面试题总结

题目

第一个是一个喝汽水的题,第二个是排序+去重,第三个是基础的十六进制转十进制。总的来说,题目都比较基础,考的都是一些C/C++的基本内容,而且题目没有明确说明是否能够调用库函数,这就很好办了,比如排序去重题,让你自己做你还要从一堆排序方法中考虑要用哪一个,调函数的话一个sort就解决了。

问题

基础不牢固

开始就报错说我的main函数有错误,还以为是每加return,结果加了还不行,以为是编译器问题,又去百度了一番,最后才发现是main后没加(),真的是太久没用C++了。

还有ASCII码表,考研专业课出了一道好像是某个字母的ASCII码值,瞬间蒙了。这里再记一下:字符0的码值为48,字符A的码值为65,字符a的码值为97。

刷题太少

以后应该尽量做一些基础题,笔试不会出太难的算法,这两天回顾一些C++基础,先不必关注类以及抽象。

代码

空瓶子

#include

using namespace std;

int main()

{

int n;

while(cin>>n)

{

if(n==0)

break;

cout<

}

return 0;

}

随机数排序去重

去重方法值得注意,一是可以排序后使用一次迭代,二是调用unique函数,不过该函数并不是将重复去掉,而是将重复放到数组末尾,所以还需要调用erase函数。

#include

#include

#include

using std::cout;

using std::cin;

using std::endl;

using std::vector;

using std::unique;

int main()

{

int n = 0, num = 0;

while(cin>>n)

{

vector vec;

for (int i = 0; i < n; i++)

{

cin >> num;

vec.push_back(num);

}

sort(vec.begin(), vec.end());

auto end_unique = unique(vec.begin(), vec.end());

vec.erase(end_unique, vec.end());

for (auto it = vec.begin(); it != vec.end(); it++)

cout << *it << endl;

}

return 0;

}

进制转换

主要是利用字符串函数处理,对于0x开头的十六进制,从左到右进行处理就是和十进制相似,每读一个字符,前面的数就乘以16

#include

#include

using namespace std;

int toDigit(char c)

{

if(c>='a' && c<='f')

return c-'a'+10;

else if(c>='A' && c<='F')

return c-'A'+10;

else

return c-'0';

}

int main()

{

string s;

while(cin>>s)

{

int n=s.size();

int x=0;

for(int i=2;i

x=x*16+toDigit(s[i]);

cout<

}

return 0;

}

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值