admin管理员组文章数量:1794759
#Java学习#习题二
文章目录
- 判断题
- 函数题
- 使用继承,实现“剪刀石头布的游戏”
- 编程题
- 学投资
- 质因子分解
- 成绩分级管理
- 判断三角形类型
- 按正整数的相反数字顺序输出
- 作品评分
- 666
其他Java学习的内容见:目录
判断题1-1.系统自动引入java.lang包中的所有类,因此不需要再显式地使用import语句引入该包的所有类。
T
1-2.java.lang包是Java的核心类库,它包含了运行Java程序必不可少的系统类
T
1-3.如果一个类的声明中没有使用extends关键字,这个类被系统默认为是继承Object类。
T
1-4.为了克服单继承的缺点,Java使用了接口,一个类可以实现多个接口。
T
1-5.一个类可以实现多个接口
T
函数题 使用继承,实现“剪刀石头布的游戏”使用继承,实现“剪刀石头布的游戏”。 小时候很喜欢玩一个游戏,“剪刀石头布”,可以是出拳的形式,或跳格子的形式。现在我们用计算机来玩这个游戏。 电脑用随机数产生剪刀石头布,游戏玩家用输入1,2,3的方式出拳。 游戏玩家输入1或2或3,分别 代表剪刀(1)石头(2)布(3)。 电脑胜出时,显示"Winner is computerPlayer." 游戏玩家胜出时,显示“Winner is personPlayer.” 平局时显示"A Draw."
函数接口定义: 根据主方法内容,实现三个类的定义,分别是是ComputerPlayer、PersonPlayer、Game类。 其中ComputerPlayer、PersonPlayer要继承Player类。 根据主方法中的用法,实现Game类。
裁判测试程序样例:
import java.util.Scanner; class Player{ String name; Player(String name){ this.name = name; } int show() { //出拳方法 int show = ( int ) (Math.random() * 10 ) %3 +1; return show ; } } /* 请在这里填写答案 */ public class Main { public static void main(String[] args) { ComputerPlayer c = new ComputerPlayer ("computer"); PersonPlayer p = new PersonPlayer("player ") ; Game g = new Game( c ,p ); g.start(); } }输入样例: 2
输出样例: A Draw.
编译程序
class ComputerPlayer extends Player { ComputerPlayer(String name) { super(name);//子类的构造方法必须调用父类的构造方法,使用super关键字;使用super关键字的这行语句必须放在子类的第一行 } } class PersonPlayer extends Player{ PersonPlayer(String name) { super(name); } int choice(){ Scanner scan=new Scanner(System.in); int c=scan.nextInt(); return c; } } class Game{ ComputerPlayer cp; PersonPlayer pp; public Game(ComputerPlayer cp, PersonPlayer pp) { this.cp = cp;//切忌写成cp=cp this.pp = pp; } //如果刚开始不习惯用this,可以用下面替代 //public Game(ComputerPlayer x, PersonPlayer y) { // x = cp;//切忌写成cp=cp // y = pp; // } void start(){ int c=cp.show(),p=pp.choice(); if (c==p) System.out.print("A Draw."); else if (c==1&&p==3) System.out.print("Winner is computerPlayer."); else if (p==1&&c==3) System.out.print("Winner is personPlayer."); else if (p<c) System.out.print("Winner is computerPlayer."); else System.out.print("Winner is personPlayer."); } } 编程题 学投资小白学习了一些复利投资知识,想比较一下复利能多赚多少钱(所谓复利投资,是指每年投资的本金是上一年的本金加收益。而非复利投资是指每年投资金额不包含上一年的收益,即固定投资额)。假设他每年固定投资M元(整数),每年的年收益达到P(0<P<1,double),那么经过N(整数)年后,复利投资比非复利投资多收入多赚多少钱呢?计算过程使用双精度浮点数,最后结果四舍五入输出整数(Math的round函数)。
输入格式: M P N
输出格式: 复利收入(含本金),非复利收入(含本金),复利比非复利收入多的部分(全部取整,四舍五入)
输入样例: 10000 0.2 3
输出样例: 17280 16000 1280
编译程序
import java.util.Scanner; public class Main { public static void main(String[] args) { Scanner in=new Scanner(System.in); int m = in.nextInt(); double p = in.nextDouble(); int n = in.nextInt(); double a = 0.0, b = 0.0, c = 0.0; b = m * p * n + m; int i; a = (double)m; for(i = 0; i < n; i++) { a *= 1 + p; } c = a - b; System.out.println(Math.round(a) + " " + Math.round(b) + " " + Math.round(c)); } } 质因子分解本题目要求读入一个大于1的整数,编程将其分解成若干个质因子(素数因子)积的形式。
输入格式: 大于1的整数一个。
输出格式: 将输入的正整数分解成若干个质因子积的形式,质因子的出现顺序按从小到大排列。如:30=222*5;如果整数本身为质数或素数,直接输出,如:13=13。
输入样例: 12480
输出样例: 12480=2*2*2*2*2*2*3*5*13
编译程序
import java.util.Scanner; public class Main { public static void main(String[] args) { Scanner in=new Scanner(System.in); int n = in.nextInt(); System.out.print(n+"="); int i; for(i = 2; i <= Math.sqrt(n); i++) { if(n % i == 0) { System.out.print(i+"*"); n /= i; i--; } } System.out.println(n); } } 成绩分级管理学校进行成绩分级管理,取消分数制,改为成绩分级评定。具体办法是:小于60分为E类;60分至70分(不含70分)为D类;70分至80分(不含)为C类;80分至90分(不含)为B类;90分以上为A类。设计一个程序,对输入的成绩进行等价划分
输入格式: 输入一个整数表示成绩。
输出格式: 根据输入的成绩,输出对应的等级(大写字母)
输入样例: 在这里给出一组输入。例如: 72
输出样例: 在这里给出相应的输出。例如: C
编译程序
import java.util.Scanner; public class Main { public static void main(String[] args) { Scanner in=new Scanner(System.in); int n = in.nextInt(); if(n < 60) System.out.println("E"); else if(n >= 60 && n < 70) System.out.println("D"); else if(n >= 70 && n < 80) System.out.println("C"); else if(n >= 80 && n < 90) System.out.println("B"); else if(n >= 90) System.out.println("A"); } } 判断三角形类型输入三角形三条边,判断该三角形为什么类型的三角形。
输入格式: 在一行中输入三角形的三条边的值(实型数),可以用一个或多个空格或回车分隔,其中三条边的取值范围均为[1,200]。
输出格式: (1)如果输入数据非法,则输出“Wrong Format”; (2)如果输入数据合法,但三条边不能构成三角形,则输出“Not a triangle”; (3)如果输入数据合法且能够成等边三角形,则输出“Equilateral triangle”; (4)如果输入数据合法且能够成等腰直角三角形,则输出“Isosceles right-angled triangle”; (5)如果输入数据合法且能够成等腰三角形,则输出“Isosceles triangle”; (6)如果输入数据合法且能够成直角三角形,则输出“Right-angled triangle”; (7)如果输入数据合法且能够成一般三角形,则输出“General triangle”。
输入样例1: 在这里给出一组输入。例如: 50 50 50.0
输出样例1: 在这里给出相应的输出。例如: Equilateral triangle
输入样例2: 在这里给出一组输入。例如: 60.2 60.2 80.56
输出样例2: 在这里给出相应的输出。例如: Isosceles triangle
输入样例3: 在这里给出一组输入。例如: 0.5 20.5 80
输出样例3: 在这里给出相应的输出。例如: Wrong Format
编译程序
import java.util.Arrays; import java.util.Scanner; public class Main { public static void main(String[] args) { Scanner in=new Scanner(System.in); double a[] = new double[3]; int i; for(i = 0; i < 3; i++){ a[i] = in.nextDouble(); } for(i = 0; i < 3; i++){ if(a[i] < 1 || a[i] > 200){ System.out.println("Wrong Format"); return; } } Arrays.sort(a); /*小补充: ||当左边为真时,就不运行右边的表达式了 |当左边为真,还是会运算右边的表达式 &&当左边为假时,就不会运算右边的表达式 &当左边为假时,还是会运算右边的表达式*/ if(a[0] + a[1] > a[2]){ if(a[0] == a[1] && a[1] == a[2]){ System.out.println("Equilateral triangle"); } else if(a[0] == a[1] && a[0] * a[0] + a[1] * a[1] - a[2] * a[2] < 0.000001) System.out.println("Isosceles right-angled triangle"); else if(a[2] == a[1] || a[2] == a[0] || a[0] == a[1]) System.out.println("Isosceles triangle"); else if(a[0] * a[0] + a[1] * a[1] - a[2] * a[2] < 0.0000010) System.out.println("Right-angled triangle"); else{ System.out.println("General triangle"); } } else System.out.println("Not a triangle"); } } 按正整数的相反数字顺序输出本题目要求输入一个正整数,按数字的相反顺序输出。
输入格式: 输入一个正整数。
输出格式: 按输入正整数的数字相反顺序输出一个数字。
输入样例: 5236
输出样例: 6325
编译程序
import java.util.Scanner; public class Main { public static void main(String[] args) { Scanner in=new Scanner(System.in); int n = in.nextInt(); int m; while(n != 0){ m = n % 10; n /= 10; System.out.print(m); } } } 作品评分全国中小学生Scratch作品大赛拉开了序幕。每个参赛选手可以通过网络直接上传作品。本次比赛人人可做评委。每个网络评委可以通过网络对每一件作品进行打分。评分系统也是请程序高手设计的,能自动去掉一个最高分和一个最低分,求出平均分。
输入格式: 输入数据包括两行: 第一行为n,表示n个评委,n>2。 第二行是n个评委的打分,分数之间有一个空格。打分是可以带有小数部分的。
输出格式: 输出平均分,结果保留两位小数。
输入样例: 6 10 9 8 7.9 9 9.5
输出样例: 8.88
编译程序
- 初步版:
这里常见问题是,一个个输入数,会超时,因此将他们读成字符串,然后提取有效数据 具体详解:作品评分
- 改进版:
中国人非常喜欢6这个数字,因为大家总爱说66大顺啊。数学狂人李某人喜欢把什么都数字化,于是她把顺利这个词也定义了数量级,6代表1级顺利,66代表2级顺利,666代表3级顺利,以此类推。你看,数学狂人的世界总是让人无法理解。今天,李某人决定将数学进行到底,现在她设前n级顺利的和是sn。
sn=6+66+666+…+66…66(n个6)。
假设你已经知道了数字n,那么,你能帮李某人求出sn么?
输入格式: 输入一个正整数n,n的范围是[0,10)。
输出格式: 输出Sn的值。
输入样例: 2
输出样例: 72
编译程序
import java.util.Scanner; public class Main { public static void main(String[] args) { Scanner in=new Scanner(System.in); int n = in.nextInt(); int[] a = {0, 6, 66, 666, 6666, 66666, 666666,6666666, 66666666, 666666666}; int i, sum = 0; for(i = 0; i <= n; i++) sum += a[i]; System.out.println(sum); } }- 递归版本
版权声明:本文标题:#Java学习#习题二 内容由林淑君副主任自发贡献,该文观点仅代表作者本人, 转载请联系作者并注明出处:http://www.xiehuijuan.com/baike/1686639663a89430.html, 本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌抄袭侵权/违法违规的内容,一经查实,本站将立刻删除。
发表评论