高级程序设计期末考试题

上传人:gg****m 文档编号:286945624 上传时间:2022-05-02 格式:DOC 页数:10 大小:77KB
返回 下载 相关 举报
高级程序设计期末考试题_第1页
第1页 / 共10页
高级程序设计期末考试题_第2页
第2页 / 共10页
高级程序设计期末考试题_第3页
第3页 / 共10页
高级程序设计期末考试题_第4页
第4页 / 共10页
高级程序设计期末考试题_第5页
第5页 / 共10页
点击查看更多>>
资源描述

《高级程序设计期末考试题》由会员分享,可在线阅读,更多相关《高级程序设计期末考试题(10页珍藏版)》请在金锄头文库上搜索。

1、一、算法分析题(本大题共3小题,选做2题,每小题40分,共80分)1. 逃学威龙John无心向学,总是打逃课的主意,他确信他的期末考试绝对能够考过,但是 老师可不相信他,因此老师定下了一条规矩,最后的期末成绩将由平时成绩和考试 成绩组成,各占50%的分数,也就是满分100分,其中平时成绩50分,考试成绩 50分。而老师为了不让同学们逃课,平时成绩将仅由出勤情况确定,每点名到一次 逃课就要扣掉10分的平时成绩。John很不满于老师这套想法,决心要将翘课进行到底,他有足够的信心和实力 在期末考中得到满分,剩下的就只看平时成绩了,只要他在平时成绩小保留的分 数二10分,他这个学期就可以合格。他甚至为

2、此充分调查了老师的点名习惯,发现 如下规律:每个学期这门课程共有K个课时(KV20),而对于某节课老师点不点名是一个 独立的事件,并且老师在某一节课点名的概率是p(O.OVpUl.O),现在fish_ball 想尽可能多的逃课,但是要保证他有90%以上的概率不挂掉这门课,问fish一ball 这个学期最多能翘掉多少课?输入规格:第一行是一个整数C, CU20,紧接着C组数据,每组数据包含一行,依次给出 整数K (l=K=20)和p(0.0二p1.0),如题目中所描述。输岀规格:对于每组数据,输出一个整数,表示John这学期最多能够翘掉儿堂课。算法分析:设John逃课次数为skipNum,课程总

3、数为classNum,当skipNum=c 1 assNum 时,在skipNu m次逃课中,John被点名的次数 = 0. 9 (B|J 90% ),则John可以通过该课程。RealPossibility等于在skipNum次中分别被点0、1、2、3、4次的概率之和, 即:RealPossibility4n=0pn ( -SkipNum-n)当满足RealPossib订ity 二0. 9 口寸求的的SkipNum最大值即 为John最大可逃的课程数。程序:#include #include math.hstruct KE int K; float p;int classNum ;/ Cla

4、ssNum 为课程总数float p;int skipNum = 5;p为每节课老师点名的次数 /skipNum为John逃课次数double getPossibility(int a,int b,double p );用于求 a(skipNum)次逃课中被点 b 次的概率 double getRealPossble(int a2,int b2,double p2);/求 skipNum 次中分别被点04次的概率和 void main()int C;coutnInput:nendl;cinC;KE *ke=new KEC;for(int i=0;iC;i+)cinkei.Kkei.p;cout

5、HOutput: uendl;for(i=0;i0.9) & (skipNurrKclassNum) skipNum+;elsebreak;coutskipNumendl; double getRealPossble(int a2,int b2,double p2) double sumP=0;int tempCt=b2;while (tempCt=0)sumP=sumP+getPossibility(a2jempCt,p2); tempCt;return sumP;double getPossibility(int a,int b,double pl) int countUp=l;int s

6、umUp=l;double sumALL;int sumDown=l;int temp = a;while (countUp=b)sumUp=sumUp*a;a-;countUp+;for(int i=l;i0的区域是泥 泞的地面,Alfred在泥泞的地 面上的移动速度是门(米/秒), 而y0的区域是水泥地,Alfred 在水泥地上的移动速度只有 v2咪/秒),其中vK=v2, A在 第二象限,B在第四彖限。Alfred是一个物工院的学 生,他稍微估算了一下,剩下的时间已经不多了,他看看表, 现在离9点整只剩下T秒了 (T由题目给出),Alfred想知道,他如果用最优的策略赶往公交站,今天的课

7、是否会迟到。输入规格:第一行是一个整数c, C=10,紧接看C组数据,每组数据依次给出 xA, yA, xB, yB, vl, v2和T,他们的意义如上文所述,x, y坐标的单位是米,所有坐 标的绝对值109, T是一个整数。输出规格:对于每组数据,输出YES或N0,表示Alfred会不会迟到。算法:在x轴上取P ( p ,0 ),对每组数据,给出xA, yA, xB, yB, v1, v2., xA=p=0, Yes;t-T0, No.第二题。不粉我你什么心态# i ncIude#i ncIude#incIude#incIudeusing namespace std;c I ass zuob

8、iao/基坐标protected :double x, y;pub I i c: v i rtua I vo id run () =0;vi rtuaI void pr i nt () =0;doub I e getX ();doub I e getY (););c I ass A: pub I i c zuobi ao/A 坐标pubI ic:A() run() ;void run ();void pr int (););c I ass B: pub I i c zuobi ao/B 坐标publ ic:B () run();void run () ; void pr int ();c I

9、ass Alfred /人物pubI ic:Alfred() setSpeed () ;void set Speed () ; void calc() ;void pr int ();pr ivate:A a;B b;double v1,v2;double t;doubIe zuobiao:getX ()return x;doubIe zuobiao:getY()return y;void A: : run() x=0-rand()%109;y=rand()%109;void B:: run() x=rand ()%109;y=0-rand ()%109;void A:print() cout

10、坐标 A: (x, y);)void B: :pr i nt () (cout坐标 B: (Hx, y) ;void Alfred:setSpeed ()doub Ie a, b;whi le(1)a=rand ()%6;b=rand () %6;if (b二a&a0)v2=b;v1=a;break;void Alfred:pr int()coutv1 二“v1“,v2=v2; t=rand () %150; cout,1 T=,tend I ;void Alfred:caIc()doub I e i; doub I e k; /横坐标距离k二b. getX () -a. getX () ;

11、a. pr i nt () ; b. pr i nt () ; pr i nt ();for (i二0;i=k;i+)if (sqrt (a. getY() *a. getY0 + i*i)/v1+sqrt (b. getY () *b. getY () + (k-i) *(k-i)/v2) =t) coutYSEend I; return;cout,N0,endl;i nt ma i n ()i nt c, i;srand(uns i gned)time (NULL);AI f red a 10 ;cout请输入 C: ;cinc;coutendl ;for (i=0;i c;i+)a i.

12、 ca I c () ;) return 0;)3. 货物1000吨,3辆车同时起运,大车装5吨,来回一趟2小时,中车装3吨,来回 一趟1.8小时(十进制),小车装2吨,来回一趟1.6小时(十进制),并规定:若 有多辆车同时到达,装车的优先次序是:大车2中车2小车。不记装车时间。问:(1) 最后一趟车是那种车? (2)大、中、小车各运多少趟? 算法:设时间为t,然后起始t=0,剩余货物为m= 1000-5-2-3,对t进行 循环,在循环里,分开三种判断,1, t整除20等于0,就令m-5;2, t整 除18等于0;就令m-3;3, t整除16二0,就令in-2;每循环一次t自加一次;当m二0时,循环结束。此时再进行判断:若t 整除20等于0,最后为大车;若t整除18等于0,最后为中车;若t整 除16=0,最后为小车。大车趟数:t/20+l;中车趟数:(t-1)/18+1,小车趟数:(01)/16+1#include void main ()int i=0,left= 1000-5-3-2;while (1)i+;if (i%20=0)left-=5;if (left=0) break ;if(i%18=0)left-=3;if (left=0) break ;if(i%16=0)left-=2;

展开阅读全文
相关资源
相关搜索

当前位置:首页 > 办公文档 > 其它办公文档

电脑版 |金锄头文库版权所有
经营许可证:蜀ICP备13022795号 | 川公网安备 51140202000112号