过桥问题(1)
火车过桥问题1

行程问题之火车过桥问题(一)(相遇与追及的综合运用)相关公式:路程=时间x速度相遇时间=总路程÷速度和=路程差÷速度差注意:这里的相遇,是一车头与另一车头的相遇或者是一车头与另一车尾的相遇……1,一列火车长200米,它以每秒10米的速度穿过200米长的隧道,从车头进入隧道到车尾离开隧道共需要多少秒?2,一列火车长700米,以每分钟400米的速度通过一座长900米的大桥,从车头上桥到车尾离开桥共需要多少分钟?3,一列火车长300米,以每秒30米的速度通过一座长为1200米的大桥,问火车车尾离开大桥所需的时间是多少秒?4,一列火车全长400米,以每小时40千米的速度通过一条长2.8千米的隧道,共需多少时间?5,一列火车通过一条长1260米的桥梁(车头上桥直到车尾离开桥尾)共用了60秒,火车穿越长2010米的隧道用90秒。
问:这列火车的速度和车身各是多少?6,一列火车通过530米的桥需要40秒,以同样的速度穿过380米山洞需要30秒,求这列火车的速度和全长各是多少?7,一列火车通过440米的桥需要40秒,以同样的速度穿过310米的隧道需要30秒。
这列火车的速度和车身各是多少?8,一座铁路桥全长1200米,一列火车开过大桥需花费75秒,火车开过路旁电杆,只要花费15秒,那么火车全长是多少米?9,列车通过450米的大桥用了23秒,经过站在铁路边的扳道工人用了8秒。
列车的速度和长度各是多少?10,一列火车长700米,从路边的一棵大树旁通过,用2分钟。
以同样的速度通过一座大桥,从车头上桥到车尾离桥共用4分钟,这座大桥长多少米?11,小明站在铁路边,一列火车从他身边开过用了3分钟,已知火车长480米,用同样的速度通过一座大桥用了8分钟,这座大桥的长度是多少?12,一列火车通过一条长450米的铁桥用了23秒,经过一位站在路边的路人用了8秒。
求这列车的车速与车身长。
13,有两列火车在双轨道上向同一方向前进,快车车长120米,每秒行30米,慢车车长为114米,每秒行21米,从快车车头遇到慢车车尾到两车完全离开需要多长时间?14,有两列火车,一列长113米,每秒行22米,另一列火车长127米,每秒行18米。
7.8.第二章过桥问题(1) (1)

第二章过桥问题第一节【题型概述】火车通过大桥是指火车头上桥到火车尾脱离桥面,所以,尽管说是通过一座桥,其实,火车要跑的路程却是桥的长度加上整列火车的长度,即(桥长+车长)÷速度=时间。
例题1:一列火车长230米,每分钟行400米,全车通过一座长1370米的大桥需要几分钟?【思路点拨】火车通过大桥是指车头上桥到车尾离开大桥,如图所示:假设A点代表火车头,当火车通过大桥时,A点实际经过的路程是火车的长度与桥长的总和。
所以,有了这个总路程和火车的速度就可以求出需要的时间。
(1370+230)÷400=4(分钟)答:需要4分钟。
练习1.一列火车长190米,每秒行9米,全车通过一座长368米的大桥需要多少时间?2.南京长江大桥长6700米,一列长100米的客车,以每分钟400米的速度通过大桥,需要多少分钟?3.“胜利号”高速列车长141米,每秒钟行38米,全车通过429米长的一条隧道,需要多少时间?例2:一辆火车360米,每秒行15米,它通过一个山洞需40秒。
这个山洞长多少米?【思路点拨】这里是“过隧道”,它与“过桥”实质上是一样的。
根据“(隧道长+车长)÷速度=时间”,可以知道:隧道长=速度×时间-车长,所以12×42-150=504-150=354(米)答:这个隧道长354米。
练习4.一列火车长360米,每秒行15米,它通过一个山洞需要40秒,这个山洞长多少米?5.一列火车长285米,每秒行20米,它通过一座桥需17秒,这座桥长多少米?6.两列相向而行的火车恰好在某道口相遇,如果甲列车长225米,每秒行驶25米,乙列车每秒行驶20米,甲、乙要列车错车时间是9秒,求:(1)乙列车长多少米?(2)甲列车通过这个道口用多少秒?(3)坐在甲列车上的小明看到乙列车通过用了多少秒?(2004年全国“希望杯”小学数学竞赛题)。
过桥问题(含答案)-

过桥问题之答禄夫天创作过桥问题也是行程问题的一种。
首先要弄清列车通过一座桥是指从车头上桥到车尾离桥。
列车过桥的总路程是桥长加车长,这是解决过桥问题的关键。
过桥问题也要用到一般行程问题的基本数量关系:过桥问题的一般数量关系是:过桥的路程 = 桥长 + 车长车速 = (桥长 + 车长)÷过桥时间通过桥的时间 =(桥长 + 车长)÷车速桥长 = 车速×过桥时间—车长车长 = 车速×过桥时间—桥长后三个都是根据第二个关系式逆推出的。
火车通过隧道的问题和过桥问题的道理是一样的,也要通过上面的数量关系来解决。
【典型例题】例1:一列客车经过南京长江大桥,大桥长6700米,这列客车长100米,火车每分钟行400米,这列客车经过长江大桥需要多少分钟?分析与解:从火车头上桥,到火车尾离桥,这之间是火车通过这座大桥的过程,也就是过桥的路程是桥长 + 车长。
通过“过桥的路程”和“车速”就可以求出火车过桥的时间。
(1)过桥路程:6700 + 100 = 6800(米)(2)过桥时间:6800÷400 = 17(分)答:这列客车通过南京长江大桥需要17分钟。
例2:一列火车长160米,全车通过440米的桥需要30秒钟,这列火车每秒行多少米?分析与解:要想求火车过桥的速度,就要知道“过桥的路程”和过桥的时间。
(1)过桥的路程:160 + 440 = 600(米)(2)火车的速度:600÷30 = 20(米)答:这列火车每秒行20米。
想一想:你能根据例2改编一个求“火车长”的题目吗?例3:某列火车通过360米的第一个隧道用了24秒钟,接着通过第二个长216米的隧道用了16秒钟,求这列火车的长度?分析与解:火车通过第一个隧道比通过第二个隧道多用了8秒,为什么多用8秒呢?原因是第一个隧道比第二个隧道长360—216 = 144(米),这144米正好和8秒相对应,这样可以求出车速。
专题09 列车过桥问题(一)-2022-2023学年小升初数学行程问题高频常考易错真题专项汇编

专题09 列车过桥问题(一)2022-2023学年小升初数学行程问题高频常考易错真题专项汇编一.解答题1.一列火车长180米,每秒行25米.全车通过一条120米长的山洞,需要多少时间?2.一列火车长670米,它以32米/秒的速度行驶,从车头进入隧道到车尾完全离开隧道共用了80秒,这个隧道的长度是多少?3.一次检阅,接受检阅的一列彩车车队共30辆,每辆车长4米,前后每辆车相隔5米。
这列车队共排列了多长?如果车队每秒行驶2米,那么这列车队要通过535米长的检阅场地,需要多少时间?4.实验小学三、四年级学生528人排成四路纵队到野外参加实践活动,队伍前进的速度是每分钟25米,前后两人都相距1米,现在队伍要通过一座桥,整个队伍从上桥到离桥共用16分钟,这座桥长米.5.一列长50米的火车,穿过200米的山洞用25秒钟,这列火车每秒行多少米?6.一列火车经过南京长江大桥,大桥长6700米,这列火车长140米,火车每分钟行400米,这列火车通过长江大桥需要多少分钟?7.一座大桥长3600米,一列火车以每分钟900米的速度通过大桥,从车头上桥到车尾离开大桥要5分钟,求火车长是多少米?8.一辆长20米的汽车,以每秒16米的速度行驶.要全部通过316米的隧道,用多长时间?9.明明坐在列车上,火车过桥时,从他看到桥头起到看到桥尾时间是30秒,这座桥长600米.而后,他又看到迎面开来一列货车,他从看到货车车头至车尾共用了20秒,货车长700米,这列货车速度是每秒钟米.10.一个车队以4米/秒的速度缓缓通过一座长200米的大桥,共用115秒.问:这个车队共有多少米?11.一列火车长180米,每秒行20米,要经过一座长620米的桥,求全车通过需要多少秒?12.少先队员248人排成两路纵队去参观科技展览,队伍行进的速度是每分钟28米,前后两人都相距1米,现在队伍要通过一座长45米的地下通道,整个队伍从进通道到离开通道需几分钟?13.一列火车长180米,以每分钟1.3千米的速度通过一座大桥.已知从车头上桥到车尾离桥共用了0.8分钟,这座桥长多少米?14.快车每秒行30米,慢车每秒行24米.如果相向而行,坐在快车上的人看到慢车经过窗口的时间是8秒;坐在慢车上的人,看到快车经过窗口的时间是10秒.请问两列火车的长度各是多少?15.一列火车通过小明身边用了10秒钟,通过一座长486米的铁桥用了37秒,问这列火车多长?16.一列火车通过长174米长的隧道,用了33秒,当它通过长594米的大桥时,速度比原来提高13,结果用了51秒.求:①火车过桥时的速度?②火车车身的长度?17.一列火车长100米,以每秒25米的速度通过一座400米长的大桥,共需多长时间?18.一条隧道长360米,某列火车从车头入洞到全车进洞用了8秒钟,从车头入洞到全车出洞共用了20秒钟.这列火车长多少米?19.一座大桥全长2000米,一列火车通过大桥时每分钟行驶250米,从火车头开始上桥到车尾离开桥共需10分钟,这列火车车身有多长?20.一列火车长180米,全车要通过420米的桥要20秒,则火车的速度是多少?21.一列火车长800米,以每秒钟20米的速度通过长2400米的大桥,从上桥到下桥共需多少分钟/22.一实小五年级同学去参观科技展览,422人排成两路纵队,相邻两排前后各相距0.5米,队伍每分钟走65米.现在要通过一座长1065米的桥,从排头两人上桥到排尾两人离开桥,共需要多少分钟?23.一列长70米的火车要通过一座长570米的大桥,火车每秒钟行20米,火车全部过桥需要多少时间?24.一列火车长180米,以每秒15米的速度通过一座大桥用了60秒.大桥长多少米?25.一条隧道长360米,有一列火车以每秒25米的速度经过这条隧道,从车头进隧道到车尾离开隧道共用20秒.这列火车长多少米?26.一列长200米的火车完全通过一座700米长的隧道用时45秒,它以相同的速度,多少秒可以完全通过一座800米长的大桥呢?27.一座铁桥长1000米,一列火车从上桥到车尾离开共用120秒.已知整个列车完全在桥上行驶的时间是80秒,求火车的长度与火车的速度?28.小欢站在铁路旁,一列火车从他身边过时,他看了一下表,车尾全部过完时他又看了一下表,共14秒.这列火车从车头进大桥到车尾离开大桥,共用49秒,这座大桥长700米,火车匀速前进.火车的长度是多少?29.一列长150米的火车以每秒16米的速度穿越一条隧道,火车穿越隧道(从进入隧道直至完全离开)用了49秒,这条隧道长多少米?30.一座大桥长2400米.一列火车通过大桥时每分钟行驶940米,从车头上桥到车尾离桥共需3分钟,这列火车长多少米?提示:火车行驶从车头上桥到车尾离桥所行驶的路程 桥长 火车长.参考答案一.解答题1.【分析】从车头驶入山洞至车尾离开山洞这叫火车完全通过山洞,火车完全通过山洞走的路程等于山洞与火车长度之和;已知路程、火车行驶的速度,由速度公式可求出火车通过山洞的时间.【解答】解:(180120)25+÷=÷30025=(秒)12答:需要12秒.【点评】本题考查了速度公式变形公式的应用,是一道基础题,知道火车完全通过山洞的路程是山洞与火车长度之和是解题的关键.2.【分析】用32乘80求出总的路程,再减去火车长即可。
过桥问题(含答案)-

过桥问题过桥的路程= 桥长+ 车长车速= (桥长+ 车长)÷过桥时间通过桥的时间=(桥长+ 车长)÷车速桥长= 车速×过桥时间—车长车长= 车速×过桥时间—桥长例1:一列客车经过南京长江大桥,大桥长6700米,这列客车长100米,火车每分钟行400米,这列客车经过长江大桥需要多少分钟?例2:一列火车长160米,全车通过440米的桥需要30秒钟,这列火车每秒行多少米?例3:某列火车通过360米的第一个隧道用了24秒钟,接着通过第二个长216米的隧道用了16秒钟,求这列火车的长度?例4:某列火车通过342米的隧道用了23秒,接着通过234米的隧道用了17秒,这列火车与另一列长88米,速度为每秒22米的列车错车而过,问需要几秒钟?例5、一列火车通过360米的第一个隧道用了24秒钟,接着通过第二个长216米的隧道用了16秒钟,求这列火车的长度。
例6.某列车通过342米的隧道用了23秒,接着通过288米的隧道用了20秒,这列火车与另一列长128米、速度为22米的列车错车而过,问需要几秒钟?例7、一位旅客乘火车以每秒15米的速度前进,他看见对面开来的火车只用2秒钟就从他身边驶过。
如果知道迎面来的火车长70米,求它每小时行驶多少千米?例8、小芳站在铁路边,一列火车从她身边开过用了2分钟。
已知这列火车长3 60米,以同样的速度通过一座大桥,用了6分钟,这座大桥长多少米?例9、一列火车经过一根有信号灯的电线杆用了9秒,通过一座468米长的铁桥用了35秒。
这列火车长多少米?例10. 小明和小兰为了测量飞驰而过的火车的的长度和速度,他们拿了两块秒表,小明用一块记下了火车从他面前通过的时间是15秒,小兰用另一块记下了从车头到第一根电线杆至车尾过第二根电线杆所花的时间是20秒。
已知两根电线杆之间的距离是100米,火车先经过第一根电线杆,再经过第二根电线杆。
这列火车的长度和速度各是多少?例11、少先队员346人排成两路纵队去参观科技成果展览。
05008过桥问题(1)

过桥问题(1)过桥问题是行程问题的一种情况。
我们所说的列车通过一座桥,是指从车头上桥到车尾离桥的这个过程。
这时,列车行驶的总路程是桥长加上车长,这是解决过桥问题的关键。
过桥问题也是在研究路程、速度、时间这三量之间的关系。
过桥问题的一般数量关系是:路程=桥长+车长车速=(桥长+车长)÷通过时间通过时间=(桥长+车长)÷车速桥长=车速×通过时间-车长车长=车速×通过时间-桥长通过隧道的问题和过桥问题的道理是一样的,也要通过上面的数量关系来解决。
【典型例题】例1. 一列火车经过南京长江大桥,大桥长6700米,这列火车长140米,火车每分钟行400米,这列火车通过长江大桥需要多少分钟?分析:这道题求的是通过时间。
根据数量关系式,我们知道要想求通过时间,就要知道路程和速度。
路程是用桥长加上车长。
火车的速度是已知条件。
+=(米)总路程:67001406840÷=.(分钟)通过时间:6840400171答:这列火车通过长江大桥需要17.1分钟。
例2. 一列火车长200米,全车通过长700米的桥需要30秒钟,这列火车每秒行多少米?分析与解答:这是一道求车速的过桥问题。
我们知道,要想求车速,我们就要知道路程和通过时间这两个条件。
可以用已知条件桥长和车长求出路程,通过时间也是已知条件,所以车速可以很方便求出。
+=(米)总路程:200700900÷=(米)火车速度:9003030答:这列火车每秒行30米。
例3. 一列火车长240米,这列火车每秒行15米,从车头进山洞到全车出山洞共用20秒,山洞长多少米?分析与解答:火车过山洞和火车过桥的思路是一样的。
火车头进山洞就相当于火车头上桥;全车出洞就相当于车尾下桥。
这道题求山洞的长度也就相当于求桥长,我们就必须知道总路程和车长,车长是已知条件,那么我们就要利用题中所给的车速和通过时间求出总路程。
⨯=总路程:1520300-=(米)山洞长:30024060答:这个山洞长60米。
过桥问题(含答案)-

过桥问题(含答案)-编辑整理:尊敬的读者朋友们:这里是精品文档编辑中心,本文档内容是由我和我的同事精心编辑整理后发布的,发布之前我们对文中内容进行仔细校对,但是难免会有疏漏的地方,但是任然希望(过桥问题(含答案)-)的内容能够给您的工作和学习带来便利。
同时也真诚的希望收到您的建议和反馈,这将是我们进步的源泉,前进的动力。
本文可编辑可修改,如果觉得对您有帮助请收藏以便随时查阅,最后祝您生活愉快业绩进步,以下为过桥问题(含答案)-的全部内容。
过桥问题过桥问题也是行程问题的一种。
首先要弄清列车通过一座桥是指从车头上桥到车尾离桥.列车过桥的总路程是桥长加车长,这是解决过桥问题的关键。
过桥问题也要用到一般行程问题的基本数量关系:过桥问题的一般数量关系是:过桥的路程 = 桥长 + 车长车速 = (桥长 + 车长)÷过桥时间通过桥的时间 =(桥长 + 车长)÷车速桥长 = 车速×过桥时间 - 车长车长 = 车速×过桥时间—桥长后三个都是根据第二个关系式逆推出的。
火车通过隧道的问题和过桥问题的道理是一样的,也要通过上面的数量关系来解决。
【典型例题】例1:一列客车经过南京长江大桥,大桥长6700米,这列客车长100米,火车每分钟行400米,这列客车经过长江大桥需要多少分钟?分析与解:从火车头上桥,桥长 + 车长。
通过“过桥的路程"和“车速”就可以求出火车过桥的时间。
(1)过桥路程:6700 + 100 = 6800(米)(2)过桥时间:6800÷400 = 17(分)答:这列客车通过南京长江大桥需要17分钟。
例2:一列火车长160米,全车通过440米的桥需要30秒钟,这列火车每秒行多少米?分析与解:要想求火车过桥的速度,就要知道“过桥的路程”和过桥的时间。
(1)过桥的路程:160 + 440 = 600(米)(2)火车的速度:600÷30 = 20(米)答:这列火车每秒行20米。
(完整版)火车过桥问题,四年级奥数

(完整版)火车过桥问题,四年级奥数火车过桥问题(一)(四年级)例题1、一列火车长180米,每秒行20米,这列火车通过320米的大桥,需要多长时间?例题2、小明站在铁路边,一列火车从他身边开过用了2分。
已知这列火车长900米,求这列火车的速度?例题3、一列火车通过一座长456米的桥需要80秒,用同样的速度通过一条长399米的隧道要用77秒.求这列火车的长度和速度?例题4、少先队员346人排成两路纵队去科技馆参观。
队伍行进的速度是每分23米,前后两个人相距1米。
现在队伍要通过一座702米的桥,整个队伍从上桥到离桥共需几分?例题5、一列火车,从车头到达山洞的洞口算起,用16秒全部驶进山洞,45秒后车尾驶离山洞。
已知山洞长638米,火车全长多少米?例题6、公路两边的电线杆间隔都是30米,一位乘客坐在运行的汽车中,他从看到第1根电线杆到第26根电线杆正是3分。
这辆汽车每小时行多少千米?1、一列火车长360米,每秒行15米,这列火车通过一个山洞,需要40秒。
这个山洞有多少米?2、一列火车长400米,以每分800米的速度通过一条长2800米的隧道,共需要多长时间?(完整版)火车过桥问题,四年级奥数3、一列汽车通过一座长446米的桥需要57秒,用同样的速度通过一条长1654米的隧道要用208秒.求这列汽车的长度和速度?4、一列火车用同样的速度通两座大桥,第一座桥长360米,用了24秒,第二座桥长480米,用了28秒.求这列火车的长度?5、一列火车通过一个有信号的电线杆用了9秒,通过一座468米长的铁桥用了35秒。
这列火车长多少米?6、小明和小兰为了测得飞驶而过的火车的速度和长度,他们拿了两块秒表,小明用一块记下了火车从他面前通过的时间是15秒,小兰用另一块记下了从车头到第一根电线杆至车尾离开第二根电线杆所用的时间是20秒.已知两根电线杆之间的距离时100米。
火车先经过第一根电线杆,再经过第二根电线杆。
这列火车的长度和速度各是多少?7、某小学三、四年级学生528人排成四路纵队去看电影。
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
过桥问题一、课题内容与分析题目:过桥问题描述:有N(N≥)个人在晚上需要从X地到达Y地,中间要过一座桥,过桥需要手电筒(而他们只有个手电筒),每次最多两个人一起过桥(否则桥会垮)。
N个人的过桥时间依次存入数组t[N]中,分别为:t[0], t[1], ……, t[N-1]。
过桥的速度以慢的人为准!注意:手电筒不能丢过桥!问题是:编程求这N个人过桥所花的最短时间。
输入:有多组测试数据,每组数据先输入一个人数N,然后输入这N个人过桥所花的时间。
输出:输出对应的最短时间。
样例输入:4 1 25 104 5 2 10 1样例输出:1717二、题目分析1、四个人的情况假设这四人分别为A、B、C、D。
很明显,开始两人拿着手电筒过桥后,手电筒就在桥的另一边了,此时需要已经过桥的那两人中的一个再把手电筒送回桥这边。
送手电筒回来过桥也要化时间,所以要选一个跑得比较快的。
一个很自然的想法就是,每次让跑得最快的A陪着另一个过桥,然后A快速地跑回来,再陪下一位过去,最后所有人就都可以过桥了。
让我们来算一下这要多长时间。
为了方便起见,我们把旅行者出发的桥的这一边称为“此岸”,而把旅行者想要到达的那边叫“彼岸”。
在表达一个过桥方案时,我们用“←”来表示从彼岸到此岸的移动,用“→”表示从此岸到彼岸的移动。
前面“A护送大家过河”的方案就可以写成:(右边数字为完成此步骤所需时间)A B → 2A ← 1A C → 5A ← 1A D →8一共就是2+1+5+1+8=17分钟。
但其实有更快的办法:A B → 2A ← 1C D →8B ← 2A B → 2一共是2+1+8+2+2=15分钟。
这个办法的聪明之处在于让两个走得最慢的人同时过桥,这样花去的时间只是走得最慢的那个人花的时间,而走得次慢的那位就不用另花时间过桥了。
可以把所有可能的方案都列举一遍,就会发现这是最快的方案了。
现在我们把这个问题推广到N(N≥4)个人过桥的情况:如果有N个旅行者,假设他们有各自所需的过桥时间(正实数)。
在只有一只手电筒的情况下,要过上述的一条桥,怎样才能找到最快的过桥方案?假设最快地把N个旅行者从此岸移动到彼岸需要f分钟时间,那么我们把所有在f分钟时间内把N个旅行者从此岸移动到彼岸的方案称为“最佳方案”。
最佳方案很有可能不止一个,我们的目的是要找到一个最佳方案,但是并不需要把所有的最佳方案全都找出来。
2、一个合理的假设假设A为最快,B为次快,而Z是任意一个其他旅行者“由A护送最慢过桥,回来,然后继续护送最慢的过桥,再回来”,称作“模式一”。
”两个最快的过桥(A和B过桥),A回来,两个最慢的过桥,B回来”,称作“模式二”。
最佳方案构造法:以下是构造N个人(N≥1)过桥最佳方案的方法:1) 如果N=1、2,所有人直接过桥。
2) 如果N=3,由最快的人往返一次把其他两人送过河。
3) 如果N≥4,设A、B为走得最快和次快的旅行者,过桥所需时间分别为a、b;而Z、Y为走得最慢和次慢的旅行者,过桥所需时间分别为z、y。
那么当2b>=a+y时,使用模式一将Z和Y移动过桥;当2b<a+y时,使用模式二将Z和Y移动过桥;这样就使问题转变为N-2个者的情形,从而递归解决之。
三、概要设计1.设计函数sort运用选择排序法从大到小排序。
2.函数compare判断return (2*a[1] - a[0] - a[n-2]) > 0 ? 1 : 2;使用模式一返回1,使用模式二返回2。
3.函数move计算结果,若n=2则直接为第二个人的用时;第一趟移动:符合模式一 *count = *count + modelone(a[0], a[n-1]);符合模式二 *count = *count + a[0] + 2*a[1] + a[n-1];此时将问题转化为移动n-2个人移动,运用递归思想。
4.main函数中while(scanf("%d", &n) != EOF)实现多组数据的输入。
依次调用函数即可。
四、详细设计#include<stdio.h>//选择排序法void sort(int *a, int n) {int i=0, j, temp, last;while(i < n-1) {last = n-1;for(j=n-1; j>i; j--)if(a[j] < a[j-1]) {temp = a[j-1];a[j-1] = a[j];a[j] = temp;last = j;}i = last;}}int compare(int *a, int n) {return (2*a[1] - a[0] - a[n-2]) > 0 ? 1 : 2;int print(int fast, int slow) {return fast + slow;}void move(int *a, int n, int *count) {int com;if(n == 2) {*count = *count + a[1];}else {com = compare(a, n);switch(com) {case 1:*count = *count + print(a[0], a[n-1]);n = n-1;move(a, n, count);break;case 2:*count = *count + a[0] + 2*a[1] + a[n-1]; n = n-2;move(a, n, count);break;}}}int main(){int n;while(scanf("%d", &n) != EOF){int t[100], i=0, com, count=0;for(i=0; i<n; i++) {scanf("%d", &t[i]);}sort(t, n);move(t, n, &count);printf("%d\n", count);}return 0;}五、测试数据及结果分析4 1 25 10174 5 2 10 117不管换什么数据都能准确输出结果,但是输出格式与结果略有不同只能输入一组然后回车,再继续输入,当输入结束时ctrl+c即可。
六、调试过程中的问题问题一、无法输入多组数据,通过while(scanf("%d", &n) != EOF)完成了这一功能。
问题二、没有考虑到n=2时的情况。
问题三、return (2*a[1] - a[0] - a[n-2]) > 0 ? 1 : 2;算法的思想核心。
问题四、递归的思想难以把握,费事。
问题五、int t[100], i=0, com, count=0;必须出现在while(scanf("%d", &n) != EOF)里面,否则当输入多组数据时出现count为多个结果相加的情况,因为指针count是为了存储每次递归的结果的,所以必须定义在里面。
七、课程设计总结过桥问题的算法思想让我领悟到了算法的神奇,通过大量的计算与总结才能得出具有模式一模式二的形式,然后就是程序的编写,首先必须实现排序,再实现最慢次慢,最快次快临界条件的判断以及递归的计算。
在写程序的过程中,每个功能的实现都需要写,思虑必须周全,选择排序法以及数组指针的使用都需要熟练地掌握,递归更是一个难点,相当于又学习了一遍。
通过过桥问题从分析到解决使我的知识更加丰富了,比如while(scanf("%d", &n) != EOF) 可以输入多组数据。
附加题2.学生成绩排名一、课题内容和要求期末考试时老师发飙出了1000道题目,每道题目1分。
最终课程的及格分数由老师指定。
现在班上的学生成绩已经批改好并按学号列出,要求你根据及格线将学生分为两个部分,分数低于及格线的同学要重修不参加排名,及格的同学从高到低排出名次。
输入:三行数据,第一行为班级人数(小于1000),第二行按学号从低到高给出成绩,第三行给出及格分数线。
输出:两行:第一行将同学的分数按是否及格输出,低于及格线的部分、大于等于及格线的部分内部先后顺序不变。
第二行输出及格同学的成绩,从高到低排列。
样例输入:6220 10 980 490 401 600490样例输出:220 10 401 980 490 600980 600 490二、题目分析应题目要求,数组的长度是小于1000的,要按题目说明的输出结果例如题中给的例子,6220 10 980 490 401 600490输出要求将大于490的置于后面并且顺序不变,然后就是排序后面的数并且输出此时就可定义数组然后排序输出即可。
220 10 401 980 490 600980 600 490参考资料为c语言书三、概要设计1、sort函数的定义排序函数与过桥问题略有不同,用的是冒泡排序。
2、main函数定义了两个数组a[size]与s[size],分别用于存储大于及格线与小于及格线的学生成绩。
然后定义k是为了记录a[size]中的数的个数。
四、详细设计#include<stdio.h>#define size 1000int sort(int a[],int n){int i,j,t;for(i=0;i<n-1;i++)for(j=n-1;j>i;j--){if(a[j]>a[j-1]){t=a[j-1];a[j-1]=a[j];a[j]=t;}}}int main(){int a[size],n,x,i,s[size],k;scanf("%d",&n);for(i=0;i<n;i++)scanf("%d",&a[i]);scanf("%d",&x);k=0;for(i=0;i<n;i++){if(a[i]<x){{printf("%d",a[i]);printf(" ");}}}for(i=0;i<n;i++){if(a[i]>=x){s[k]=a[i];{printf("%d",a[i]);printf(" ");}k++;}}printf("\n");sort(s,k);for(i=0;i<k;i++)printf("%d ",s[i]);printf("\n");return 0;}五、测试数据及其结果分析样例输入:6220 10 980 490 401 600490样例输出:220 10 401 980 490 600980 600 490样例输入:8100 260 500 410 90 530 980 490400样例输出:100 260 90 500 410 530 980 490410 490 500 530 980已经试用多组数组均可得到理想的结果六、调试过程中的问题1、在写函数sort冒泡排序时,交换位置出现问题,编译没问题,但第二行输出结果出现问题一直都有数重复,而有的数没有在结果行出现。