华为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(), d());
auto end_unique = unique(vec.begin(), d());
for (auto it = vec.begin(); it != d(); 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;isort函数 js
x=x*16+toDigit(s[i]); cout<
}
return 0;
}
版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。
发表评论