判斷題
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);
}
}