判断题
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);
}
}
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;
this.pp = 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
编译程序
import java.util.Scanner;
public class Main {
public static void main(String[] args) {
Scanner scan=new Scanner(System.in);
String n=scan.nextLine();
String s=scan.nextLine();
int len=s.length();
double sum=0,aver=0,maxn=-1,minn=0x3f3f3f3f;
int cnt=0;
int x=Integer.parseInt(n);
while(cnt<len) {
int flag=0;
for(int i=cnt;i<len;i++) {
if(s.charAt(i)==' ') {
flag=1;
String ss=s.substring(cnt,i);
double q=Double.parseDouble(ss);
if(q>maxn)
maxn=q;
if(q<minn)
minn=q;
sum+=q;
cnt=i+1;
break;
}
}
if(flag==0){
String ss=s.substring(cnt,len);
Double q=Double.parseDouble(ss);
if(q>maxn)
maxn=q;
if(q<minn)
minn=q;
sum+=q;
break;
}
}
aver=(sum-minn-maxn)/(x-2);
System.out.printf("%.2f\n",aver);
}
}
这里常见问题是,一个个输入数,会超时,因此将他们读成字符串,然后提取有效数据
具体详解:作品评分
666
中国人非常喜欢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);
}
}