Java菜题

编程语言:Java

 2019年全国高校计算机能力挑战赛分设大数据算法赛(所谓的内部试题)

一、选择题(共15题,每题3分,共45分)

1. 在Java中下列说法正确的是(  )

A、一个子类可以有多个父类,一个父类也可以有多个子类

B、一个子类可以有多个父类,但一个父类只可以有一个子类

C 一个子类可以有一个父类,但一个父类可以有多个子类

D、上述说法都不对

2. 关于Java垃圾回收机制描述不正确的是(   )

A、垃圾回收机制不须通过程序调用相应方法,也能自动启动。

B、Java程序用System.gc()方法一定能进行垃圾回收;

C、垃圾回收机制属于jvm自动操作,java程序可以不进行垃圾回收操作。

D、垃圾回收机制并不是由操作系统自动执行。

3. 面向对象技术领域内占主导地位的标准建模语言是(    )

   AC++  BJava    CC#   DUML

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 FilesJavajdk1.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、程序编译错误,不能运行;

二、程序设计题(5道题,共55分)

1.(10) 统计1N以内质数的个数,并输出这个数目。

输入说明:一个整数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();
    }
}
原文地址:https://www.cnblogs.com/dgwblog/p/11724997.html