华为机试一霸教你过华为机试_第1页
华为机试一霸教你过华为机试_第2页
华为机试一霸教你过华为机试_第3页
华为机试一霸教你过华为机试_第4页
华为机试一霸教你过华为机试_第5页
免费预览已结束,剩余51页可下载查看

付费下载

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

1、大师兄教你如何过华为机试宝典1内功心法 大华为这个大数据时代土豪金海量式的招聘又要开始了!近期听说大华为的校招机试马上就要开始了,由于华为软件岗位的招聘只有技术面跟机试是 与技术有关的内容,所以机试的地位非常重要。 对于机试,除了长期积累的软件基本功以外,还有很多可以短期训练的东西,类似于考试之前的突击, 可以迅速提高机试成绩, 就像在我 西电大杨老师考前最后一堂课一定要去,那个重点就是考点阿。,如果你是这篇机试葵花宝典的内容是针对华为软件类上机准备的,如果你认真看了本宝典 真正通过自己能力考上西电的话,想不过都难。同样想拿高级题的同学,请移步或者,刷上200道题,机试不想拿满分

2、都难。对于机试,首先应该调整好自己的心态, 不要觉得写程序很难, 机试题很难,也不要去考虑,万一机试考到自己不会的内容怎么办,要相信,机试题永远是考察每个人的基础,基础是不会考的很偏的,会有人恰好做过某个题而做出来那个题,但不会有人恰好没做过一个题而做 不出来那个题。机试之前,应该做的准备有:1、买一本算法竞赛入门经典,这本书不同于普通的算法或者编程语言的书籍,这本书既讲语言,又讲算法,由浅入深,讲的很好,能看完前几章并且把例题都做会,想通过机试 就很简单了2、调整好心态,时刻告诉自己,哪些小错误是自己以前经常犯的,最好用笔记本记录下来,还有写每道题前再看一遍, 如果遇到代码调不出来了, 先想

3、想自己是否犯过以前那些错误。就是,看了题目以后,先仔细想清楚细节,在纸上写清楚自己需要用到的变量,以及代码的 基本框架,不要急于动手去写代码不要惧怕任何一道看起来很难的题目,有不会的就去问身边会的人,让别人给自己讲清心中默念10遍C+跟C除了多了两个加号其实没有区别,会C就能上手C+大量的练习是必要且有效的看完这篇宝典,预过机试、必练此功。在这里推荐一个帖子,是机试归来的学长写的,写的很不错,里面的例题在后面的攻略中也 会提及,就在好网上。宝典二:常用招式1 :机试常用变量类型CC+常用的变量类型有很多种,想通过机试,掌握好其中的几种就可以,他们分别是int,double, stri ng,

4、charint来进行定义和读入。int类型是最常用的整数类型,对于输入类型是整形的变量,使用还有一种更大的整形变量是long long ,在机试中一般不会涉及到考察,如果考虑到运算的 过程中有可能超过int的大小,再考虑使用long long , int最大可以到达2人31级别,Io ng long最大可以到达2人63。PS:有时机试读入多个整数的时候会是这样的形式中间有一个逗号,在这种情况下,其实读入也是很简单的,可以这么写:scanf( “ d%c%d ”,&a,&b,&c);或者是:5,10seanf( “ d ”,&a);getcharO;seanf(

5、“ %d ” ,&c);有的机试题会说:两个整数之间有若干个空格符或tab字符。在这种情况下,读入的方式还是使用seanf( “ %d%d ”,&a,&b)这样,seanf函数或者cin函数都可以很好的吃掉除了 数字字符以外的字符。double 来double类型是最常用的浮点数类型,当运算涉及到小数运算的时候,需要使用定义。其中,特别需要注意的一点是,如果使用了如下语句:double x=a/b;在这里,a和b是int,那么x的值将是a和b整除后的结果,而不是想要的结果,想要得 到期望的结果,须改成double x=(a+0.0)/b;在这里,将a加上一个浮点数,程序

6、会在后台将它强制转换成一个double类型的数字,此时再除一个整数,就没有问题了string类型是遇到字符串类问题应该首选的变量,区别于字符数组ehar ,string类型是直接将字符数组封装了进去,定义string s相当于定义了一个大小特别长的字符数组。使用string的好处是,避免了使用char数组时定义数组长度过小导致越界,同时更加直观的将字符串看做了一个对象。如果要定义一个string变量,首先得包含string的头文件以及使用 C+中的标准命名空间,标准命名空间这个东西,只要记得写上就行,没有任何影响。#include<iostream> II这一句是C+的头文件,c语

7、言代码一样可以把它包含进来,只要 将程序后缀名改成.cpp即可,其他都是一样的。#in cludevstri ng.h>using n ames pace std;在不同的环境下,可能会有不同的头文件包含了stri ng的用法,可能的头文件有cstrin g,stri ng。在机试的环境中,一般使用stri ng.h 即可。定义一个string和定义其他变量方式相同:string s;读入和输出string也只需要使用cin>>s;coutvvs;这是比c语言的字符数组要简单了很多的。需要注意的是,string类型读入的时候与 char数组的scanf读入一样,都是遇到空格符

8、或者回车符就停止读入,当做一个完整字符串来处理,因此,使用stri ng处理带空格的字符串是不明智的,其他情况下是都可以的。string变量包含了很多强大的功能,如: cpp view plaincopyprint?1.si; II这么写,返回的就是字符串s第i+1位的字符,返回的类型是char型,其中,s0 是它的第一位,与字符串相同。2. s.size(); /返回字符串的长度, 返回的长度是I,则s从s0到sl-1表示的是其每 位的字符。比较3. if (s1<s2) II两个string是可以方便的使用大小于符号以及等于号来比较大小的,aaaa < abc <s1&l

9、t;s2这种,而不能用”的方式是,从左向右按位进行比较,每一位按照字典序来比较。如”bed ”,但值得注意的一点是,比较的时候应用变量进行比较,即aa” <” bb”这样,如果要比较他俩的大小,应这么写4.s1="aa" s2="bb"5. if (s1<s2) string类型还有很多强大的功能,但是对于机试来说,会使用以上三种功能就足够了。char50,char100这种字符数组与string类型很像,只不过他是C语言里面的用法,对于机试,只建议在输入带有空格字符的字符串时使用char数组,使用的方式是:gets(s);在这里,gets函

10、数区别于scanf函数的是,gets函数会直接将一整行读进来,而不会遇到 空格就停下来。常见机试题类型 初级题常见的类型无非就是字符串处理类的题目和数字处理类的题目,在这里归结如下:1 :字符串处理类 字符串所有大写转小写:1.2.for (int i=O;i<s.size();i+)if (si>=' A'&& si<=3.si=si-' A' + ' asi- ' A'返回的是两个大写字母之间的差值,比如'C 与A '的差值是2,这个差值是一个int类型,也可以直接提取出来使用。给这个

11、差值再加上字母'a ',相当于给a再往后推移二位,变成字母c'这种用法是字符串内最普遍的一种用法,小写转大写也是一样。删除满足指定要求的字符后输出:在机试中,判定对错的方式是比较输出的结果,而非检查内部的结果,因此,“删除”对于机试来说,相当于“不输出”,也就是说,不需要调用s.erase()函数,只需要在遇到被删除的字符时,跳过,不输出即可。1.for (int i=O;i<s.size();i+)2.3.if (si满足删除要求)跳过;4.else 输出 si;5.倒转字符串:与删除字符串的思路类似,倒转一个字符串,其实就是倒着输出,只需要将循环反过来就可以。

12、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<s.size();i+)</span>n umi=si-'0&

13、#39;2.<span style="white-s pace:pre">还有一种思路是不断去除以10,把余数提取出来,方法是: cpp view plaincopyprint?1.while (n !=0)2.3.<span style="white-s pace:pre"></span>nu mi=n %10;4.<span style="white-s pace:pre"></span>n=n/10;5.<span style="white-s pace

14、:pre"></span> i+;6.进制转换:进制转换又分为10进制转换成别的进制以及别的进制转换成10进制,进制转换其实特别简单,只需要记住如下代码:10进制转换成X进制cpp view plaincopyprint?1.while (n !=0)2.3.<span style="white-s pace:pre"></span>nu mi=n%x;4.<span style="white-s pace:pre"></span> i+;5.<span style=&qu

15、ot;white-s pace:pre"></span>n=n /x;X进制转换成10进制6.1.cpp view plaincopyprint?for (int i=0;i<=le ngth;i+)2.3.an s=a ns*x+ nu mi;4.其中,numi表示的是该x进制数的每一位,比如一个二进制数101,用这种转换方式去转换,ans的值从i=0到i=2处理后分别是1,2,5。排序:应对机试,C+中自带的sort排序这个东西,其实不需要学习冒泡啊、 快排啊之类的算法,函数就可以很好的解决,请看下面一段代码1.cpp view plaincopyprin

16、t?</prexpre n ame="code" class="c pp">#in clude<iostream>2.#in clude<algorithm> /这个是包含sort函数的头文件3.using n ames pace std;4.int arr100, n;5.int cmp(int x,int y) / 这个函数是sort函数比较两个元素优先级的函数,在这里计算出两个元素的优先级,然后返回即可。7.6.int importan ce1,i mportance2;8./此处插入代码计算x,y的重要性9.r

17、etur n imp orta nce1<i mp orta nce2; /此处返回小于号,意思是优先级小的在前,号,如return x<y;则数组会由小到大排序10.11.int mai n()12.13.cin>>n;14.for (i nt i=0;i <n ;i+) cin> >arri;15.sort(arr,arr+ n,cmp);16.return 0;17.这一段代码的作用是读入 n个数字,然后按优先级进行排序,排序的比较方法在 cmp函数中实现,排序的具体过程不需要考虑。可以看到,其实只需要记住sort函数的用法,要通过机试,排序算法

18、是根本不需要学习的,so easy !总结:机试中,掌握好 int,double ,string ,char,还有数组,就足够用了,但考察的内容不仅仅是上述这些, 想要通过机试,还是应该多多练习, 多多学习,不局限于上面所说的内容宝典三:擂台实战首先推荐一个网站:acm.xidia nd/,上面的很多题目难度很适合机试,如: 很简单:1031,1120,1122,1121,1103,1104,1281 简单:1049,1181,1182,1279,1280 , 中等:1106,1108 ,1183,1288.难:1105,1282,1283 ,大家可以根据自己的水平去训练,其实里面的难题也是很

19、简单的,归类到题库中的话都属于简单题,只要好好看书学习都是可以做出来的,F面放几道例题,这些题都是机试很有可能考的题目,或者是非常类似的题目,已经有了仔细的注释,代码写的仓促1.简单题2.题目描述17. */18. #include<iostream>3.输入一个字符串,删除其中所有的数字,所有大写字母改成小写,其他不变,并输出4.5.输入描述6.一个字符串,保证没有空格,以回车符结束,字符串长度<=207.输出描述8.一个字符串,为题目要求的结果9.10.输入样例 11. aAbB13A 12.输出样例 13. aabba14.15.解题思路:模拟题目要求即可,遇到数字就跳

20、过不输出,遇到大写字母就改成小写。16.19. #include<string.h> 20. using namespace std;21.int mai n()22.23.stri ng s;24.cin >>s;25.for (i nt i=O;i<s.size();i+) /枚举字符串的每一位26.27.if (si>='0' && si<='9') con ti nue; /遇到数字就跳过28.if (si>='A' && si<='Z'

21、) si=si-'A'+'a' /遇到大写字母就改成小写29.cout<<si;30.31.cout<<e ndl;32.33.</s pan>34.简单题35.题目描述36.输入一个字符串,统计其出现频率最高的字符,并输出。若存在两个字符出现频率相同,则输出字典序较小的那一个38.输入描述39.一个字符串,保证没有空格,以回车符结束,字符串长度<=2040.输出描述37.41.一个字符42.43.输入样例44.aabbaabb45.输出样例46.a47.48.解题思路:做一个频率数组来统计所有字符的出现频率,机试时候不

22、会有汉字输入,因此只考虑输入是 ASCII编码的情况。49.50.*/51.#in clude<iostream>52.#in clude<stri ng.h>53.using n ames pace std;54.int f200; / 频率数组55.int biggest=0; / 记录最大的值56.int mai n()57.58.memset(f,0,sizeof(f); / 将f中的全部元素变成 0 ,写循环也可59.stri ng s;61.for (i nt i=O;i<s.size();i+) /枚举字符串的每一位60.cin >>s;

23、63.63.int num=si; / 将 si转换成它的 ascii 码78.64.fn um+; / 频率次数加165.biggest=max(biggest,fsi); /比较找出最大的66.67.for (i nt i=0;i<=129;i+)/枚举所有的字符的频率,找出频率最高且字典序最小的那一个68.if (fi=biggest) /如果满足要求69.70.cout<<(char)(i)<<e ndl;71.break; /这句break保证了我们只会输出一个满足要求的结72.73.74./*75.简单题76.题目描述77.输入一个数字,将其倒序输出,

24、并输出其各个位上的乘积79.输入描述80.一个正整数,保证在int范围内81.输出描述99.stri ng s;82.两个数字,用空格隔开,第一个数字为其倒序的值,第二个数字是各个位上的乘积83.84.输入样例85.13486.输出样例87.431 1288.89.90.解题思路:删繁就简,直接当字符串读入,处理就简单多了。91.PS:此处不用纠结于题意,没有特别强调是按照一个数的格式输出,因此可以有前导092.93.*/94.#in clude<iostream>95.#in clude<stri ng.h>96.using n ames pace std;97.in

25、t mai n()98.100.int an s=1;101.cin>>s;102.for (int i=s.size()-1;i>=0;i-)104.122.104.cout<<si; /倒序输出每一位105.an s=a ns*(si-'0'); /ans累乘每一位的值106.107.cout<<' '<<a ns<<e ndl;108.109.中级题110.题目描述111.输入10个数字,按各个位上的和从小到大排序,如果相同,则按数字从小到大排序。112.113.输入描述114.10个正整数

26、,保证都在int范围内,用空格隔开115.输出描述116.10个数字,其从大到小的值,用空格隔开,最后一个数字后不加空格117.118.输入样例119.11 3 2 4 5 9 8 7 10 6120.输出样例121.10 2 11 3 4 5 6 7 8 9123.解题思路:调用 C+自带的sort函数,重新改写 com pare 函数即可。141.143.124.*/125.#in clude<iostream>126.#in clude<stri ng.h>127.#in clude<algorithm> /这个是调用sort函数必须的头文件128.u

27、sing n ames pace std;129.int arr10;130.int cal(i nt x) /计算一个数字各个位上的和131.132.int an s=0;133.while (x!=0)134.135.an s+=x%10;136.x/=10;137.138.return an s;1139.140.int cmp (i nt i,i nt j)142.if (cal(i)!=cal(j) /如果两个数字各个位上的和不相同,则按照各个位上的和来排序144.retur n cal(i)<cal(j);145.146.else/否则,即两个数各个位上的和相等,则按照数字本

28、身来排序147.148.return i<j;149.150.151.int mai n()152.153.for (in t i=0;i<=9;i+) cin> >arri;154.sort(arr,arr+10,c mp);155.for (int i=0;i<=9;i+)156.157.cout<<arri;158.if (i!=9) cout<<' ' /如果不是最后一个数字,则需要在两个数字中间输出一个空格。159.160.cout<<e ndl;161.PS :最后一个输出的后面一定要跟回车符而不是空

29、格符162.163.中级题164. 题目描述165.你有一个容量为100的箩筐,给你30个物品,每个物品的体积已知问:最多能装多少个物品进箩筐166.输入描述167.一行30个正整数,用空格隔开,表示每个物品的体积168.输出描述169.一个数字,为最多能装下的物品数170.171.输入样例(此处用 3个物品作为样例,实际读入为 30 个)172.5 59 100173.输出样例176.178.#in clude<iostream>179.#in clude<stri ng.h>180.#i nclude<algorithm> /这个是调用sort函数必须的

30、头文件181.using n ames pace std;182.int arr31;183.int mai n()174.175.解题思路:利用性价比对所有物品进行排序,优先装性价比高的, 在此题中,性价比就是物品的体积*/177.184.185.for (int i=0;i<=29;i+) cin> >arri;186.sort(arr,arr+30); II从小到大排序187./从最小的开始装框,直到装满了为止。188.int sum=0;189.for (int i=0;i<=29;i+)190.191.if (sum+arri>100) break; I

31、I如果不能装了就立刻停下来192.sum=sum+arri; II否则就把这个也装进去193.194.II程序跳出的那个位置的i,就是我们一共装了的数量,如果全部都装了,则i=30195.cout<<i<<e ndl;196.197.初级题:(此题是我曾经做的机试题)198.扌田述:10个学生考兀期末考试评卷兀成后,A老师需要划出及格线,要求如下:199.(1)及格线是10的倍数;200.(2)保证至少有60%的学生及格;201.如果所有的学生都高于60分,则及格线为60分202.及格线越高越好,但最高不能超过60203.输入:输入10个整数,取值0-100204.输出

32、:输出及格线,10的倍数205.输入样例:61 51 49 30 20 10 70 80 90 99206.输出样例:50207.208.解题思路:从高到低枚举及格线,输出第一个满足要求的及格线就是答案209.*/210.#in clude<iostream>211.using n ames pace std;212.int arr10;213.int mai n()214.215.for (int i=0;i<=9;i+) cin> >arri;216.int line;217.for (li ne=60;li ne>=0;li ne-=10) /从高到低

33、枚举分数线218.219.int num=0; /该变量用来统计这个分数线下,是否超过60%同学及格220.for (int i=0;i<=9;i+)221.if (arri>=line)/如果分数大于等于及格线,说明在这个分数线下是及格的222.nu m+;223.if (num>=6)/ 如果超过60%的人及格,在这里 10的60%就是6224.break; /满足了要求就立刻 break,说明这是分数线225.226.cout<<li ne<<e ndl;227.228.中级题:100分(此题是我曾经做的机试题)229.n-1、每盏电灯由一个拉线

34、开关控制。开始,电灯全部关着。描述:一条长廊里依次装有 n(1 < nW 65535)盏电灯,从头到尾编号1、2、3、现,1*12=12,2*6=12,3*4=12,所以其因数都是一一对应的,也就是,1拉的那一下被12230.有n个学生从长廊穿过。第一个学生把号码凡是1的倍数的电灯的开关拉一下;接着第二个学生把号码凡是2的倍数的电灯的开关拉一下;接着第三个学生把号码凡是的倍数的电灯的开关拉一下;如此继续下去,最后第n个学生把号码凡是 n的倍数的电灯的开关拉一下。n个学生按此规定走完后,长廊里电灯有几盏亮着。注:电灯数和学生数一致。231.232.输入:电灯的数量233.输出:亮着的电灯数

35、量234.样例输入:3235.样例输出:1236.237.解题思路1 :这道题,如果要模拟的话,当然是可以的,但对于代码基础较差的同学写起来就比较吃力了,在这里写模拟的做法238.解题思路2 :在这道题上面多思考思考,可以看出,对于任何一个灯来说,比如12,其因数有1,2,3,4,6,12。说明,编号为1,2,3,4,6,12的学生分别要拉它一下,在这里发242.#in clude<iostream>243.#in clude<stri ng.h>244.using n ames pace std;245.in t vis65536 ,n;246.int mai n()

36、抵消了,2拉的那一下被6抵消了,那么谁不会被抵消呢?答案是平方数,比如9的因数是1,3,9,那么3*3=9,而3只拉一次,所以不会被抵消。因此,这道题的答案就是,输入的n以内的平方数个数,等于(int)sqrt(n)。239.从这道题可以看出,编程的很多时候,多思考比多动笔要有用的多。240.*/241.247.248.cin>>n;249.memset(vis,0,sizeof(vis); /这句话的意思是把vis数组清0,0表示此刻灯是关着的,表示是开着的250.for (int i=1;i<=n;i+)/枚举每一个学生的编号251.for (int 戸;j<=n;

37、j+=i)/从戸 开始,每次给j+i,使得i,i*2,i*3,.,这些灯全部都被拉一次开关252.visj=1-visj; /1->0,0->1,本质上都是用1减去它本身。253.int an s=0; /统计答案254.for (in t i=1;i<=n;i+)255.if (visi=1) /如果现在是开灯状态,答案加一256.257.cout<<a ns<<e ndl;上面的所有代码能够看懂,并且自己实现一遍,再练上几个类似的题,过机试肯定没问题,能够轻松写出上面的代码,那么机试优秀肯定没问题。想拿满分,请去学习搜索(dfs,bfs),树(先中

38、后序遍历,及已知遍历对树的构造等),栈(怎么用数组模拟栈,栈的特性等),图论(最短路算法,连通性判断等),动态规划(这个就太多了,入门请看背包九讲)等等等等。虽然写了这么多,但高级题其实并没有这么难,高级题主要考搜索比较多一些,偶尔会有树、栈、图、动态规划的题目,不过,要想当个好码农,算法和数据结构基础是必须的机试葵花宝典就写到这里了,大师兄在大华为等你们哪,来了我们一起在练独孤九剑,六脉神剑。附好网上另一师兄机试心得,共小弟妹们参考:华为机试成功归来,与小伙伴们分享下经验前段时间参加华为机试, 机试通过的可以优先录取, 优先选择岗位和工作地, 关键是面的好,还可以谈更高的工资,最多在西安可以

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

40、同学抽到的跟这个大同小异吧。大家自己编写下,对即将开始的面试都会有帮助的。考试内容:数组、链表、指针、字符串、循环、枚举、排序等(从考过的同学那儿总结的可能不全)试题结构:考试总共三道题,说是难中易,初级题(60分)、中级题(100分)、高级题(160分),最难的接近一百行,说多不多,但自己敲出来还是费了点劲,考试时间:两个小时。平时练得少可能稍微捉鸡点。最简单的一个描述:10个学生考完期末考试评卷完成后,A老师需要划出及格线,要求如下:及格线是10的倍数;保证至少有60%的学生及格;(3)如果所有的学生都高于60分,则及格线为60分输入:输入10个整数,取值0-100输出:输出及格线,10的

41、倍数输入样例:61 51 49 30 20 10 70 80 90 99输出样例:50自己编写代码简单如下:1.#in elude <stdio.h>.void bubbleSort(i nt arr)6.int i = 0;7.int j = 0;8.int t = 0;9.10.for(i = 0;i < 10; i+)2.for(j = 0; j < (9 - i); j+)13.14.if(arrj + 1 < arrj)15.16.t = arrj + 1;17.arr j + 1 = arr j;18.arr j =

42、t;2.23.24.int get PassL in e(i nt a)26.int i = 0;28.bubbleSort(a);29.30.if (a0 >= 60)31.32.return 60;33.34.else35.36.return (a4 / 10) * 10);3.int mai n()44.45.int a10 = 0;46.47.scan f("%d %d %d %d %d %d %d %d %d %d", & a0.& a1, & a2, & a3,&am

43、p; a4, & a5, & a6, & a7, & a8, & a9);49.49.prin tf("%d", get PassLi ne(a);2.4./*50.51.return 0;52.描述:一条长廊里依次装有n(1 < nW 65535)盏电灯,从头到尾编号 1、2、3、n-1、n。每盏电灯由一个拉线开关控制。开始,电灯全部关着。有n个学生从长廊穿过。第一个学生把号码凡是1的倍数的电灯的开关拉一下;接着第二输入:电灯的数量输出:亮着的电灯数量样例输入:3样例输出:1合案参考:1.#in clude <stdio

44、.h>3的倍数的个学生把号码凡是 2的倍数的电灯的开关拉一下;接着第三个学生把号码凡是电灯的开关拉一下;如此继续下去,最后第n个学生把号码凡是 n的倍数的电灯的开关拉一下。n个学生按此规定走完后,长廊里电灯有几盏亮着。注:电灯数和学生数一致。3.#defi neMAX_BULB_NUM 655355.功能:n个学生按规定走完后,长廊里电灯有几盏亮着。6.原型:7.int GetLightLa mpN um(i nt n);8.9.输入参数:10.int n:电灯/学生的数量。11.12.返回值:13.int:亮着的电灯数量。14.15.*/16.17.int GetLightLa mpN

45、 um(i nt n)18.19.char Bulb_FlagMAX_BULB_NUM = 0;0代表灯灭,1代表灯亮20.un sig ned int i;21.un sig ned int j = 1;22.un sig ned int Count = 0;23.24.if (n < 1)|( n > 65535)25.26.return false;28.28.29.while ( j <= n)30.31.for (int i = 1; i <= n; i+)5.Bulb_Flagi-1+= 1;36.Bulb_Flagi-1 = Bulb_

46、Flagi-1%2 ;/if操作用来反转满足条件的灯泡状态37.38.39.j+;40.41.42.for (i = 0; i <MAX_BULB_NUM; i+)43.44.if (1 = Bulb_Flagi)46.Coun t+;9.50.retur n Count;51.52.53.int mai n(void)54.55.int input;56.scan f("%d", &input);B1557.prin tf("%d",GetLightLa mp Num(i np ut);58.高级题样题:地铁换乘描述:

47、已知2条地铁线路,其中 A为环线,B为东西向线路,线路都是双向的。经过的站点名分别如下,两条线交叉的换乘点用T1、T2表示。编写程序,任意输入两个站点名称,输出乘坐地铁最少需要经过的车站数量(含输入的起点和终点,换乘站点只计算一次)地铁线A (环线)经过车站:地铁线B (直线)经过车站:A1 A2 A3 A4 A5 A6 A7 A8 A9 T1 A10 A11 A12 A13 T2 A14A15 A16 A17 A18B1 B2 B3 B4 B5 T1 B6 B7 B8 B9 B10 T2 B11 B12 B13 B14输入:输入两个不同的站名输出:输出最少经过的站数,含输入的起点和终点,换乘

48、站点只计算一次输入样例:A1 A3输出样例:3合案参考:.import java.util.*;2.3.4.p ublic class Mai n 6.5.private static int INVALID. POSITION = 255;7.8.class BusL ine 9.String busst op ;10.Stri ng lin eName;11.12.p ublic BusL in e(Stri ng line) 13.Stri ng stops = lin e.s pl it(” ");14.this.busst op = new Strin gst op s.le ngth;15.for (int i = 0; i < stop s.le ngth; i+) 16.this.busst op i = stop si;17.lin eName = stop s0.substri ng(0, 1);21./* get the stop po siti on from the line */22.int getSt opP ositi on (Str

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论