大师兄教你如何过华为机试

大师兄教你如何过华为机试
大师兄教你如何过华为机试

大师兄教你如何过华为机试

宝典1—内功心法

大华为这个大数据时代土豪金海量式的招聘又要开始了!!!

近期听说大华为的校招机试马上就要开始了,由于华为软件岗位的招聘只有技术面跟机试是与技术有关的内容,所以机试的地位非常重要。对于机试,除了长期积累的软件基本功以外,还有很多可以短期训练的东西,类似于考试之前的突击,可以迅速提高机试成绩,就像在我西电大杨老师考前最后一堂课一定要去,那个重点就是考点阿。

这篇机试葵花宝典的内容是针对华为软件类上机准备的,如果你认真看了本宝典,如果你是真正通过自己能力考上西电的话,想不过都难。同样想拿高级题的同学,请移步

https://www.360docs.net/doc/2712208562.html,/land/或者https://www.360docs.net/doc/2712208562.html,,刷上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 //这一句是c++的头文件,c语言代码一样可以把它包含进来,只要将程序后缀名改成.cpp即可,其他都是一样的。

#include

using namespace std;

在不同的环境下,可能会有不同的头文件包含了string的用法,可能的头文件有cstring,string。在机试的环境中,一般使用string.h即可。

定义一个string和定义其他变量方式相同:

string s;

读入和输出string也只需要使用

cin>>s;

cout<

这是比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

比较,每一位按照字典序来比较。如”aaaa”<”abc”<”bcd”,但值得注意的一点是,比较的时候应用变量进行比较,即

s1

4.s1="aa"; s2="bb";

5.if (s1

string类型还有很多强大的功能,但是对于机试来说,会使用以上三种功能就足够了。

char[50],char[100]这种字符数组与string类型很像,只不过他是C语言里面的用法,对于机试,只建议在输入带有空格字符的字符串时使用char数组,使用的方式是:gets(s);

在这里,gets函数区别于scanf函数的是,gets函数会直接将一整行读进来,而不会遇到空格就停下来。

常见机试题类型

初级题常见的类型无非就是字符串处理类的题目和数字处理类的题目,在这里归结如下:

1:字符串处理类

字符串所有大写转小写:

1.for (int i=0;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 (int i=0;i

2.{

3. if (s[i]满足删除要求) 跳过;

4. else 输出s[i];

5.}

倒转字符串:

与删除字符串的思路类似,倒转一个字符串,其实就是倒着输出,只需要将循环反过来就可以。

1.for (int i=s.size()-1;i>=0;i--)

字符串比较大小:

如果比较的规则与字符串的比较规则相同,则直接使用s1>s2这种方式,如果规则不同,则用一重循环按位比较即可。

2、数字处理类

数字处理类的题目,最常见的两种考察形式是整数拆分、进制转换和排序。

整数拆分是指将一个整数拆分开每一位,比如123拆分成1,2,3。整数拆分的思路有两种,第一种是直接用字符串读入,然后把每一位用字符的形式提取出来:

[cpp]view plaincopyprint?

1.for (int i=0;i

2. num[i]=s[i]-'0';

还有一种思路是不断去除以10,把余数提取出来,方法是:

[cpp]view plaincopyprint?

1.while (n!=0)

2.{

3. num[i]=n%10;

4. n=n/10;

5. i++;

6.}

进制转换:

进制转换又分为10进制转换成别的进制以及别的进制转换成10进制,进制转换其实特别简单,只需要记住如下代码:

10进制转换成X进制

[cpp]view plaincopyprint?

1.while (n!=0)

2.{

3. num[i]=n%x;

4. i++;

5. n=n/x;

6.}

X进制转换成10进制

[cpp]view plaincopyprint?

1.for (int i=0;i<=length;i++)

2.{

3.ans=ans*x+num[i];

4.}

其中,num[i]表示的是该x进制数的每一位,比如一个二进制数101,用这种转换方式去转换,ans的值从i=0到i=2处理后分别是1,2,5。

排序:

排序这个东西,其实不需要学习冒泡啊、快排啊之类的算法,应对机试,C++中自带的sort函数就可以很好的解决,请看下面一段代码

[cpp]view plaincopyprint?

1.

#include

2.#include //这个是包含sort函数的头文件

https://www.360docs.net/doc/2712208562.html,ing namespace std;

4.int arr[100],n;

5.int cmp(int x,int y) //这个函数是sort函数比较两个元素优先级的函数,在这里计算出两个元素的优先级,然后返

回即可。

6.{

7.int importance1,importance2;

8. //此处插入代码计算x,y的重要性

9. return importance1

到大排序

10.}

11.i nt main()

12.{

13. cin>>n;

14. for (int i=0;i>arr[i];

15. sort(arr,arr+n,cmp);

16. return 0;

17.}

这一段代码的作用是读入n个数字,然后按优先级进行排序,排序的比较方法在cmp函数中实现,排序的具体过程不需要考虑。

可以看到,其实只需要记住sort函数的用法,要通过机试,排序算法是根本不需要学习的,so easy!

总结:机试中,掌握好int,double,string,char[],还有数组,就足够用了,但考察的

内容不仅仅是上述这些,想要通过机试,还是应该多多练习,多多学习,不局限于上面所说的内容

宝典三:擂台实战

首先推荐一个网站:https://www.360docs.net/doc/2712208562.html,/land/,上面的很多题目,难度很适合机试,如:

很简单:1031,1120,1122,1121,1103,1104,1281,

简单:1049,1181,1182,1279,1280,

中等:1106,1108,1183,1288.

难:1105,1282,1283,

大家可以根据自己的水平去训练,其实里面的难题也是很简单的,归类到题库中的话都属于简单题,只要好好看书学习都是可以做出来的,下面放几道例题,这些题都是机试很有可能考的题目,或者是非常类似的题目,已经有了仔细的注释,代码写的仓促

1.简单题

2.题目描述

3.输入一个字符串,删除其中所有的数字,所有大写字母改成小写,其他不变,并输出

4.

5.输入描述

6.一个字符串,保证没有空格,以回车符结束,字符串长度<=20

7.输出描述

8.一个字符串,为题目要求的结果

9.

10.输入样例

11.aAbB13A

12.输出样例

13.aabba

14.

15.解题思路:模拟题目要求即可,遇到数字就跳过不输出,遇到大写字母就改成小写。

16.

17.*/

18.#include

19.#include

https://www.360docs.net/doc/2712208562.html,ing namespace std;

21.int main()

22.{

23. string s;

24. cin>>s;

25. for (int i=0;i

26. {

27. if (s[i]>='0' && s[i]<='9') continue; //遇到数字就跳过

28. if (s[i]>='A' && s[i]<='Z') s[i]=s[i]-'A'+'a'; //遇到大写字母就改成小写

29. cout<

30. }

31. cout<

32.}

33.

34.简单题

35.题目描述

36.输入一个字符串,统计其出现频率最高的字符,并输出。若存在两个字符出现频率相同,则输出字典序较小的那一个

37.

38.输入描述

39.一个字符串,保证没有空格,以回车符结束,字符串长度<=20

40.输出描述

41.一个字符

42.

43.输入样例

44.aabbaabb

45.输出样例

46. a

47.

48.解题思路:做一个频率数组来统计所有字符的出现频率,机试时候不会有汉字输入,因此只考虑输入是ASCII编码的情况。

49.

50.*/

51.#include

52.#include

https://www.360docs.net/doc/2712208562.html,ing namespace std;

54.int f[200]; //频率数组

55.int biggest=0; //记录最大的值

56.int main()

57.{

58. memset(f,0,sizeof(f)); //将f中的全部元素变成0,写循环也可

59. string s;

60. cin>>s;

61. for (int i=0;i

62. {

63.int num=s[i]; //将s[i]转换成它的ascii码

64. f[num]++; //频率次数加1

65. biggest=max(biggest,f[s[i]]); //比较找出最大的

66. }

67. for (int i=0;i<=129;i++) //枚举所有的字符的频率,找出频率最高且字典序最小的那一个

68. if (f[i]==biggest) //如果满足要求

69. {

70. cout<<(char)(i)<

71. break; //这句break保证了我们只会输出一个满足要求的结果

72. }

73.}

74./*

75.简单题

76.题目描述

77.输入一个数字,将其倒序输出,并输出其各个位上的乘积

78.

79.输入描述

80.一个正整数,保证在int范围内

81.输出描述

82.两个数字,用空格隔开,第一个数字为其倒序的值,第二个数字是各个位上的乘积

83.

84.输入样例

85.134

86.输出样例

87.431 12

88.

89.

90.解题思路:删繁就简,直接当字符串读入,处理就简单多了。

91.PS:此处不用纠结于题意,没有特别强调是按照一个数的格式输出,因此可以有前导0

92.

93.*/

94.#include

95.#include

https://www.360docs.net/doc/2712208562.html,ing namespace std;

97.int main()

98.{

99. string s;

100.int ans=1;

101. cin>>s;

102. for (int i=s.size()-1;i>=0;i--)

103. {

104. cout<

105. ans=ans*(s[i]-'0'); //ans累乘每一位的值

106. }

107. cout<<' '<

108.}

109.中级题

110.题目描述

111.输入10个数字,按各个位上的和从小到大排序,如果相同,则按数字从小到大排序。

112.

113.输入描述

114.10个正整数,保证都在int范围内,用空格隔开

115.输出描述

116.10个数字,其从大到小的值,用空格隔开,最后一个数字后不加空格

117.

118.输入样例

119.11 3 2 4 5 9 8 7 10 6

120.输出样例

121.10 2 11 3 4 5 6 7 8 9

122.

123.解题思路:调用C++自带的sort函数,重新改写compare函数即可。

124.*/

125.#include

126.#include

127.#include //这个是调用sort函数必须的头文件

https://www.360docs.net/doc/2712208562.html,ing namespace std;

129.int arr[10];

130.int cal(int x) //计算一个数字各个位上的和

131.{

132.int ans=0;

133. while (x!=0)

134. {

135. ans+=x%10;

136. x/=10;

137. }

138. return ans;1

139.}

140.int cmp(int i,int j)

141.{

142. if (cal(i)!=cal(j)) //如果两个数字各个位上的和不相同,则按照各个位上的和来排序143. {

144. return cal(i)

145. }

146. else //否则,即两个数各个位上的和相等,则按照数字本身来排序

147. {

148. return i

149. }

150.}

151.int main()

152.{

153. for (int i=0;i<=9;i++) cin>>arr[i];

154. sort(arr,arr+10,cmp);

155. for (int i=0;i<=9;i++)

156. {

157. cout<

158. if (i!=9) cout<<' '; //如果不是最后一个数字,则需要在两个数字中间输出一个空格。159. }

160. cout<

161. //PS:最后一个输出的后面一定要跟回车符而不是空格符

162.}

163.中级题

164.题目描述

165.你有一个容量为100的箩筐,给你30个物品,每个物品的体积已知问:最多能装多少个物品进箩筐166.输入描述

167.一行30个正整数,用空格隔开,表示每个物品的体积

168.输出描述

169.一个数字,为最多能装下的物品数

170.

171.输入样例(此处用3个物品作为样例,实际读入为30个)

172.5 59 100

173.输出样例

174.2

175.

176.解题思路:利用性价比对所有物品进行排序,优先装性价比高的,在此题中,性价比就是物品的体积177.*/

178.#include

179.#include

180.#include //这个是调用sort函数必须的头文件

https://www.360docs.net/doc/2712208562.html,ing namespace std;

182.int arr[31];

183.int main()

184.{

185. for (int i=0;i<=29;i++) cin>>arr[i];

186. sort(arr,arr+30); //从小到大排序

187. //从最小的开始装框,直到装满了为止。

188.int sum=0;

189. for (int i=0;i<=29;i++)

190. {

191. if (sum+arr[i]>100) break; //如果不能装了就立刻停下来

192. sum=sum+arr[i]; //否则就把这个也装进去

193. }

194. //程序跳出的那个位置的i,就是我们一共装了的数量,如果全部都装了,则i=30

195. cout<

196.}

197.初级题:(此题是我曾经做的机试题)

198.描述:10个学生考完期末考试评卷完成后,A老师需要划出及格线,要求如下:

199.(1) 及格线是10的倍数;

200.(2) 保证至少有60%的学生及格;

201.(3) 如果所有的学生都高于60分,则及格线为60分

202.(4) 及格线越高越好,但最高不能超过60

203.输入:输入10个整数,取值0~100

204.输出:输出及格线,10的倍数

205.输入样例:61 51 49 30 20 10 70 80 90 99

206.输出样例:50

207.

208.解题思路:从高到低枚举及格线,输出第一个满足要求的及格线就是答案

209.*/

210.#include

https://www.360docs.net/doc/2712208562.html,ing namespace std;

212.int arr[10];

213.int main()

214.{

215. for (int i=0;i<=9;i++) cin>>arr[i];

216.int line;

217. for (line=60;line>=0;line-=10) //从高到低枚举分数线

218. {

219.int num=0; //该变量用来统计这个分数线下,是否超过60%同学及格

220. for (int i=0;i<=9;i++)

221. if (arr[i]>=line) //如果分数大于等于及格线,说明在这个分数线下是及格的

222. num++;

223. if (num>=6) //如果超过60%的人及格,在这里10的60%就是6

224. break; //满足了要求就立刻break,说明这是分数线

225. }

226. cout<

227.}

228.中级题:100分(此题是我曾经做的机试题)

229.描述:一条长廊里依次装有n(1 ≤ n ≤ 65535)盏电灯,从头到尾编号1、2、3、…n-1、n。每盏电灯由一个拉线开关控制。

开始,电灯全部关着。

230.有n个学生从长廊穿过。第一个学生把号码凡是1的倍数的电灯的开关拉一下;接着第二个学生把号码凡是2的倍数的电灯的开关拉一下;接着第三个学生把号码凡是3的倍数的电灯的开关拉一下;如此继续下去,最后第n个学生把号码凡是n的倍数的电灯的开关拉一下。n个学生按此规定走完后,长廊里电灯有几盏亮着。注:电灯数和学生数一致。

231.

232.输入:电灯的数量

233.输出:亮着的电灯数量

234.样例输入:3

235.样例输出:1

236.

237.解题思路1:这道题,如果要模拟的话,当然是可以的,但对于代码基础较差的同学写起来就比较吃力了,在这里写模拟的做法

238.解题思路2:在这道题上面多思考思考,可以看出,对于任何一个灯来说,比如12,其因数有1,2,3,4,6,12。说明,编号为1,2,3,4,6,12的学生分别要拉它一下,在这里发现,1*12=12,2*6=12,3*4=12,所以其因数都是一一对应的,也就是,1拉的那一下被12抵消了,2拉的那一下被6抵消了,那么谁不会被抵消呢?答案是平方数,比如9的因数是1,3,9,那么3*3=9,而3只拉一次,所以不会被抵消。因此,这道题的答案就是,输入的n以内的平方数个数,等于(int)sqrt(n)。

239.从这道题可以看出,编程的很多时候,多思考比多动笔要有用的多。

240.

241.*/

242.#include

243.#include

https://www.360docs.net/doc/2712208562.html,ing namespace std;

245.int vis[65536],n;

246.int main()

247.{

248. cin>>n;

249. memset(vis,0,sizeof(vis)); //这句话的意思是把vis数组清0,0表示此刻灯是关着的,1表示是开着的

250. for (int i=1;i<=n;i++) //枚举每一个学生的编号

251. for (int j=i;j<=n;j+=i) //从j=i开始,每次给j+i,使得i,i*2,i*3,...,这些灯全部都被拉一次开关252. vis[j]=1-vis[j]; //1->0,0->1,本质上都是用1减去它本身。

253.int ans=0; //统计答案

254. for (int i=1;i<=n;i++)

255. if (vis[i]==1) //如果现在是开灯状态,答案加一

256. ans++;

257. cout<

}

上面的所有代码能够看懂,并且自己实现一遍,再练上几个类似的题,过机试肯定没问题,能够轻松写出上面的代码,那么机试优秀肯定没问题。想拿满分,请去学习搜索(dfs,bfs),树(先中后序遍历,及已知遍历对树的构造等),栈(怎么用数组模拟栈,栈的特性等),图论(最短路算法,连通性判断等),动态规划(这个就太多了,入门请看背包九讲)等等等等。虽然写了这么多,但高级题其实并没有这么难,高级题主要考搜索比较多一些,偶尔会有树、栈、图、动态规划的题目,不过,要想当个好码农,算法和数据结构基础是必须的机试葵花宝典就写到这里了,大师兄在大华为等你们哪,来了我们一起在练独孤九剑,六脉神剑。

附好网上另一师兄机试心得,共小弟妹们参考:

华为机试成功归来,与小伙伴们分享下经验

前段时间参加华为机试,机试通过的可以优先录取,优先选择岗位和工作地,关键是面的好,还可以谈更高的工资,最多在西安可以拿到18W。好处还是蛮多的,抱着试试看的态度就去了。哈哈,华为机试记录正是开始。

提前在网上交了简历,周围同学只要报了软件研发类的相关岗位都收到短信通知,需要用到编程的同学基本上都受到短信了。一天三波,在西工大毅字楼三楼机房,南门进去直走左拐就到了,我是第二天早上的机试,前一天已经听机试过的同学考的内容涉及数组、链表、指针、字符串、循环、枚举、排序等吧,这个估计要看人品,平时出门多扶老奶奶过马路吧。其实考过后发现这个机试跟平时做项目不一样,项目可能更多的注重实现研究所需要的某个功能不会去注意这么多细节,但是机试考的更多的是基本功。下面重点跟大家分享下上机题吧,我只列举了我抽到的三个,其他同学抽到的跟这个大同小异吧。大家自己编写下,对即将开始的面试都会有帮助的。

考试内容:数组、链表、指针、字符串、循环、枚举、排序等(从考过的同学那儿总结的可能不全)

试题结构:考试总共三道题,说是难中易,初级题(60分)、中级题(100分)、高级题(160分),最难的接近一百行,说多不多,但自己敲出来还是费了点劲,

考试时间:两个小时。平时练得少可能稍微捉鸡点。

最简单的一个

描述:10个学生考完期末考试评卷完成后,A老师需要划出及格线,要求如下:

(1) 及格线是10的倍数;

(2) 保证至少有60%的学生及格;

(3) 如果所有的学生都高于60分,则及格线为60分

输入:输入10个整数,取值0~100

输出:输出及格线,10的倍数

输入样例:61 51 49 30 20 10 70 80 90 99

输出样例:50

自己编写代码简单如下:

1.#include

2.

3.

4.void bubbleSort(int arr[])

5.{

6.int i = 0;

7.int j = 0;

8.int t = 0;

9.

10.for(i = 0;i < 10; i++)

11. {

12.for(j = 0; j < (9 - i); j++)

13. {

14.if(arr[j + 1] < arr[j])

15. {

16. t = arr[j + 1];

17. arr[j + 1] = arr[j];

18. arr[j] = t;

19. }

20. }

21. }

22.}

23.

24.int getPassLine(int a[])

25.{

26.int i = 0;

27.

28. bubbleSort(a);

29.

30.if (a[0] >= 60)

31. {

32.return 60;

33. }

34.else

35. {

36.return ((a[4] / 10) * 10);

37. }

38.

39.}

40.

41.

42.

43.int main()

44.{

45.int a[10] = {0};

46.

47. scanf("%d %d %d %d %d %d %d %d %d %d", &a[0], &a[1], &a[2], &a[3], &a

[4], &a[5], &a[6], &a[7], &a[8], &a[9]);

48.

49. printf("%d", getPassLine(a));

50.

51.return 0;

52.}

描述:一条长廊里依次装有n(1 ≤ n ≤ 65535)盏电灯,从头到尾编号1、2、3、…n-1、n。每盏电灯由一个拉线开关控制。开始,电灯全部关着。

有n个学生从长廊穿过。第一个学生把号码凡是1的倍数的电灯的开关拉一下;接着第二个学生把号码凡是2的倍数的电灯的开关拉一下;接着第三个学生把号码凡是3的倍数的电灯的开关拉一下;如此继续下去,最后第n个学生把号码凡是n的倍数的电灯的开关拉一下。n个学生按此规定走完后,长廊里电灯有几盏亮着。注:电灯数和学生数一致。

输入:电灯的数量

输出:亮着的电灯数量

样例输入:3

样例输出:1

答案参考:

1.#include

2.

3.#define MAX_BULB_NUM 65535

4./*

5.功能: n个学生按规定走完后,长廊里电灯有几盏亮着。

6.原型:

7. int GetLightLampNum(int n);

8.

9.输入参数:

10. int n: 电灯/学生的数量。

11.

12.返回值:

13. int: 亮着的电灯数量。

14.

15.*/

16.

17.int GetLightLampNum(int n)

18.{

19.char Bulb_Flag[MAX_BULB_NUM] = {0}; //0代表灯灭,1代表灯亮

20. unsigned int i;

21. unsigned int j = 1;

22. unsigned int Count = 0;

23.

24.if ((n < 1)||(n > 65535))

25. {

26.return false;

27. }

28.

29.while ( j <= n)

30. {

31.for (int i = 1; i <= n; i++)

32. {

33.if (0 == (i%j))

34. {

35. Bulb_Flag[i-1] += 1;

36. Bulb_Flag[i-1] = Bulb_Flag[i-1]%2 ; //if操作用来反转满足条件

的灯泡状态

37. }

38. }

39. j++;

40. }

41.

42.for (i = 0; i < MAX_BULB_NUM; i++)

43. {

44.if (1 == Bulb_Flag[i])

45. {

46. Count++;

47. }

48. }

49.

50.return Count;

51.}

52.

53.int main(void)

54.{

55.int input;

56. scanf("%d",&input);

57. printf("%d",GetLightLampNum(input));

58.}

高级题样题:地铁换乘

描述:已知2条地铁线路,其中A为环线,B为东西向线路,线路都是双向的。经过的站点名分别如下,两条线交叉的换乘点用T1、T2表示。编写程序,任意输入两个站点名称,

输出乘坐地铁最少需要经过的车站数量(含输入的起点和终点,换乘站点只计算一次)。地铁线A(环线)经过车站:

A1A2A3A4A5A6A7A8A9T1A10A11A12A13T2A14A15A16A17A18

地铁线B(直线)经过车站:B1B2B3B4B5T1B6B7B8B9B10T2B11B12B13B14B15

输入:输入两个不同的站名

输出:输出最少经过的站数,含输入的起点和终点,换乘站点只计算一次

输入样例:A1 A3

输出样例:3

答案参考:

1.import java.util.*;

2.

3.

4.public class Main {

5.

6.private static int INVALID_POSITION = 255;

7.

8.class BusLine {

9. String busstop[];

10. String lineName;

11.

12.public BusLine(String line) {

13. String[] stops = line.split(" ");

14.this.busstop = new String[stops.length];

15.for (int i = 0; i < stops.length; i++) {

16.this.busstop[i] = stops[i];

17. lineName = stops[0].substring(0, 1);

18. }

19. }

20.

21./* get the stop position from the line */

22.int getStopPosition (String point) {

23.for (int i = 0; i < busstop.length; i++) {

24.if (busstop[i].equals(point)) {

25.return i;

26. }

27. }

28.return INVALID_POSITION;

29. }

30.

31.int getDistance(String pointA, String pointB) {

32.int positionA = 0;

33.int positionB = 0;

34.int len = 0;

35.

36. positionA = getStopPosition(pointA);

37. positionB = getStopPosition(pointB);

38.

39.if (positionA != INVALID_POSITION && positionB != INVALID_POSITI

ON) {

40. len = Math.abs(positionA - positionB) + 1;

41.if (lineName.equals("A") && len > (busstop.length - le

n + 2)) {

42. len = (busstop.length - len + 2);

43. }

44.

45.return len;

46. }

47.

48.return INVALID_POSITION;

49. }

50.

51. }

52.

53.

54.public int getRide(String pointA, String pointB) {

55.int i = 0;

56.int min = 255;

57. BusLine lineA = new BusLine("A1 A2 A3 A4 A5 A6 A7 A8 A9 T1 A10 A11 A

12 A13 T2 A14 A15 A16 A17 A18");

58. BusLine lineB = new BusLine("B1 B2 B3 B4 B5 T1 B6 B7 B8 B9 B10 T2 B1

1 B1

2 B1

3 B1

4 B15");

59.

60.int[] way = {255, 255, 255, 255, 255, 255, 255, 255};

61.

62. way[0] = lineA.getDistance(pointA, pointB);

63. way[1] = lineB.getDistance(pointA, pointB);

64.

65. way[2] = lineA.getDistance(pointA, "T1") + lineB.getDistance(point

B, "T1") - 1;

66. way[3] = lineB.getDistance(pointA, "T1") + lineA.getDistance(point

B, "T1") - 1;

67.

68. way[4] = lineA.getDistance(pointA, "T2") + lineB.getDistance(point

B, "T2") - 1;

69. way[5] = lineB.getDistance(pointA, "T2") + lineA.getDistance(point

B, "T2") - 1;

70.

71. way[6] = lineB.getDistance(pointA, "T1") + lineB.getDistance(point

B, "T2") + lineA.getDistance("T1", "T2") - 2;

72. way[7] = lineB.getDistance(pointA, "T2") + lineB.getDistance(point

B, "T1") + lineA.getDistance("T1", "T2") - 2;

73.

74.for (i = 0; i < 7; i++) {

75.if (min > way[i]) {

76. min = way[i];

77. }

78. }

79.

80.return min;

81. }

82.

83.public static void main(String[] args) {

84. Main m = new Main();

85. Scanner cin = new Scanner(System.in);

86. String inputStr = cin.nextLine();

87. String stops[] = inputStr.split(" ");

88.

89. System.out.println(m.getRide(stops[0], stops[1]));

90. }

91.

92.}

其实后来发现整个过程下来还是有点紧张的。数组、链表、指针、字符串、循环、枚举、排序等内容基本上都考察到了。大家借鉴下吧。我的难度比其他同学难度大了些,最后一个当时没测试通过,回来才调过。做对了两道。加油吧,毕业季里相互分享下资料,互惠互利。

2016华为硬件机试题库

华为硬件机试题目(2016版本) 1.(判断题)DRAM上电时存储单元的内容是全0,而Flash上电时存储单元的内容是全1。(4分)? A.正确? B.错误 2.(判断题)眼图可以用来分析高速信号的码间干扰、抖动、噪声和衰减。(4分)? A.正确? B.错误 3.(判断题)以太网交换机将冲突域限制在每个端口,提高了网络性能。(4分)? A.正确? B.错误 4.(判断题)放大电路的输出信号产生非线性失真是由于电路中晶体管的非线性引起的。(4分)? A.正确? B.错误 5.(判断题)1的8位二进制补码是0000_0001,-1的8位二进制补码是 1111_1111。(4分)?

B.错误 6.(判断题)洗衣机,电冰箱等家用电器都使用三孔插座,是因为如果不接地,家用电器是不能工作的。(4分)? A.正确? B.错误 7.(判断题)十进制数据0x5a与0xa5的同或运算结果为:0x00。(4分)? A.正确? B.错误 8.(判断题)硅二极管的正向导通压降比锗二极管的大(4分)? A.正确? B.错误 9.(单选题)一空气平行板电容器,两级间距为d,充电后板间电压为u。然后将电源断开,在平板间平行插入一厚度为d/3的金属板。此时电容器原板间电压变为(4分)? A.U/3? B.2U/3? C.3U/4?

10.(单选题)8086CPU内部包括哪些单元(4分)? A.ALU,EU? B.ALU,BIU? C.EU,BIU? D.ALU,EU,BIU 11.(单选题)为了避免50Hz的电网电压干扰放大器,应该用那种滤波器:(4分)? A.带阻滤波器? B.带通滤波器? C.低通滤波器? D.高通滤波器 12.(单选题)关于SRAM和DRAM,下面说话正确的是:(4分)? A.SRAM需要定时刷新,否则数据会丢失? B.DRAM使用内部电容来保存信息? C.SRAM的集成度高于DRAM? D.只要不掉点,DRAM内的数据不会丢失 13.(单选题)在RS232串口中,采用哪一种校验方式:(4分)?

华为校招·硬件技术工程师机考试题及答案

精品文档 1.(判断题)DRAM上电时存储单元的内容是全0,而Flash上电时存储单元的内容是全1。(4分) A.正确 B.错误 FLASH可保存 2.(判断题)眼图可以用来分析高速信号的码间干扰、抖动、噪声和衰减。(4分) A.正确 B.错误 3.(判断题)以太网交换机将冲突域限制在每个端口,提高了网络性能。(4分) A.正确 B.错误 4.(判断题)放大电路的输出信号产生非线性失真是由于电路中晶体管的非线性引起的。(4分) A.正确 B.错误 5.(判断题)1的8位二进制补码是0000_0001,-1的8位二进制补码是1111_1111。(4分) A.正确 B.错误 6.(判断题)洗衣机,电冰箱等家用电器都使用三孔插座,是因为如果不接地,家用电器是不能工作的。(4分) A.正确 B.错误 7.(判断题)十进制数据0x5a与0xa5的同或运算结果为:0x00。(4分) A.正确 B.错误 8.(判断题)硅二极管的正向导通压降比锗二极管的大(4分) A.正确 B.错误 9.(单选题)一空气平行板电容器,两级间距为d,充电后板间电压为u。然后将电源断开,在平板间平行插入一厚度为d/3的金属板。此时电容器原板间电压变为(4分) A.U/3 B.2U/3 C.3U/4 D.不变但电容的大小不是由 Q(带电量)或U(电压)决定的,即: C=εS/4πkd。其中,ε是一个常数, S为电容极板的正对面积, d为电容极板的距离, k则是静电力常量。而常见的平行板电容器 电容为C=εS/d.(ε为极板间介质的介电常数, S 为极板面积, d为极板间的距离。) 3电容器的电势能计算公式: E=CU^2/2=QU/2 10.(单选题)8086CPU内部包括哪些单元(4分) A.ALU,EU B.ALU,BIU C.EU,BIU D.ALU,EU,BIU 80x86从功能上分执行单元EU(Execution Unit),和总线接口单元BIU(Bus Interface Unit),执行单元由8个16位通用寄存器,1个16位标志寄存器,1个16位暂存寄存器,1个16位算术逻辑单元ALU及EU控制电路组成。 总线接口单元由4个16位段寄存器(CS,DS,SS,ES),1个16位的指令指针寄存器,1个与EU通信的内部暂存器,1个指令队列,1个计算20位物理地址的加法器∑及总线控制电路构成。 11.(单选题)为了避免50Hz的电网电压干扰放大器,应该用那种滤波器:(4分) A.带阻滤波器 B.带通滤波器 C.低通滤波器 D.高通滤波器 12.(单选题)关于SRAM和DRAM,下面说话正确的是:(4分) A.SRAM需要定时刷新,否则数据会丢失 B.DRAM使用内部电容来保存信息 C.SRAM的集成度高于DRAM D.只要不掉点,DRAM内的数据不会丢失 【解析】SRAM和DRAM都是随机存储器,机器掉电后,两者的信息都将丢失。它们的最大区别就是:DRAM是用电容有无电荷来表示信息0和1,为防止电容漏电而导致读取信息出错,需要周期性地给电容充电,即刷新;而SRAM是利用触发器的两个稳态来表示信息0和1,所以不需要刷新。另外,SRAM 的存取速度比DRAM更高,常用作高速缓冲存储器Cache。

华为机试试题汇总解析

1.第一题的题目大概是输入整型数组求数组的最小数和最大数之和,例如输入1,2,3,4则输出为5,当输入只有一个数的时候,则最小数和最大数都是该数,例如只输入1,则输出为2;另外数组的长度不超过50 #include main() { intnum[50]={0}; inti,n; printf("请输入整型数组的长度(1~50):"); scanf("%d",&n); printf("请输入整型数组的元素:"); for(i=0;inum[j]) min_num=num[j]; } intsum=min_num+max_num; printf("数组中最大与最小值之和:%d\n",sum); return0; } 2.求两个长长整型的数据的和并输出,例如输入1233333333333333。。。3111111111111111111111111.。。。,则输出。。。。

#include #include #include main() { char*num1,*num2; //两个长长整型数据 char*sum; // inttemp; int len_num1,len_num2; // 两个长长整型数据的长度 intlen_max,len_min; num1=(char*)malloc(sizeof(char)); num2=(char*)malloc(sizeof(char)); printf("输入两个长长整型数据:"); scanf("%s",num1); printf("输入两个长长整型数据:"); scanf("%s",num2); len_num1=strlen(num1); len_num2=strlen(num2); len_max=(len_num1>=len_num2)?len_num1:len_num2; len_min=(len_num1<=len_num2)?len_num1:len_num2; int len_max1=len_max; sum=(char*)malloc(sizeof(char)*len_max); memset(sum,0x00,len_max+1);//切忌初始化 for(;len_num1>0&&len_num2>0;len_num1--,len_num2--) { sum[len_max--]=((num1[len_num1-1]-'0')+(num2[len_num2-1]-'0')); } if(len_num1>0) { sum[len_max--]=num1[len_num1- 1 ]-'0'; len_num1--; } if(len_num2>0) {

华为mate8全网首发一键刷机教程

工具准备 ?刷机工具下载:刷机大师下载 ?刷机包可以去ROM基地下载,也可以直接在刷机大师里面下载。 刷机前置条件 ?手机电量充足,建议50%以上电量剩余。 ?保证手机内置存储或手机外置SD卡至少有大于ROM包100M以上的剩余容量。步骤方法 手机连接刷机大师 下载刷机大师解压后安装,开启手机USB调试模式后 (如何开启调试?),连接到刷机大师会自动安装手机端驱动,使手机保持正常的开机状态。 进行ROOT 点击“更多工具”,选择“ROOT大师"对华为mate8一键ROOT ,等待ROOT成功后自动重启。

数据备份 点击“更多工具”,选择“备份大师"对你的手机进行数据备份。 选择ROM包 选择华为mate8的刷机包或者是点击刷机大师里面的ROM基地,然后在左边点击热门品牌,搜索华为mate8,点击进去就可以见到华为mate8 ROM包。 一键刷机 准备好ROM,我们就可以开始一键刷机了,刷机开始之前中刷机大师会对手机和对刷机包

进行检查,点击“浏览”选中刚才下载好的ROM,别忘了按照提示备份好联系人、短信和应用哦。 进入“一键刷机”模式之后,我们的奇妙之旅就开始啦。接下来设备进入自动刷机模式,大 概5-15分钟后,即可完成华为mate8的一键刷机!请务必耐心等待。刷刷微博,关注一下 @刷机大师是个不错的选择哦。

耐心等待几分钟,刷机就会自动完成啦!恭喜您刷机成功,要记得及时把这刷机成功的喜悦分享到你的微博哦,分享给你的朋友们,让更多朋友用上的刷机大师,摆脱手机的“卡慢丑"的困境。手机焕然一新的感觉怎么样?赶快去下载应用吧。刷机大师内含强大的应用市场,点击“应用游戏”,快速下载你想要的应用、游戏、主题。您还可以通过二维码扫描下载应用酷(查看新版特性)快速下载应用。

华为机试(南京)-面试题

求一串字符串中出现次数最多的单词 南京 同学都陆续到华为参加了机试,题目整体难度不大,基本上都是考字符串相关的题目。这里就分享一套2012年华为南京机试C++或者C 的编程题目。 2012年华为南京机试第一题整数化成字符串 给定一个整数(有可能是负数),将整数变成字符串。函数已经声明好类似void change(int number, char s[])的形式。可以自己写用例测试。 2012年华为南京机试第二题单链表逆序 给定一个已经定义好的单链表,将单链表中的数字逆序。输入为head 指针,返回的也是一个head 指针。函数声明为void sor(Node **head)的形式。 2012年华为南京机试第三题字符串最大回文子串 给定一个字符串,寻找它的一个最大子串,该子串是回文。例如给定用例字符 串”gabcdcbaef”,那么最大回文字串是”abcdcba”。函数声明为void huiwen(char input[], int len, char output[])。 一天几个考场的题目有相同的也有不同的,基本上难度都不大。要求做前两题就可以了,有能力的可以做第三题并且计入总分。有同学做完当场就看到是100分,也有0分的,至于怎么计分的不太清楚。希望七叶草提供的2012年华为南京机试编程题对你有帮助! 武汉 题目:有一个数组a[N]如a[10]={0,1,2,3,4,5,6,7,8,9}每隔两个数删除一个数,如0,1,2(删除),3,4,5(删除),6,7,8(删除),9,到数组尾部回到数组头部继续删除,要求编写一个函数实现实现上述操作,返回最后一个数的数组下标。 函数接口:int getLast(int iLen) 参数:数组初始元素个数iLen 01 #include 02 #include 03 04 typedef struct node *List; 05 typedef struct node *PNode; 06 07 typedef struct no

华为笔试题目很全

[笔试]华为笔试集合,很全面 [此帖已被设为推荐]本人收集的一些华为笔试 华为软件工程笔试题 写一个程序,要求功能:求出用1,2,5这三个数不同个数组合的和为100的组合个数。如:100个1是一个组合,5个1加19个5是一个组合。。。。请用C++语言写。答案:最容易想到的算法是:设x是1的个数,y是2的个数,z是5的个数,number是组合数注意到0=x=100,0=y=50,0=z=20,所以可以编程为:number=0;for(x=0;x=100;x++)for(y=0;y=50;y++)for (z=0;z=20;z++)if((x+2*y+5*z)==100)number++;coutnumberendl;上面这个程序一共要循环100*50*20次,效率实在是太低了事实上,这个题目是一道明显的数学问题,而不是单纯的编程问题。我的解法如下:因为x+2y+5z=100所以x+2y=100-5z,且z=20x=100y=50所以(x+2y)=100,且(x+5z)是偶数对z作循环,求x的可能值如下:z=0,x=100,98,96,...0z=1,x=95, 93,...,1z=2,x=90,88,...,0z=3,x=85,83,...,1z=4,x=80,78,...,0......z=19,x=5,3,1z=20,x=0因此,组合总数为100以内的偶数+95以内的奇数+90以内的偶数+...+5以内的奇数+1,即为:(51+48)+(46+43)+(41+38)+(36+33)+(31+28)+(26+23)+(21+18)+(16+13)+(11+8)+(6+3)+1某个偶数m以内的偶数个数(包括0)可以表示为m/2+1=(m+2)/2某个奇数m以内的奇数个数也可以表示为(m+2)/2所以,求总的组合次数可以编程为:number=0;for(int m=0;m=100;m+=5){number+=(m+2)/2;}coutnumberendl;这个程序,只需要循环21次,两个变量,就可以得到答案,比上面的那个程序高效了许多倍----只是因为作了一些简单的数学分析这再一次证明了:计算机程序=数据结构+算法,而且算法是程序的灵魂,对任何工程问题,当用软件来实现时,必须选取满足当前的资源限制,用户需求限制,开发时间限制等种种限制条件下的最优算法。而绝不能一拿到手,就立刻用最容易想到的算法编出一个程序了事 【华为硬件笔试题1】 一选择13个题目,没有全部抄下来,涉及的课程有电路,模拟电路,数字电路,信号与系统,微机原理,网络,数字信号处理 1.微分电路 2.CISC,RISC 3.数据链路层二填空10个题目,没有全部抄下来,涉及的课程有电路,模拟电路,数字电路,信号与系统,微机原理,网络,数字信号处理有关于 1.TIC6000DSP 2.二极管 3.RISC 4.IIR三简答 1.x(t)的傅立叶变换为X(jw)=$(w)+$(w-PI)+$(w-5) h(t)=u(t)-u(t-2)问:(1),x(t)是周期的吗?(2),x(t)*h(t)是周期的吗?(3),两个非周期的信号卷积后可周期吗?2.简述分组交换的特点和不足四分析设计 1.波形变换题目从正弦波->方波->锯齿波->方波,设计电路2.74161计数器组成计数电路,分析几进制的3.用D触发器构成2分频电路 4.判断MCS-51单片机的指令正确还是错误,并指出错误原因(1)MUL R0,R1(2) MOV A,@R7(3)MOV A,#3000H(4)MOVC@A+DPTR,A(5)LJMP#1000H() 5.MCS-51单片机中,采用12Mhz时钟,定时器T0采用模式1(16位计数器),请问在下面程序中,p1.0的输出频率MOV TMOD,#01H SETB TR0LOOP:MOV TH0,#0B1H MOV TL0,#0E0H LOOP1:JNB TF0,LOOP1CLR TR0CPL P1.0SJMP LOOP 【华为硬件笔试题2】 全都是几本模电数电信号单片机题目 1.用与非门等设计全加法器 2.给出两个门电路让你分析异同 3.名词:sram,ssram,sdram 4.信号与系统:在时域与频域关系 5.信号与系统:和4题差不多 6.晶体振荡器,好像是给出振荡频率让你求周期(应该是单片机的,12分之一周期....) 7.串行通信与同步通信异同,特点,比较8.RS232c高电平脉冲对应的TTL逻辑是?(负逻辑?)9.延时问题,判错10.史密斯特电路,求回差电压11.VCO是什么,什么参数

华为机试试题汇总

1 ?第一题的题目大概是输入整型数组求数组的最小数和最大数之和,例如输入1,2,3,4则输出为5,当输入只有一个数的时候,则最小数和最大数都是该数,例如只输入1,则输出为2;另外数组的长度不超过50 #i nclude mai n() { intn um[50]={0}; in ti, n; printf("请输入整型数组的长度(1~50):"); scan f("%d",&n); printf("请输入整型数组的元素:"); for(i=0;i nu m[j]) min_num=nu m[j]; } in tsum=min_nu m+max_ num; printf("数组中最大与最小值之和:%d\n",sum); return。; } 2. 求两个长长整型的数据的和并输出,例如输入123333333333333 3.OO

3111111111111111111111111。。O,则输出。OOO #i nclude #i ncludevstri ng.h> #i nclude mai n() { char* nu ml,* num2; //两个长长整型数据 char*sum; // in ttemp; int Ien_num1,len_num2; //两个长长整型数据的长度 in tle n_ max,le n_min; nu m1=(char*)malloc(sizeof(char)); nu m2=(char*)malloc(sizeof(char)); printf("输入两个长长整型数据:"); scan f("%s", nu m1); printf("输入两个长长整型数据:"); scan f("%s", nu m2); len_nu m仁strle n(nu m1); len_nu m2=strle n(nu m2); len_ max=(le n_nu m1>=le n_nu m2)?le n_nu m1:le n_nu m2; len_ mi n=(le n_nu m1<=le n_nu m2)?le n_nu m1:le n_nu m2; int len _max1=le n_max; sum=(char*)malloc(sizeof(char)*le n_max); memset(sum,OxOO,len_max+1);〃切忌初始化 for(;le n_nu m1> 0&&le n_nu m2>0;le n_nu m1--,le n_nu m2--) { sum[len_max--]=(( nu m1[len_num1-1]-'0')+( nu m2[len_num2-1]-'0')); } if(len_num1>0) { sum[le n_max--]=nu m1[le n_nu m1- 1 ]-'0'; len_nu m1--; } if(len_num2>0) {

华为C8500刷机教程

华为c8500刷机 一.手机升级(区别刷机) 1.进入官方网站:https://www.360docs.net/doc/2712208562.html,/cn/ 2.依次点击:产品-个人终端-手机-智能手机-huawec8500-下载,你找找就可找到了。 3.下载完成后在压缩包中有一个版本升级指导书,介绍了两种升级的方法。 (一)强制升级:推荐无法正常开机的情况下升级(包括刷机后无法开机,无法进入待机界面等) 步骤一:准备一张256M以上容量的SD卡,建议使用Sandisk, Kingstone, 或Kingmax, 步骤二:在电脑格式化SD卡, 步骤三:在电脑中右键点击软件压缩包,选择解压到当前目录,解压完成后会出现一个dload目录, 步骤四:确认一下dload目录中存在update.app文件,然后将整个dload 拷贝到SD卡根目录下, 步骤五:手机在关机状态下,插入SD卡,同时按下挂机键+音量上键+开机键,手机自动进入升级模式,然后开始升级。(注意:从2.1 平台版本升级到2.2 平台版本时,需要升级两次才能成功。第一次升级在即将完成时会提示失败(这属于正常现象),需要拔掉电池(如果插着USB线,则也需要拔掉USB线),等候10秒以上,然后再插入电池,重新按下挂机键+音量上键+开机键,再次升级,即可升级成功。) 步骤六:待第二次升级进度条走满不动后,手机会自动重启,至此主升级包升级完成. (二)正常升级:在正常开机的情况下升级

1、在电脑中解压zip压缩包后将dload文件拷贝到存储卡根目录下; 2、在手机上进行此操作开始升级:设置→SD卡和手机内存设置→软件升级→SD卡升级→确认→升级。 3、等待进度完成,总计时间约4-5分钟。 二:刷机(这里只介绍卡刷) 1.在卡刷之前,如果将zip后缀的rom包拷入内存卡中,然后按向上,接听, 开机键。进入刷机模式后无法选择内存卡中的刷机包。所以在这之前我们要用recovery包来弄一下。安装过以后就可以直接刷rom包了。Recovery包有中文和英文的(区别是刷机时提示的区别)。 2.下面来介绍recovery包的用法: 有时下载的包会分不清,那么下说一下recovery包 只要看到这样的目录结构就是recovery包,安装recovery是刷机之前必须的,另外安装驱动也是装recovery的必须。 我们将这种目录结构的recovery的文件放在电脑的某个地方,将手机与电脑断开连接并关闭手机。 在关机状态下按住音量减小键+红色挂机键+开机键一段时间,会发现停留在华为开机图像,之后手机连接电脑。要确定连接成功。

华为成都上机笔试题

2010年华为软件校园招聘编程测 类别:软件C语言 编程题(共2题,第一题40分,第二题60分,共100分。请上机编写程序,按题目要求提交文件。[详见考试说明] 本试题采用自动测试用例进行评分,测试用例不对考生公开,凡不满足提交要求导致不能运行或用例不通过,不予评分)。 1. 删除字符串中所有给定的子串(40分) 问题描述:在给定字符串中查找所有特定子串并删除,如果没有找到相应子串,则不作任何操作。 要求实现函数: int delete_sub_str(const char *str, const char *sub_str, char *result_str) 【输入】str:输入的被操作字符串 sub_str:需要查找并删除的特定子字符串 【输出】result_str:在str字符串中删除所有sub_str子字符串后的结果 【返回】删除的子字符串的个数 注: I、子串匹配只考虑最左匹配情况,即只需要从左到右进行字串匹配的情况。比如:在字符串"abababab"中,采用最左匹配子串"aba",可以匹配2个"aba"字串。如果 匹配出从左到右位置2开始的"aba",则不是最左匹配,且只能匹配出1个"aba"字串。II、输入字符串不会超过100 Bytes,请不用考虑超长字符串的情况。 示例

输入:str = "abcde123abcd123" sub_str = "123" 输出:result_str = "abcdeabcd" 返回:2 输入:str = "abcde123abcd123" sub_str = "1234" 输出:result_str = "abcde123abcd123" 返回:0 2. 高精度整数加法(60分) 问题描述: 在计算机中,由于处理器位宽限制,只能处理有限精度的十进制整数加减法,比如在32位宽处理器计算机中,参与运算的操作数和结果必须在-231~231-1之间。如果需要进行更大范围的十进制整数加法,需要使用特殊的方式实现,比如使用字符串保存操作数和结果,采取逐位运算的方式。如下: 9876543210 + 1234567890 = ? 让字符串num1="9876543210",字符串num2="1234567890",结果保存在字符串result = "11111111100"。 -9876543210 + (-1234567890) = ? 让字符串num1="-9876543210",字符串num2="-1234567890",结果保存在字符串result = "-11111111100"。 要求编程实现上述高精度的十进制加法。

华为荣耀刷机教程

华为荣耀刷机教程Prepared on 21 November 2021

华为荣耀3 Outdoor是华为旗下最新出的一款手机,今天就和大家分享的是华为荣耀3刷机教程,教大家如何升级最新版本的系统固件,供机友们参考。 华为荣耀3更新官方包目前有2种升级模式,即正常升级和强制升级,接下来将为大家一一讲解。 一、刷机前准备工作: 1、检查Micro SD卡是否可以读写,SD卡的剩余空间须大于软件包,建议使用Sandisk、Kingstone、或Kingmax。 2、检查升级软件包,主要是升级的方法要掌握。 二、升级操作开始: 注意: 1、升级操作会擦除用户数据,升级前请将重要数据和应用做好备份。 2、在升级过程中,保证电池电量要大于15%。 【强制升级】 步骤一:准备一张1G以上容量的SD卡,建议使用Sandisk、Kingstone、或Kingmax。 步骤二:格式化SD卡(可选)。 步骤三:拷贝软件主升级包到“dload”文件夹(如没有需创建)到SD卡根目录,确认一下dload目录中存在UPDATE.APP文件。 步骤四:同时按住音量上、下键,按开机键,音量上下键持续按10秒以上,此时手机应该自动触发SD卡升级操作。 【正常升级】 步骤一:准备一张1G以上容量的SD卡,建议使用Sandisk, Kingstone, 或Kingmax。 步骤二:格式化SD卡(可选)。 步骤三:拷贝软件主升级包到“dload”文件夹(如没有需创建)到SD卡根目录,确认一下dload目录中存在UPDATE.APP文件。 步骤四:将SD卡插入手机开机,进入“设置”菜单,选择“存储”->“软件升级”- >“SD卡升级”。根据对话选择是否备份数据,最后选择“升级”按钮,开始升级。 三、升级验证及问题处理: 版本检查--开机后进入设置-〉关于手机-〉版本号,查看版本号正确,倒数第二项--Build number为:U9508 V100R001CHNC00B024。

华为Y511-T00(移动3G)刷机教程图解(可救砖)

华为Y511-T00(移动3G)刷机教程图解(可救砖) 华为Y511-T00(移动3G)搭载联发科MT6572双核处理器,手机成砖的教程工具摆在面前都难以救回手机。华为Y511-T00(移动3G)要怎么刷机呢?今天线刷宝小编给大家讲解一下关于华为Y511-T00(移动3G)的图文刷机教程,线刷教程和救砖教程,一步搞定刷机失败问题,跟着小编一步步做,刷机Soeasy! 华为Y511-T00(移动3G)搭载联发科MT6572双核处理器,于2013年上市,主屏尺寸4.5英寸,操作系统为AndroidOS4.2,内存512M。这款手机要怎么刷机呢?请看下面的教程。 (图1) 2:刷机准备 华为Y511-T00(移动3G)一部(电量在百分之20以上),数据线一条,原装数据线刷机比较稳定。 刷机工具:线刷宝下载 刷机包:华为Y511-T00(移动3G)刷机包 1、打开线刷宝,点击“线刷包”(如图2)——在左上角选择手机型号(华为

-Y511-T00),或者直接搜索Y511-T00 (图2) 2、选择您要下载的包(优化版&官方原版&ROOT版:点击查看版本区别。小编建议选择官方原版。), 3、点击“普通下载”,线刷宝便会自动把包下载到您的电脑上(如图3)。 (图3)

2:解析刷机包 打开线刷宝客户端——点击“一键刷机”—点击“选择本地ROM”,打开您刚刚下载的线刷包,线刷宝会自动开始解析(如图4)。 (图4) 第三步:安装驱动 1、线刷宝在解包完成后,会自动跳转到刷机端口检测页面,在刷机端口检测页面(图5)点击“点击安装刷机驱动”, 2、在弹出的提示框中选择“全自动安装驱动”(图6),然后按照提示一步步安装即可。

华为机试题及答案

华为机试题及答案 1、通过键盘输入任意一个字符串序列,字符串可能包含多个子串,子串以空格分隔。请编写一个程序,自动分离出各个子串,并使用’,’将其分隔,并且在最后也补充一个’,’并将子串存储。 测试:输入:“abc def gh i d”输出:“abc,def,gh,i,d,” #include #include void DivideString(const char *pInputStr, long lInputLen, char *pOutputStr) { int i=0,j=0; int flag=0; while(pInputStr[i]==' ') { i++; } for(;i

continue; } if(flag==1) { flag=0; pOutputStr[j++]=','; } pOutputStr[j++]=pInputStr[i]; } pOutputStr[j++]=','; pOutputStr[j]='\0'; } int main() { char test[40]; char re[40]; gets(test); DivideString(test, strlen(test), re); printf("%s",re); return 0; } 2、将输入的字符串(字符串仅包含小写字母‘a’到‘z’),按照如下规则,循

环转换后输出:a->b,b->c,…,y->z,z->a;若输入的字符串连续出现两个字母相同时,后一个字母需要连续转换2次。例如:aa 转换为 bc,zz 转换为 ab;当连续相同字母超过两个时,第三个出现的字母按第一次出现算。 测试:输入:char*input="abbbcd" 输出:char*output="bcdcde" #include #include void convert(char *input,char* output) { int i; for(i=0;i

华为试题答案

华为试题答案 1)在计算机局域网中,常用通信设备有(abd),A、集线器(HUB)B、交换机(Switch) C、调制解调器(Modem)D、路器(Router) 2)线缆标准化工作主要哪一个协会制定? (c) A、OSI B、ITU-T C、EIA D、IEEE 3)802协议族是下面的哪——个组织定义? (c) A、OSI B、EIA C、IEEE D、ANSI )衡量网络性能的两个主要指标为A、带宽B、可信度C、延迟D、距离)局域网区别与其他网络主要体现在以下方面A、网络所覆盖的物理范围B、网络所使用的传输技术C、网络的拓扑结构D、带宽)不会产生单点故障的是下列拓扑结构。A、总线型B、环型C、网状结构D、星形4)数据交换技术包括A、电路交换

B、报文交换 C、分组交换 D、文件交换5)拓扑结构会受到网络中信号反射的影响?A、网型B、总线型C、环型D、星型6)OSI参考模型按顺序有哪些? A、应用层、传输层、数据链路层、网络层、物理层 B、应用层、表示层、会话层、传输层、数据链路层、网络层、物理层 C、应用层、表示层、会话层、传输层、网络层、数据链路层、物理层 D、应用层、表示层、传输层、网络层、数据链路层、物理层7)在OSI七层模型中,网络层的功能有A、确保数据的传输正确无误B、确定数据包如何转发与路 1 C、在信道上传送比特流D、纠错与流控8)在OSI七层模型中,哪一层的实现对数据的加密。A、传输层B、表示层C、应用层D、网络层9)网络层传输的数据叫做A、比特B、包C、段D、帧10)TCP/IP协议栈中传输层的协议有

A、TCP B、ICMP C、 D、IP 11)数据从上到下封装的格式为A、比特包帧段数据B、数据段包帧比特C、比特帧包段数据D、数据包段帧比特12)物理层定义了物理接口的哪些特性?A、机械特性B、电器特性C、功能特性D、接口特性13)细铜轴电缆传输距离达,粗铜轴电缆的传输距离为A、185米B、200米C、500米D、485米)通常在网吧里,LAN 采用的拓扑结构和网线类型为A、总线型和STP B、总线型和UTP C、星形和UTP D、环型和STP )双绞线为什么能代替网络中的细同轴电缆? A、双绞线电缆可靠性高 B、双绞线电缆抗噪性更好 C、细同轴电缆更廉价 D、双绞线电缆更便于安装)在布线时,细缆和粗缆通常应用在拓扑结构中。A、星形B、环形C、树形D、总线)在局域网中,类型的光

华为 P6-C00线刷教程_刷机教程图解,救砖教程

华为P6-C00线刷教程_刷机教程图解,救砖教程 华为P6-C00:下载华为P6-C00安卓ROM刷机包,选线刷宝官网。本站所有华为P6-C00ROM刷机包都经过人工审核检测,更有刷机保为您提供刷机保险,让您无忧刷机!。华为P6-C00要怎么刷机呢?今天线刷宝小编给大家讲解一下关于华为P6-C00的图文刷机教程,线刷教程和救砖教程,一步搞定刷机失败问题,跟着小编一步步做,刷机从未如此简单! 华为P6-C00:主屏4.7英寸1280x720,800万像素,操作系统是Android4.2。这款手机要怎么刷机呢?请看下面的教程。 1:刷机准备 华为P6-C00一部(电量在百分之20以上),数据线一条,原装数据线刷机比较稳定。 刷机工具:线刷宝下载 刷机包:华为P6-C00刷机包 1、打开线刷宝,点击“线刷包”(如图2)——在左上角选择手机型号华为P6-C00,

或者直接搜索华为P6-C00 (图2) 2、选择您要下载的包(优化版&官方原版&ROOT版:点击查看版本区别。小编建议选择官方原版。), 3、点击“普通下载”,线刷宝便会自动把包下载到您的电脑上(如图3)。 (图3)

2:解析刷机包 打开线刷宝客户端——点击“一键刷机”—点击“选择本地ROM”,打开您刚刚下载的线刷包,线刷宝会自动开始解析(如图4)。 (图4) 第三步:安装驱动 1、线刷宝在解包完成后,会自动跳转到刷机端口检测页面,在刷机端口检测页面(图5)点击“点击安装刷机驱动”, 2、在弹出的提示框中选择“全自动安装驱动”(图6),然后按照提示一步步安装即可。

(图5) (图6) 第四步:手机进入刷机模式 线刷包解析完成后,按照线刷宝右边的提示操作手机(图7),直到手机进入刷机模式(不知道这么进?看这里!):

华为手机刷机教程

华为c8500刷机方法 一.手机升级(区别刷机) 1.进入官方网站: 2.依次点击:产品-个人终端-手机-智能手机-huawec8500-下载,你找找就可找到了。 3.下载完成后在压缩包中有一个版本升级指导书,介绍了两种升级的方法。 (一)强制升级:推荐无法正常开机的情况下升级(包括刷机后无法开机,无法进入待机界面等) 步骤一:准备一张256M以上容量的SD卡,建议使用Sandisk, Kingstone, 或Kingmax, 步骤二:在电脑格式化SD卡, 步骤三:在电脑中右键点击软件压缩包,选择解压到当前目录,解压完成后会出现一个dload目录, 步骤四:确认一下dload目录中存在文件,然后将整个dload拷贝到SD 卡根目录下, 步骤五:手机在关机状态下,插入SD卡,同时按下挂机键+音量上键+开机键,手机自动进入升级模式,然后开始升级。(注意:从平台版本升

级到平台版本时,需要升级两次才能成功。第一次升级在即将完成时会提示失败(这属于正常现象),需要拔掉电池(如果插着USB线,则也需要拔掉USB线),等候10秒以上,然后再插入电池,重新按下挂机键+音量上键+开机键,再次升级,即可升级成功。) 步骤六:待第二次升级进度条走满不动后,手机会自动重启,至此主升级包升级完成. (二)正常升级:在正常开机的情况下升级 1、在电脑中解压zip压缩包后将dload文件拷贝到存储卡根目录下; 2、在手机上进行此操作开始升级:设置→SD卡和手机内存设置→软件升级→SD卡升级→确认→升级。 3、等待进度完成,总计时间约4-5分钟。 二:刷机(这里只介绍卡刷) 1.在卡刷之前,如果将zip后缀的rom包拷入内存卡中,然后按向上,接听, 开机键。进入刷机模式后无法选择内存卡中的刷机包。所以在这之前我们要用recovery包来弄一下。安装过以后就可以直接刷rom包了。Recovery 包有中文和英文的(区别是刷机时提示的区别)。 2.下面来介绍recovery包的用法: 有时下载的包会分不清,那么下说一下recovery包

(完整)【硬件测试】华为2016校招·硬件技术工程师机考试题及答案,推荐文档

1.(判断题)DRAM上电时存储单元的内容是全0,而Flash上电时存储单元的内容是全1。(4分) A.正确 B.错误 FLASH可保存 2.(判断题)眼图可以用来分析高速信号的码间干扰、抖动、噪声和衰减。(4分) A.正确 B.错误 3.(判断题)以太网交换机将冲突域限制在每个端口,提高了网络性能。(4分) A.正确 B.错误 4.(判断题)放大电路的输出信号产生非线性失真是由于电路中晶体管的非线性引起的。(4分) A.正确 B.错误 5.(判断题)1的8位二进制补码是0000_0001,-1的8位二进制补码是1111_1111。(4分) A.正确 B.错误 6.(判断题)洗衣机,电冰箱等家用电器都使用三孔插座,是因为如果不接地,家用电器是不能工作的。(4分) A.正确 B.错误 7.(判断题)十进制数据0x5a与0xa5的同或运算结果为:0x00。(4分) A.正确 B.错误 8.(判断题)硅二极管的正向导通压降比锗二极管的大(4分) A.正确 B.错误 9.(单选题)一空气平行板电容器,两级间距为d,充电后板间电压为u。然后将电源断开,在平板间平行插入一厚度为d/3的金属板。此时电容器原板间电压变为(4分) A.U/3 B.2U/3 C.3U/4 D.不变但电容的大小不是由 Q(带电量)或U(电压)决定的,即: C=εS/4πkd。其中,ε是一个常数, S为电容极板的正对面积,d为电容极板的距离,k则是静电力常量。而常见的平行板电容器 电容为C=εS/d.(ε为极板间介质的介电常数, S 为极板面积, d为极板间的距离。) 3电容器的电势能计算公式: E=CU^2/2=QU/2 10.(单选题)8086CPU内部包括哪些单元(4分) A.ALU,EU B.ALU,BIU C.EU,BIU D.ALU,EU,BIU 80x86从功能上分执行单元EU(Execution Unit),和总线接口单元BIU(Bus Interface Unit),执行单元由8个16位通用寄存器,1个16位标志寄存器,1个16位暂存寄存器,1个16位算术逻辑单元ALU及EU控制电路组成。 总线接口单元由4个16位段寄存器(CS,DS,SS,ES),1个16位的指令指针寄存器,1个与EU通信的内部暂存器,1个指令队列,1个计算20位物理地址的加法器∑及总线控制电路构成。 11.(单选题)为了避免50Hz的电网电压干扰放大器,应该用那种滤波器:(4分) A.带阻滤波器 B.带通滤波器 C.低通滤波器 D.高通滤波器 12.(单选题)关于SRAM和DRAM,下面说话正确的是:(4分) A.SRAM需要定时刷新,否则数据会丢失 B.DRAM使用内部电容来保存信息 C.SRAM的集成度高于DRAM D.只要不掉点,DRAM内的数据不会丢失 【解析】SRAM和DRAM都是随机存储器,机器掉电后,两者的信息都将丢失。它们的最大区别就是:DRAM是用电容有无电荷来表示信息0和1,为防止电容漏电而导致读取信息出错,需要周期性地给电容充电,即刷新;而SRAM是利用触发器的两个稳态来表示信息0和1,所以不需要刷新。另外,SRAM 的存取速度比DRAM更高,常用作高速缓冲存储器Cache。

华为机试题 面试题

昨天下午机试三道题目: 1.字符去重,例如输入字符串:“aabbccdd”,输出字符串“abcd,要求,不改变字符的顺序。 2.求解类似于2+22+222+2222的和。 3.判断一个邮件地址是否有效。例如:huawei@https://www.360docs.net/doc/2712208562.html, 判断条件:只有一个@符号,最后四个字符是.com ;不含空格;字符只能是‘a-z’,‘A-Z’,‘1-9’,‘_’,‘.’,'@' 1.字符串首字母转换成大写 举例: 输入:this is a book 返回:This Is A Book 2.统计不同字符串的个数 举例: 输入:addfsdfasa 输出:4 3.统计数字出现的次数,最大次数的统计出来 举例: 输入:323324423343 输出:3,6 华为面向2013年招聘笔试题 笔试题目(机试,共两题) 题目一:子串分离 题目描述: 通过键盘输入任意一个字符串序列,字符串可能包含多个子串,子串以空格分隔。请编写一个程序,自动分离出各个子串,并使用’,’将其分隔,并且在最后也补充一个’,’并将子串存储。 如果输入“abc def gh i d”,结果将是abc,def,gh,i,d, 要求实现函数: void DivideString(const char *pInputStr, long lInputLen, char *pOutputStr); 【输入】pInputStr:输入字符串 lInputLen:输入字符串长度 【输出】pOutputStr:输出字符串,空间已经开辟好,与输入字符串等长; 【注意】只需要完成该函数功能算法,中间不需要有任何IO 的输入输出 示例 输入:“abc def gh i d”

相关文档
最新文档