准备了还有一段时间了,结果还是悲剧了,主要准备的是算法,结果华为机试更看重字符串的操作,这一块正好是自己的弱项,哎。不过还有时间,这几个月多刷刷题,多锻炼锻炼,加油吧。
机试一共考了三道题,两道简单点的,一道难题,难题考得是状态机,不知道是什么东西╮(╯▽╰)╭,简单的两题做的也不好,回来在重新做一下。
1.倒置英文句子中单词的字母顺序。
hello, I am good. -> olleh, I ma doog.
这题其实不难,当时脑子有点纠结符号,所以没做出来,还有一点客观原因,平时用的VS2010,到那里用的VC,硬是用的不舒服,算了不找理由了,可以参考博文<实例>C++ 将一句话里的单词进行倒置,标点符号不倒换。就是把第一个翻转省略,第二个翻转修改一下即可。
#include <iostream>
using namespace std;
int main()
{
int i = 0;
int begin, end;
char str[] = "hello, I am good.";
cout<<"原字符串为: "<<str<<endl;
char temp;
while( str[i] !=NULL )
{
if( str[i]!=' '&& str[i] !=',' && str[i]!='.' )
{
begin = i;
while(str[i]!=' '&& str[i] !=',' && str[i]!='.'&&str[i]!=NULL)
{
i++;
}
end = i-1;
}
while(end>begin)
{
temp = str[begin];
str[begin] = str[end];
str[end] = temp;
end--;
begin++;
}
i++;
}
cout<<"反转后字符串为:";
cout<<str<<endl;
return 0;
}<span style="font-family: Arial, Helvetica, sans-serif;"> </span>
2.实现“十七进制”转“十进制”算法。
这个题好做,不过我觉得自己的方法有点笨,不知道有没有巧妙的方法。
注意:1字符串长度可以用strlen直接求得,2子函数中临时数组需要动态创建,3乘方是double pow(double x,int y),我当时一上去就来个^符号,现在想想真是太无知了。
#include <iostream>
#include <string.h>
#include <math.h>
using namespace std;
int change(char str[])
{
const int length = strlen(str);
int *tmp = new int[length]; //动态数组
for( int i=0; i<length; i++ )
{
switch (str[i])
{
case '1': tmp[i] = 1; break;
case '2': tmp[i] = 2; break;
case '3': tmp[i] = 3; break;
case '4': tmp[i] = 4; break;
case '5': tmp[i] = 5; break;
case '6': tmp[i] = 6; break;
case '7': tmp[i] = 7; break;
case '8': tmp[i] = 8; break;
case '9': tmp[i] = 9; break;
case 'A': tmp[i] =10; break;
case 'B': tmp[i] =11; break;
case 'C': tmp[i] =12; break;
case 'D': tmp[i] =13; break;
case 'E': tmp[i] =14; break;
case 'F': tmp[i] =15; break;
case 'G': tmp[i] =16; break;
}
}
int num = 0;
for(int i=0; i<length; i++ )
{
num = num +tmp[i]*pow(17.0,length-i-1);
}
return num;
}
int main()
{
char str[]="ABC";
cout<<"十七进制数据"<<str<<"的十进制表示为:"<<change(str)<<endl;
return 0;
}
A=10
AB = 10*17+11 = 181
1BC = 1*17^2+11*17+12 = 488
2014年6月6日--华为机试,布布扣,bubuko.com
原文地址:http://blog.csdn.net/taotao1990228/article/details/28911811