一. 单选
1. 下列与队列结构有关联的是()
A 函数的递归调用
B 数组元素的引用
C 多重循环的执行
D 先到先服务的作业调度
答案
D
2. 类所实现接口的修饰符不能为()
A void
B public
C abstract
D final
答案
D
3. 下列关于栈叙述正确的是( )。
A 算法就是程序
B 设计算法时只需要考虑数据结构的设计
C 设计算法时只需要考虑结果的可靠性
D 以上三种说法都不对
答案
D
4. 下面关于abstract关键字描述错误的是()
A abstract关键字可以修饰类或方法
B final类的方法都不能是abstract,因为final类不能有子类
C abstract类不能实例化
D abstract类的子类必须实现其超类的所有abstract方法
答案
D
解析:如果abstract类的子类也是抽象类,则子类不需要实现父类的所有的抽象方法
5. 结构化程序的三种基本结构是( )
A 递归、迭代和回溯
B 过程、函数和子程序
C 顺序、选择和循环
D 调用、返回和选择
答案
C
6. 对于abstract声明的类,下面说法正确的是
A 可以实例化
B 不可以被继承
C 子类为abstract
D 只能被继承
E 可以被抽象类继承
答案
E
7. 1GB 的准确值是( )
A 1024×1024 Bytes
B 1024 KB
C 1024 MB
D 1000×1000 KB
答案
B
二. 不定项选择
1. 下面选项中,哪些是interface中合法方法定义?()
A public void main(String [] args);
B private int getSum();
C boolean setFlag(Boolean [] test);
D public float get(int x);
答案
A C D
解析: 接口中所有的方法默认是 public 修饰 ,接口中使用 private 修饰方法会出现编译错误(被 private 修饰的方法不能被重写,接口的方法就是用来重写的)
2. 下面哪些类实现或继承了 Collection 接口?
A HashMap
B ArrayList
C Vector
D Iterator
答案
B C
3. 对于jdk1.8,以下为 java 语法保留不能作为类名和方法名使用的是
A default
B int
C implements
D throws
答案
A B C D
三. 编程
1. ACM编程题 标题:计算糖果 | 时间限制:1秒 | 内存限制:32768K
A,B,C三个人是好朋友,每个人手里都有一些糖果,我们不知道他们每个人手上具体有多少个糖果,但是我们知道以下的信息:
A - B, B - C, A + B, B + C. 这四个数值.每个字母代表每个人所拥有的糖果数.
现在需要通过这四个数值计算出每个人手里有多少个糖果,即A,B,C。这里保证最多只有一组整数A,B,C满足所有题设条件。
输入描述:
输入为一行,一共4个整数,分别为A - B,B - C,A + B,B + C,用空格隔开。 范围均在-30到30之间(闭区间)。
输出描述:
输出为一行,如果存在满足的整数A,B,C则按顺序输出A,B,C,用空格隔开,行末无空格。 如果不存在这样的整数A,B,C,则输出No
示例1:
输入
1 -2 3 4
输出
2 1 3
答案
import java.util.Scanner;
public class Main {
public static void main(String[] args) {
Scanner in = new Scanner(System.in);
int x = in.nextInt();
int y = in.nextInt();
int z = in.nextInt();
int j = in.nextInt();
int A = (x+z)/2;
int B = (y+j)/2;
int C = B - y;
int B2 =(z-x)/2;
//奇数除以2会有舍入误差,所有得再加起来检验一下:
if(B == B2 && B>=0 && C>=0 && (A-B) == x && (B-C) == y && (A+B) == z && (B+C) == j){
System.out.print(A+" "+B+" "+C);
}else{
System.out.print("No");
}
}
}
2. ACM编程题 标题:进制转换 | 时间限制:1秒 | 内存限制:32768K
给定一个十进制数M,以及需要转换的进制数N。将十进制数M转化为N进制数
输入描述:
输入为一行,M(32位整数)、N(2 ≤ N ≤ 16),以空格隔开。
输出描述:
为每个测试实例输出转换后的数,每个输出占一行。如果N大于9,则对应的数字规则参考16进制(比如,10
用A表示,等等)
示例1:
输入
7 2
输出
111
答案
将 十进制 对 进制数 取模,余数值即为当前低进制的位的值
public class Main {
public static void main(String[] args) {
Scanner in = new Scanner(System.in);
while (in.hasNextInt()) {
int m = in.nextInt();
int n = in.nextInt();
StringBuilder s = new StringBuilder();
String table = "0123456789ABCDEF"; // 用来存储2-16进制的所有可能
boolean flag = false; // 标记是否为负数
if( m < 0){
m = -m;
flag = true; // 如果为负数标记为true
}
if( m == 0){
s.append("0");
}
while( m != 0){
s.append(table.charAt(m%n));
m = m / n;
}
if(flag){
s.append("-");
}
s.reverse();
System.out.print(s);
}
}
}