編程語言:Javajava
2019年全國高校計算機能力挑戰賽分設大數據算法賽(所謂的內部試題)算法
1、選擇題(共15題,每題3分,共45分)編程
1. 在Java中下列說法正確的是( )數組
A、一個子類能夠有多個父類,一個父類也能夠有多個子類app
B、一個子類能夠有多個父類,但一個父類只能夠有一個子類jvm
C、 一個子類能夠有一個父類,但一個父類能夠有多個子類編程語言
D、上述說法都不對ide
2. 關於Java垃圾回收機制描述不正確的是( )函數
A、垃圾回收機制不須經過程序調用相應方法,也能自動啓動。工具
B、Java程序用System.gc()方法必定能進行垃圾回收;
C、垃圾回收機制屬於jvm自動操做,java程序能夠不進行垃圾回收操做。
D、垃圾回收機制並非由操做系統自動執行。
3. 面向對象技術領域內占主導地位的標準建模語言是( )
A、C++ B、Java C、C# D、UML
4. 在Java語言中,如下( )不屬於基本數據類型。
A、 int B、boolean C、 String D、 double
5. Java語言類間的繼承關係是( )。
A、單繼承 B、多重繼承 C、不能繼承 D、不必定
6. 如下關於構造方法的描述正確的是( )。
A、構造方法的返回類型只能是void型。
B、構造方法是類的一種特殊函數,它的方法名必須與類名相同。
C、構造方法的主要做用是完成對類的對象的初始化工做。
D、通常在建立新對象時,系統會自動調用構造方法。
7. 下列關於java的運行環境說法錯誤的是 ( )。
A、CLASSPATH爲Java加載類(class or lib)路徑。
B、Java.exe是用來解釋執行Java類文件。
C、 JAVA_HOME的做用是指明JDK的安裝路徑,例如能夠設置成C:\Program Files\Java\jdk1.6.0_01。
D、 Java 語言編寫的程序是與平臺無關,因此不需要配置java的運行環境。
8. 下面的選項中,哪些項不屬於「汽車類」的屬性( )。
A、品牌 B、剎車 C、價格 D、速度
9. 下列兩個物品之間的關係不屬於繼承關係的是( )
A、卡和銀行卡 B、汽車和輪胎 C、人和學生 D、動物和狗
10. 下列兩個名詞之間的關係符合類和對象關係的是( )
A、交通工具和電動小汽車 B、警犬和牧羊犬
C、樓房和房間 D、圖書館和圖書
11.關於字符串,下列代碼書寫不正確的是( )
A、 String str = new String();
B、 String str = 「Hello」+「ACCP」;
C、 String str = 「123」+「Hello World!」;
D、 StringBuffer strBuf = new StringBuffer(「Hello World!」);
String str = strBuf;
12. 下列選項中關於Java中super關鍵字的說法錯誤的是( )。
A、super關鍵字是在子類對象內部指代其父類對象的引用
B、super關鍵字不只能夠指代子類的直接父類,還能夠指代父類的父類
C、子類能夠經過super關鍵字調用父類的方法
D、子類能夠經過super關鍵字調用父類的屬性
13. 下列Java代碼寫法錯誤的是( )
class Pet{ }
class Dog extends Pet{}
class Test{
public static void t(Pet p){}
}
A、Pet p = new Pet(); Test.t(p); B、Pet p = new Dog(); Test.t(p);
C、Dog p = new Dog(); Test.t(p); D、Dog p = new Pet(); Test.t(p);
14. 關於下列代碼說法正確的是( )。
public class Test{
public void a(){}
public void a(int i){}
public int a(){}
}
A、上述三個a方法是方法重載
B、上述三個a方法是方法重寫
C、上面代碼編譯通不過
D、上述三個方法是第一個和第二個a方法是方法的重寫,第三個a方法編譯會有問題。
15. 若是一個類的文件名爲Student.java,類的代碼爲:
public class Student {
public static void main(String[] args) {
System.out.println(4<<2);
}}
下列說法正確的是:( )
A、程序運行結果爲1; B、程序運行結果爲2;
C、程序運行結果爲16; D、程序編譯錯誤,不能運行;
2、程序設計題(5道題,共55分)
1.(10分) 統計1到N之內質數的個數,並輸出這個數目。
輸入說明:一個整數N;
輸出說明:質數的數量
輸入樣例:12
輸出樣例:5
public class Main { public static void main(String[] args) { Scanner input = new Scanner(System.in); int n = input.nextInt(); System.out.println(getResult1(n)); } private static int getResult1(int n) { int cot = 0; for (int i = 2; i <= n; i++) { if (isPrime(i)) { cot++; } } return cot; } private static boolean isPrime(int n) { boolean flag=true; for (int i = 2; i < n; i++) { if(n%i==0) { flag=false; } } return flag; } private static int getResult(int n) { int cot=0; boolean [] flag=new boolean[n+1]; Arrays.fill(flag, true); for (int i = 2; i <n; i++) { if(flag[i]) { cot++; for (int j = i*2; j < n; j+=i) { flag[j]=false; } } } return cot; } }
2.(10分) 某汽車組裝廠主要產品爲4輪沙灘越野車(3座)和6輪山地越野車(5座),這兩類車輛的輪胎是通用的,車內安裝的座位也是通用的。這些部件每個月初由供貨商送到倉庫,其它所需部件都有足夠多的庫存。組裝廠依據月初倉庫中的合格部件數量決定每類車輛的組裝數量。現有某月初倉庫中的兩類物品數量,請計算本月兩類汽車的產量。
輸入說明:兩種部件的合格品數量;
輸出說明:兩類汽車的生產數量;
輸入樣例:20 16
輸出樣例:2 2
public class Main2 { /** * 4x+6y=m; * 3x+5y=n; */ public static void main(String[] args) { Scanner input = new Scanner(System.in); int m,n,x,y; m=input.nextInt(); n=input.nextInt(); y=(3*m-4*n)/(3*6-4*5); x=(n-5*y)/3; System.out.println(x+" "+y); input.close(); } }
3.(10分) 內容檢索是計算機的強項,現有一段英文文字和一個英文關鍵詞,請找出這個關鍵詞在這段英文文字中的位置,若是該關鍵詞出現不止一次,請輸出該關鍵詞第一次出現的位置。
輸入說明:一段英文文字(含有空格和標點符號,以’!’做爲結束符)和一個英文關鍵詞;
輸出說明:關鍵詞第一次出現的位置,首位置記爲1;
輸入樣例:Today is Oct 9. There are seven cats in the house. They are very happy!
are
輸出樣例:23
public class Main3 { public static void main(String[] args) throws IOException { BufferedReader reader = new BufferedReader(new InputStreamReader(System.in)); String str = reader.readLine(); String obj_str = reader.readLine(); System.out.println(str.indexOf(obj_str)+1); } }
4.(10分) 統計二維整數數組中,橫向或縱向連續3個相鄰元素的最大和。
輸入說明:數組行數x列數 y, 二維整數數組中元素;
輸出說明:此數組中橫向或縱向連續3個相鄰元素的最大和。
輸入樣例:4 4
3 6 0 8
1 0 2 4
2 0 1 9
0 1 2 3
輸出樣例:21
3 6 0 8 2
3 6 0 8 4 3
3 6 0 8 5 6 4
3 6 0 8 5 6 7 5
package P; import java.util.Scanner; public class Main4 { public static void main(String[] args) { Scanner in = new Scanner(System.in); int n, m; n = in.nextInt(); m = in.nextInt(); int[][] matrix = new int[n][m]; for (int i = 0; i < n; i++) { for (int j = 0; j < m; j++) { matrix[i][j] = in.nextInt(); } } int Max = Integer.MIN_VALUE; for (int i = 0; i < n; i++) { for (int j = 0; j < m-2; j++) { int sum=0; for (int k = j; k < 3+j; k++) { sum+=matrix[i][k]; } Max=Math.max(Max, sum); } for (int j = 0; j < m-2; j++) { int sum=0; for (int k = j; k < 3+j; k++) { sum+=matrix[k][i]; } Max=Math.max(Max, sum); } } System.out.println(Max); in.close(); } }
5.(15分) 請對給出的一系列英文單詞按首字母進行排序,並輸出排序後的結果。
輸入說明:數字N,代表單詞數,接下來是N個英文單詞;
輸出說明:按字母序的排序結果。
輸入樣例:6
Apple banana Zebra Tuesday moon CAN
輸出樣例:Apple
banana
CAN
moon
Tuesday
Zebra
public class Main5 { public static void main(String[] args) throws IOException { Scanner input = new Scanner(System.in); TreeSet<String> treeSet = new TreeSet<>(new Comparator<String>() { @Override public int compare(String o1, String o2) { return o1.compareToIgnoreCase(o2); } }); int n = input.nextInt(); for (int i = 0; i < n; i++) { treeSet.add(input.next()); } treeSet.forEach((v)->{System.out.println(v);}); input.close(); } }