Java实训课程设计ACM题_第1页
Java实训课程设计ACM题_第2页
Java实训课程设计ACM题_第3页
Java实训课程设计ACM题_第4页
Java实训课程设计ACM题_第5页
已阅读5页,还剩25页未读 继续免费阅读

下载本文档

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

文档简介

1、学 号武 汉 科 技 大 学 城 市 学 院课 程 设 计 报 告 课程设计名称 Java课程设计 题 目 ACM 院 系 信息工程系 专 业 班 级 姓 名 指导教师 2019年月日课程设计评分表评分标准:1. 学生是否严格遵守课程设计纪律,按照规定时间完成设计任务(占30%)2. 课程设计报告书质量:(占50%)(1)是否采用了良好的设计方法,独立完成课程设计。 (2)课程设计各分段的任务是否按时完成及完成的质量。(3)是否完成课程设计任务书指定的全部要求。 3. 课程设计报告书的撰写规范 (占20%)课程设计报告书的撰写规范要求与毕业设计(论文)的要求相同。教师评语: 根据该生课程设计期

2、间出勤表现及提交的课程设计报告,综合成绩为 。 教师签名: 日期: 年 月 日任务书: Java & ACM在线评测1. 课程设计教学条件要求 Eclipse2. 课程设计任务每个同学登录武汉科技大学城市学院ACM网站5,点击作业,查看2019java课程设计,里面有13个测试题,要求在线完成8-12道题,每题写出解题报告,解题报告内容:1.题目标题2.题目描述3.解题思路4.源码5.小结 每个题目详细书写解题报告,一题多解的可以加分!3课程设计参考资料1 罗玉龙.java程序设计. 北京:科学出版社. 20122 何玉洁. 数据库原理与应用教程. 北京:机械工业出版社.20

3、033 罗志高. 数据库原理与应用教程. 北京:人民邮电出版社.2003目 录第1题 小光棍数61.1题目描述61.2解题思路61.3解决方案71.4 小结7第2题 寻找数列82.1题目描述82.2解题思路82.3解决方案92.4 小结9第3题 奖学金103.1题目描述103.2解题思路113.3解决方案113.4 小结12第4题 黄金分割数134.1题目描述134.2解题思路134.3解决方案144.4 小结14第5题 星系炸弹-6TH 蓝桥杯C本科B组第二题155.1题目描述155.2解题思路155.3解决方案165.4 小结16第6题 零起点学算法58-开灯问题176.1题目描述176.

4、2解题思路176.3解决方案186.4 小结18第7题 华科版C语言程序设计教程(第二版)习题5.7197.1题目描述197.2解题思路197.3解决方案207.4 小结20第8题 整数划分1218.1题目描述218.2解题思路218.3解决方案228.4 小结22第1题 小光棍数1.1题目描述为了迎接一年一度光棍节的到来,让我们一起来看看小光棍数吧。倘若一个数的三次方最后三位数是111,这样的数称为小光棍数。从0开始计数,第一个小光棍数是471(4713=),请问第m个小光棍数是多少(1)输入第一行一个整数T表示有T组测试数据,接下来T行每行有一个数m(2)输出输出第m个小光棍数,每次输出占

5、一行(3)样例输入11(4)样例输出4711.2解题思路1,分析题意可知,第一次输入的数据表示测试数据有几组,也就是控制循环的次数。 2,第二次输入的数据表示查找第几个小光棍数,想到了定义一个变最作为计数器,查找到一一个记-次数,计数器的值等于输入的数据就停止在询,并输出查到的数据。3,循环控制着一个查找功能,数字的三次方要保证是三位数,不是就不用查找了,用if 条件语句控制。直接把三次方处理后的数据对1000 取余数得出的值就是最后三位,如果是111就满足条件,这个数字就是小光棍数。1.3解决方案importjava.util.Scanner;publicclassMain publicst

6、aticvoidmain(Stringargs) Scannerscanner=newScanner(System.in); intn=scanner.nextInt(); while(n-!=0) longm=scanner.nextLong(); System.out.println(471+(m-1)*1000); 1.4 小结 这种特殊数字的查找原本在不用数学方法的情况下,计算量十分大,但是对计算机而言却不足很大,以后这种数据找不到规律可以直接用java写一个程序快速计算。但要注意对循环的控制。 第2题 寻找数列2.1题目描述有一个有关数字的无穷序列,所有的自然数按升序排列。这个序列开

7、始:. 我们叫序列 S。然后 S1 = 1, S2 = 2, . , S10 = 1, S11 = 0, . , 以此类推。George 现有一个数字系列 A ,他想知道在S中最早出现的位置。帮助他解决这个难题。(1)输入输入文件包含 A - 给出的数字系列。位数不超过 200。没有空格。(2)输出输出一个整数。- 最小的 k ,使 A1 = Sk, A2 = Sk+1, . Alen(A) = Sk + len(A) 1, len(A) 表示 A 的长度。(3)样例输入101(4)样例输出102.2解题思路由于数列是无穷数列,所以循环在某种条件下算是不可知的,而且根据循环,重复数字也会越来越

8、多,但是本题中A的长度已给,因此可以将数列分为许多相同A长度的部分,然后寻找输入值相同的部分,就可以找到A最早出现的位置。2.3解决方案importjava.util.Scanner;publicclassMainpublicstaticvoidmain(Stringargs)Stringm=;for(inti=1;i80),并且在本学期内发表1篇或1篇以上论文的学生均可获得;2)五四奖学金,每人4000元,期末平均成绩高于85分(85),并且班级评议成绩高于80分(80)的学生均可获得; 3)成绩优秀奖,每人2000元,期末平均成绩高于90分(90)的学生均可获得; 4)西部奖学金,每人10

9、00元,期末平均成绩高于85分(85)的西部省份学生均可获得; 5)班级贡献奖,每人850元,班级评议成绩高于80分(80)的学生干部均可获得;只要符合条件就可以得奖,每项奖学金的获奖人数没有限制,每名学生也可以同时获得多项奖学金。例如姚林的期末平均成绩是87分,班级评议成绩82分,同时他还是一位学生干部,那么他可以同时获得五四奖学金和班级贡献奖,奖金总数是4850元。 现在给出若干学生的相关数据,请计算哪些同学获得的奖金总数最高(假设总有同学能满足获得奖学金的条件)。(1)输入 输入的第一行是一个整数N(1 = N = 100),表示学生的总数。接下来的N行每行是一位学生的数据,从左向右依次

10、是姓名,期末平均成绩,班级评议成绩,是否是学生干部,是否是西部省份学生,以及发表的论文数。姓名是由大小写英文字母组成的长度不超过20的字符串(不含空格);期末平均成绩和班级评议成绩都是0到100之间的整数(包括0和100);是否是学生干部和是否是西部省份学生分别用一个字符表示,Y表示是,N表示不是;发表的论文数是0到10的整数(包括0和10)。每两个相邻数据项之间用一个空格分隔。(2)输出输出包括三行,第一行是获得最多奖金的学生的姓名,第二行是这名学生获得的奖金总数。如果有两位或两位以上的学生获得的奖金最多,输出他们之中在输入文件中出现最早的学生的姓名。第三行是这N个学生获得的奖学金的总数。(

11、3)样例输入4YaoLin 87 82 Y N 0ChenRuiyi 88 78 N Y 1LiXin 92 88 N N 0ZhangQin 83 87 Y N 1(4)样例输出ChenRuiyi9000287003.2解题思路因为奖学金的判定分为两种,一种为同时达到两种要求的,其中有院士奖学金,五四奖学金和西部奖学金,还有一种是成绩符合或者班级评议成绩符合的,分别为成绩优秀奖和班级贡献奖。并且符合条件就可以得奖,而且一名同学可以获得多份奖项。3.3解决方案importjava.util.Scanner;publicclassMain publicstaticvoidmain(Stringa

12、rgs) Scannersc=newScanner(System.in); intn=sc.nextInt(); Stringstr=newStringn6; intsum=newintn; intt=0; intmax=sum0; intz=0; for(inti=0;in;i+) for(intm=0;m6;m+) strim=sc.next(); for(inti=0;i90)sumi+=2000;break;while(Integer.parseInt(stri2)80)&(stri3.equals(Y)sumi+=850;break;while(Integer.parseInt(st

13、ri1)85)&(stri4.equals(Y)sumi+=1000;break;while(Integer.parseInt(stri1)85)&(Integer.parseInt(stri2)80)sumi+=4000;break;while(Integer.parseInt(stri1)80)&(Integer.parseInt(stri5)0)sumi+=8000;break; for(inti=0;in;i+)if(maxsumi)max=sumi;t=i;for(inti=0;in;i+)z+=sumi;System.out.println(strt0);System.out.pr

14、intln(sumt);System.out.println(z);3.4 小结 由于奖学金只要符合条件就可以得奖,每项奖学金的获奖人数没有限制,每名学生也可以同时获得多项奖学金,所以增加了判定奖学金数额的难度,而且以为奖学金的划分分为两种,所以筛选过程中要将筛选信息找全。第4题 黄金分割数4.1题目描述分式1-1+ 1 - 1+ 1 - 1+.可以表示黄金分割数,请利用上述公式,计算黄金分割数精确数(1)输入(2)输出输出小数点后精确到80位的黄金分割数(3)样例输入(4)样例输出4.2解题思路把一条线段分割为两部分,使其中一部分与全长之比等于另一部分与这部分之比。其比值是一个无理数,取其前

15、三位数字的近似值是0.618。由于按此比例设计的造型十分美丽,因此称为黄金分割,也称为中外比。同时上述题目可以看出,根据这样的方法来确定分割数的精确数。4.3解决方案import java.math.BigDecimal;public class Mainpublic static void main(String args)BigDecimal bd=new BigDecimal(1);for(int i=0;i1000;i+)bd=bd.add(BigDecimal.ONE);bd=BigDecimal.ONE.divide(bd,80,BigDecimal.ROUND_HALF_DOWN

16、);System.out.println(bd.toString();4.4 小结 黄金分割数是通过比例实现。它的奇妙之处,在于其比例与其倒数是一样的。例如:1.618的倒数是0.618,而1.618:1与1:0.618是一样的。确切值为(5-1)/2 ,即黄金分割数。第5题 星系炸弹-6th 蓝桥杯C本科B组第二题5.1题目描述在X星系的广袤空间中漂浮着许多X星人造“炸弹”,用来作为宇宙中的路标。每个炸弹都可以设定多少天之后爆炸。比如:阿尔法炸弹2015年1月1日放置,定时为15天,则它在2015年1月16日爆炸。有一个贝塔炸弹,2014年11月9日放置,输入定时天数,例如定时为1000天,

17、请你计算它爆炸的准确日期。请填写该日期,格式为 yyyy-mm-dd 即4位年份2位月份2位日期。比如:2015-02-19请严格按照格式输出。不能出现其它文字或符号。提示:输入数据可能有多组(1)输入输入炸弹引爆延迟的天数。(2)输出对于每个输入天数,输出符合题目要求的格式的日期(3)样例输入1000(4)样例输出2017-08-055.2解题思路1,分析题意可知,本题是求一-一个日期,想到了 Calendar.2,输入的数据是这个日期距离2014-11-09的天数, 想到了add方法。3,用set设置起始日期2014-11-09 I 11月在代码中表现为10。4,用add方法设置偏移值,偏

18、移值由键盘输入获取,( scanner.5,用getTime获取偏移后的Date 对象。6,自定义格式把对象转换成字符串输出,格式为 :yy MM-dd。5.3解决方案importjava.text.SimpleDateFormat;importjava.util.Calendar;importjava.util.Scanner;publicclassMainpublicstaticvoidmain(Stringargs)Scannerscanner=newScanner(System.in);while(scanner.hasNext()intk=scanner.nextInt();Cale

19、ndarcd=Calendar.getInstance();SimpleDateFormats=newSimpleDateFormat(yyyy-MM-dd);cd.set(2014,10,9);cd.add(Calendar.DATE,k);System.out.println(s.format(cd.getTime();5.4 小结 Calendar对象可以灵活地设置修改日期,所importjava.util.Calendar;非常重要。要注意在中日期的数字表示:月是用011的整数表示的,0表示1月,1表示2.11表示12月。日是用131的整数表示。小时用023的整数表示。第6题 零起点学

20、算法58-开灯问题6.1题目描述计算中心有8个机房,每个机房有n台电脑。每台电脑都有一个编号,比如8号机房编号就为H1到Hn,我们有时又称为H1为1号机器,H2为2号机器,.。 有一天我们学校跻身世界高校100强,全校所有师生都进行了狂欢庆祝。罗老师是个很爽快的人,也很喜欢喝酒,那天他喝多了点。但不巧的是那天晚上正好罗老师值班,罗老师是个很负责的老师。所以他就把8号机房打开了。但同学们都还在狂欢,没一个人来上机。罗老师提着一瓶酒,感觉到很无聊,所以他想玩个游戏。 第一回合,他喝了一口酒,他把所有的电脑都打开。然后第二回合他喝了一口酒,他把编号是2,4,6,.的电脑全关了。第三回合,他喝一口酒后

21、就去操作所有编号是3,6,9,.,看到电脑开着就把它关掉,看到电脑关了就把它打开。他重复这样操作共进行了n个回合。当他操作完最后一个回合后,罗老师醉倒了。 现在给你这个机房电脑的数目,问你最后共有几台电脑开着?(1)输入输入只有1行,这行有一个正整数,表示这个机房共有多少个电脑,该数是5到100之间的任意正整数。(2)输出你必须输出最后开着的电脑数。输出该数后不要忘了换行(3)样例输入5(4)样例输出26.2解题思路由于罗老师刚开始找的是2的倍数,因此关掉了编号为2的倍数的机器,但是在第二回合的时候,是3的倍数,因此只需要找到2的倍数和3的倍数,然后根据回合数,就可以找到关机和开机的机器。因此

22、,这个问题是个倍数问题。6.3解决方案import java.util.Scanner;public class Main public static void main(String args) Scanner scanner= new Scanner(System.in);while(scanner.hasNext()int n=scanner.nextInt();int a=new int110;int c=1,count=0;for(int i=1;i=n;i+)ai=1;for(c=2;c=n;c+)for(int j=1;j=n;j+)if(j%c=0)if(aj=0)aj=1;e

23、lseaj=0;for(int b=1;b=n;b+)if(ab=1)count+;System.out.println(count);6.4 小结 由于回合数和机器的台数都是N,因此回合数和台数都是不可控的,可控的只有倍数问题,在编号里寻找2和3相同的倍数和上一回合相同的数就可以找到被开的机器和被关的机器。第7题 华科版C语言程序设计教程(第二版)习题5.77.1题目描述这天老师给小豪出了一道很简单题目放松:输入一个分数,让你求出它们的最简分数。(1)输入第一行包括一个T,表示测试数据的组数。接下来T行每行包括一个分数。(分子分母均在int范围内)(2)输出对于每个测试样例,输出一行其最简分

24、数。(3)样例输入32/63/111/36(4)样例输出1/33/111/367.2解题思路先定义分子和分母,a和b。然后运用辗转相除法求两个数的最大公约数7.3解决方案import java.lang.reflect.GenericDeclaration;import java.util.Scanner;public class Mainpublic static void main(String args)Scanner sc=new Scanner(System.in);int n=sc.nextInt();for(int j=1;j=n;j+)String str=sc.next();

25、String source = str.split(/);int a=Integer.parseInt(source0);int b=Integer.parseInt(source1);System.out.println(a/gcd(a,b)+/+b/gcd(a,b);public static int gcd(int a,int b)return (a%b=0?b:gcd(b,a%b);7.4 小结 本题要注意的是公约数要从最大公约数找起,这样每次数可以变化最大,使得减少循环的次数。对于找两个公约数,从最大的公约数找起,这样可以避免超时。第8题 整数划分18.1题目描述设m,n均为自然数,m可表示为一些不超过n的自然数

温馨提示

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

最新文档

评论

0/150

提交评论