一、选择题

  1. A。运算符&&是根据“短路”原则运算的,根据程序可知a&&b为false,则!(a&&b)为真,所以输出!(a&&b),答案为A。
  2. BD。选项A的x是浮点型,选项C的x是字符串,而程序中的case标签都是整型字面常量,能与之匹配的只有选项B和D,对于选项B,Java允许给一个字符型变量赋值整型数值。
  3. A。程序中是在for循环中嵌套do while循环,当i >= 6时,sum的值不会再改变。
  4. AC。选项A的参数个数不同,选项C的参数类型是int,而float不能自动转换成int型。公共方法和私有方法不影响方法的重载。
  5. B。注意程序中的mb_operate(int i)方法是没有返回值的,所以调用此方法后不会产生返回值,JAVA中的参数传递是值传递,不会改变实参的值,所以在main方法中,i的值始终保持为99,并没有发生改变。

二、简答题

  1. **相同之处:**两者都能实现多分支的处理。
    **不同之处:**两者的判断条件有所不同,if多分支语句的判断条件基本上都是布尔值,而switch语句的选项值可以是数据常量表达式、枚举常量,还可以是字符串字面量。而且,在处理多分支时,switch语句比if多分支语句更简洁。
  2. 两者都能中断控制流程,break既可以用于循环语句中,也可以用于switch语句中,而continue只能用于循环语句中。break是终止循环,不再继续执行循环,而是执行循环语句之后的其他语句,而continue是中止本次循环,继续执行下一轮循环。
  3. 使用带标签的break语句可以在内层循环跳出外层循环。
  4. 方法的重载是指一个类中可以定义多个方法名相同,但参数不同的方法。编译器会用各个方法首部中的参数类型与特定方法调用中所使用的值类型进行匹配,来选出正确的方法。如果编译器找不到匹配的参数,就会产生编译时错误,因为根本不存在匹配。为了让方法名相同而形式参数不同的构造器同时存在,必须要用到方法重载。同时,尽管方法重载是构造器所必需的,但它也可以用于其他方法,且用法同样方便。
  5. 递归的基本思想就是“自己调用自己”,一个使用递归技术的方法将会直接或者间接的调用自己。优点:对于简单的程序,使用递归能很好地解决一些问题。缺点:递归调用会占用大量的系统堆栈,内存消耗过大,在递归调用层次多时速度要比循环慢的多。

三、编码题

  1. 代码如下:
import java.util.*;
public class TestTo {
	public static void main(String[] args) {
		Scanner in = new Scanner(System.in);
		System.out.print("输入一个十进制整数:");
		int a = in.nextInt();  //从键盘接收一个十进制整数
		int[] ans = new int[40];  //声明并初始化一个可以存储40个整数的数组ans,用来存放十进制数的每一位
		int num = 0;  //num为位数
		do {  //进制转换
			ans[num++] = a % 2;
			a /= 2;
		}while(a != 0);
		System.out.print("对应的二进制数为:");
		for(int i = num-1; i >= 0; i--) {  //注意是从高位到低位进行输出
			System.out.print(ans[i]);
		}
	}
}
  1. 代码如下:
public class TestSum {
	public static void main(String[] args) {
		int sum = 0;
		for(int i = 1; i <= 100; i++) {
			for(int j = i; j >= 1; j--) {
				sum += j;
			}
		}
		System.out.println(sum);
	}
}
  1. 代码如下:
import java.util.*;
public class TestFabolaqie {
	public static void main(String[] args) {
		Scanner in = new Scanner(System.in);
		System.out.print("你想求数列的第几位数?");
		int a = in.nextInt();
		System.out.printf("数列的第%d位数为:%d", a, f(a));
	}
	static int f(int n) {
		if(n == 1 || n == 2) return 1;
		else return f(n-2) + f(n-1);
	}
}