没有合适的资源?快使用搜索试试~ 我知道了~
首页教你如何过华为机试.docx
资源详情
资源评论
资源推荐

大师兄教你如何过华为机试
宝典 1—内功心法
大华为这个大数据时代土豪金海量式的招聘又要开始了!!!
近期听说大华为的校招机试马上就要开始了,由于华为软件岗位的招聘只有技术面跟
机试是与技术有关的内容,所以机试的地位非常重要。对于机试,除了长期积累的软件基
本功以外,还有很多可以短期训练的东西,类似于考试之前的突击,可以迅速提高机试成
绩,就像在我西电大杨老师考前最后一堂课一定要去,那个重点就是考点阿。
这篇机试葵花宝典的内容是针对华为软件类上机准备的,如果你认真看了本宝典,如果
你是真正通过自己能力考上西电的话,想不过都难。同样想拿高级题的同学,请移步
acm.xidian.edu.cn/land/或者 poj.org,刷上 200 道题,机试不想拿满分都难。
对于机试,首先应该调整好自己的心态,不要觉得写程序很难,机试题很难,也不要
去考虑,万一机试考到自己不会的内容怎么办,要相信,机试题永远是考察每个人的基础,
基础是不会考的很偏的,会有人恰好做过某个题而做出来那个题,但不会有人恰好没做过
一个题而做不出来那个题。
机试之前,应该做的准备有:
1、 买一本《算法竞赛入门经典》,这本书不同于普通的算法或者编程语言的书籍,
这本书既讲语言,又讲算法,由浅入深,讲的很好,能看完前几章并且把例题都
做会,想通过机试就很简单了
2、 调整好心态,时刻告诉自己,哪些小错误是自己以前经常犯的,最好用笔记本记
录下来,写每道题前再看一遍,如果遇到代码调不出来了,先想想自己是否犯过
以前那些错误。还有就是,看了题目以后,先仔细想清楚细节,在纸上写清楚自
己需要用到的变量,以及代码的基本框架,不要急于动手去写代码
3、 不要惧怕任何一道看起来很难的题目,有不会的就去问身边会的人,让别人给自
己讲清楚
4、 心中默念 10 遍 C++跟 C 除了多了两个加号其实没有区别,会 C 就能上手 C++
5、 大量的练习是必要且有效的
6、 看完这篇宝典,预过机试、必练此功。
在这里推荐一个帖子,是机试归来的学长写的,写的很不错,里面的例题在后面的攻

略中也会提及, 就在好网上。
宝典二:常用招式
1:机试常用变量类型
C\C++常用的变量类型有很多种,想通过机试,掌握好其中的几种就可以,他们分别
是 int,double, string, char[]
int 类型是最常用的整数类型,对于输入类型是整形的变量,使用 int 来进行定义和读
入。还有一种更大的整形变量是 long long,在机试中一般不会涉及到考察,如果考虑到
运算的过程中有可能超过 int 的大小,再考虑使用 long long,int 最大可以到达 2^31 级
别,long long 最大可以到达 2^63。
PS:有时机试读入多个整数的时候会是这样的形式
5,10
中间有一个逗号,在这种情况下,其实读入也是很简单的,可以这么写:
scanf(“%d%c%d”,&a,&b,&c);
或者是:
scanf(“%d”,&a);
getchar();
scanf(“%d”,&c);
有的机试题会说:两个整数之间有若干个空格符或 tab 字符。在这种情况下,读入的
方式还是使用 scanf(“%d%d”,&a,&b)这样,scanf 函数或者 cin 函数都可以很好的吃掉
除了数字字符以外的字符。
double 类型是最常用的浮点数类型,当运算涉及到小数运算的时候,需要使用
double 来定义。其中,特别需要注意的一点是,如果使用了如下语句:
double x=a/b;
在这里,a 和 b 是 int,那么 x 的值将是 a 和 b 整除后的结果,而不是想要的结果,想
要得到期望的结果,须改成
double x=(a+0.0)/b;
在这里,将 a 加上一个浮点数,程序会在后台将它强制转换成一个 double 类型的数
字,此时再除一个整数,就没有问题了

string 类型是遇到字符串类问题应该首选的变量,区别于字符数组 char[],string 类
型是直接将字符数组封装了进去,定义 string s 相当于定义了一个大小特别长的字符数组。
使用 string 的好处是,避免了使用 char 数组时定义数组长度过小导致越界,同时更加直
观的将字符串看做了一个对象。
如果要定义一个 string 变量,首先得包含 string 的头文件以及使用 C++中的标准命
名空间,标准命名空间这个东西,只要记得写上就行,没有任何影响。
#include<iostream> //这一句是 c++的头文件,c 语言代码一样可以把它包含进来,
只要将程序后缀名改成.cpp 即可,其他都是一样的。
#include<string.h>
using namespace std;
在不同的环境下,可能会有不同的头文件包含了 string 的用法,可能的头文件有
cstring,string。在机试的环境中,一般使用 string.h 即可。
定义一个 string 和定义其他变量方式相同:
string s;
读入和输出 string 也只需要使用
cin>>s;
cout<<s;
这是比 c 语言的字符数组要简单了很多的。
需要注意的是,string 类型读入的时候与 char 数组的 scanf 读入一样,都是遇到空格
符或者回车符就停止读入,当做一个完整字符串来处理,因此,使用 string 处理带空格的
字符串是不明智的,其他情况下是都可以的。
string 变量包含了很多强大的功能,如:
[cpp] view plaincopyprint?
1. s[i];//这么写,返回的就是字符串 s 第 i+1 位的字符,返回的类型是 char 型,其中,s[0]是它的第一位,与字
符串相同。
2. s.size();//返回字符串的长度,返回的长度是 l,则 s 从 s[0]到 s[l-1]表示的是其每一位的字符。
3. if(s1<s2)//两个 string 是可以方便的使用大小于符号以及等于号来比较大小的,比较的方式是,从左向右按位
进行比较,每一位按照字典序来比较。如”aaaa”<”abc”<”bcd”,但值得注意的一点是,比较的时候应用变量进行比
较,即 s1<s2 这种,而不能用”aa”<”bb”这样,如果要比较他俩的大小,应这么写:
4. s1="aa";s2="bb";
5. if(s1<s2)
string 类型还有很多强大的功能,但是对于机试来说,会使用以上三种功能就足够了。

char[50],char[100]这种字符数组与 string 类型很像,只不过他是 C 语言里面的用
法,对于机试,只建议在输入带有空格字符的字符串时使用 char 数组,使用的方式是:
gets(s);
在这里,gets 函数区别于 scanf 函数的是,gets 函数会直接将一整行读进来,而不会
遇到空格就停下来。
常见机试题类型
初级题常见的类型无非就是字符串处理类的题目和数字处理类的题目,在这里归结如
下:
1:字符串处理类
字符串所有大写转小写:
1. for(inti=0;i<s.size();i++)
2. if(s[i]>=’A’&&s[i]<=’Z’)
3. s[i]=s[i]-’A’+’a’;
//s[i]-’A’返回的是两个大写字母之间的差值,比如’C’与’A’的差值是 2,这个差值是一
个 int 类型,也可以直接提取出来使用。给这个差值再加上字母’a’,相当于给’a’再往后推
移二位,变成字母’c’。这种用法是字符串内最普遍的一种用法,小写转大写也是一样。
删除满足指定要求的字符后输出:
在机试中,判定对错的方式是比较输出的结果,而非检查内部的结果,因此,“删除”对
于机试来说,相当于“不输出”,也就是说,不需要调用 s.erase()函数,只需要在遇到被删
除的字符时,跳过,不输出即可。
1. for(inti=0;i<s.size();i++)
2. {
3. if(s[i]满足删除要求)跳过;
4. else输出 s[i];
5. }
倒转字符串:
与删除字符串的思路类似,倒转一个字符串,其实就是倒着输出,只需要将循环反过
来就可以。
1. for(inti=s.size()-1;i>=0;i--)
剩余19页未读,继续阅读











安全验证
文档复制为VIP权益,开通VIP直接复制

评论1