一、选择题
1.分析如下Java代码,编译运行的输出结果是( )。(选择一项)
public static void main(String[ ] args) {
boolean a=true;
boolean b=false;
if (!(a&&b)) {
System.out.print("!(a&&b)");
}else if (!(a||b)) {
System.out.println("!(a||b)");
}else {
System.out.println("ab");
}
}
A!(a&&b)
B.!(a||b)
C.ab
D.!(a||b)ab
2.下列选项中关于变量x的定义,( )可使以下switch语句编译通过。(选择二项)
switch(x) {
case 100 :
System.out.println("One hundred");
break;
case 200 :
System.out.println("Two hundred");
break;
case 300 :
System.out.println( "Three hundred");
break;
default :
System.out.println( "default");
}
Adouble x = 100;
B.char x = 100;
C.String x = “100”;
D.int x = 100;
3.给定如下Java代码,编译运行的结果是( )。(选择一项)
public class Test {
public static void main(String[] args) {
int sum=0;
for(int i=1;i<10;i++){
do{
i++;
if(i%2!=0)
sum+=i;
}while(i<6);
}
System.out.println(sum);
}
}
A8
B.15
C.24
D.什么也不输出
4.以下选项中添加到代码中横线处会出现错误的是( )。(选择二项)
public class Test {
public float aMethod(float a, float b) {
return 0;
}
}
A.
public float aMethod(float a, float b, float c) {
return 0;
}
B.
public float aMethod(float c, float d) {
return 0;
}
C.
public int aMethod(int a, int b) {
return 0;
}
D.
private int aMethod(float a, float b) {
return 0;
}
5.以下关于方法调用的代码的执行结果是( )。(选择一项)
public class Test {
public static void main(String args[]) {
int i = 99;
mb_operate(i);
System.out.print(i + 100);
}
static void mb_operate(int i) {
i += 100;
}
}
A.99
B.199
C.299
D.99100
二、简答题
1. if多分支语句和switch语句的异同之处。
异:多选择结构与switch的关系:当布尔表达式是等值判断的情况,可使用多重选择结构或switch结构, 如果布尔表达式区间判断的情况,则只能使用多重选择结构。同:都是选择结构
2. break和continue语句的作用。
break退出当前循环,continue则是退出本次循环,直接跳到循环末尾进行下一次循环。
3. 在多重循环中,如何在内层循环中使用break跳出外层循环。
使用标签break退出外层循环。
例:
outLoop: for(int i=1;i<=5;i++) { //break标签
for(int j=1;j<=5;j++) {
if(i==3)
break outLoop; //使用break 标签
System.out.println("i:"+i+" j:"+j);
}
}
}
4. 方法重载的定义、作用和判断依据。
方法的重载是指一个类中可以定义多个方法名相同,但参数不同的方法。 调用时,会根据不同的参数自动匹配对应的方法。
作用:用相同方法名,不同的含义(形参类型、形参个数、形参顺序)来表达不同的方法
判断依据:看形参类型、形参个数、形参顺序是否相同
5. 递归的定义和优缺点。
递归:递归的基本思想就是“自己调用自己”,一个使用递归技术的方法将会直接或者间接的调用自己。
优点:程序简单,代码量小,易理解。
缺点:占用大量的系统堆栈,内存耗用多。
三、编码题
1. 从键盘输入某个十进制整数数,转换成对应的二进制整数并输出。
import java.util.ArrayList;
import java.util.Scanner;
public class Third1 {
public static void main(String[] args) {
Scanner scanner = new Scanner(System.in);
System.out.println("请输入一个整数:");
int num = scanner.nextInt();
ArrayList<Integer> nums = new ArrayList<>();
java.util.Collections.reverse(nums);
code(num,nums);
System.out.print("该整数的二进制数为:");
for (Integer integer : nums) {
System.out.print(integer);
}
}
static void code(int num,ArrayList<Integer> nums) {
if(num>0) {
nums.add(num%2);
num /= 2;
code(num,nums);
}
}
}
2. 编程求:∑1+∑2+……+∑100。
public class Third2 {
public static void main(String[] args) {
int sum = 0;
for(int i=1;i<=100;i++) {
sum += add(i);
}
System.out.println(sum);
}
static int add(int num) {
if(num==1) {
return 1;
}else {
return (num+add(--num));
}
}
}
3. 编写递归算法程序:一列数的规则如下: 1、1、2、3、5、8、13、21、34… 求数列的第40位数是多少。
public class Third3 {
static int i =1;
static int inum1 =1;
static int inum2 =1;
public static void main(String[] args) {
System.out.println(add(40));
}
static int add(int num) {
if(i<num-1){
int k = inum2;
inum2 = inum1+inum2;
inum1 = k;
i++;
add(num);
}
return inum2;
}
}