一、选择题(以下选项中,ABCD四项中至少有一项或多项是正确的(多选、少选、错选均没分),共30题,每题2分,共60分)
1、Java源文件和编译后的文件扩展名分别为( B )
A、.class和.java
B、.java和.class
C、.class和.class
D、.java和.java
2、下列表达式1+2+”aa”+3的值是( C )
A、12aa3
B、12aa
C、3aa3
D、aa3
3、以下的变量定义语句中,合法的是( C )
A、float _*5=123.456F
B、byte $_b1=12345
C、double d = 9.88
D、int long = 123456L
4、在JAVA中,以下代码运行的结果是( C )
public class BWF {
public static long add(double a,double b){
return (long)(a+b);
}
public static void main(String[] args){
Double sum=add(12.3, 4.6);
System.out.println(sum);
}
}
A、16.9
B、17
C、16.0
D、16
5、在Java下列变量名不符合命名规则的是( AC )(多选)
A、int ^abc
B、String _abc
C、double 32b
D、char $abc
6、开发Java程序有三个步骤:A.编译B.编写源程序C.运行,开发Java程序的正确顺序是( D )
A、ABC
B、ACB
C、BCA
D、BAC
7、给定Java代码,如下:编译运行,结果是( A )
public static void main(String[] args)
{
String s;
System.out.println(“s=”+s);
}
A、编译错误
B、编译通过,但出现运行时错误
C、正常运行,输出s=null
D、正常运行,输出s=
8、给定某Java程序片段,该程序运行后,i的输出结果为( B )
public static void main(String[] args)
{
int i=1;
int j=i++;//j=1
if((i>++j)&&(i++==j))
i+=j;
System.out.println(i);
}
A、1
B、2
C、3
D、4
注:前运算符:先自运算,当次取运算后的值;
后运算符:当次取运算前的值,然后运算,下次碰到该变量取运算后的值。
9、关于Java编程规范,说法错误的是( D )
A、变量的命名一般要求“见名知义”,提高代码的可读性
B、每行推荐只写一条语句
C、”{“一般放在结构开始行的最末,”}”与该结构的第一个字母对齐,并单独占一行
D、类的命名推荐使用小写。例如动物类:animal
10、在Java中,以下程序的编译运行结果是( C )
public class BWF {
static int x;
static boolean z;
public static void main(String args[])
{
System.out.println(x);
System.out.println(z);
}
}
A、运行时错误
B、输出:0
true
C、输出:0
false
D、输出:0
0
注:成员变量不赋初始值,值类型默认值为0,boolean类型默认值为false。
11、下列哪些是Java的关键字( C )
A、class main string
B、If double class main string
C、static void public int
D、以上都对
注:main是主函数名,不是java占用的关键字。
12、下列说法中对while和do-while描述错误的是( D )
A、While循环和do-while循环语法不同
B、While循环先判断再执行
C、Do-while循环至少执行1次在判断条件
D、Do-while循环是先判断在循环
注:do-while循环是先执行一次循环体,再判断。
13、分析如下所示的Java代码,编译运行后的输出结果是( C )
public class BWF {
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.print(“!a||b”);
}else{
System.out.print(“ab”);
}
}
}
A、!a&&b
B、!a||b
C、ab
D、!a||ab
14、在JAVA中,以下功能是查找Java的数组num。中的最大值,横线处的代码是( C )
public class BWF {
public static void main(String args[])
{
int[] num = {14,27,9,56,03};
int max=___;
for(int i=1;i<____;i++)
{
if(max
注:第一次i输出为2。
17、下列语句序列执行后,k的值是( D )
int x=6,y=10,k=5;
switch(x % y)
{
case 0: k=x*y;
case 6: k=x/y;
case 12: k=x-y;
default : k=x*y-x;
}
A、60
B、5
C、0
D、54
注:没有break,所以会一直执行到最后一行default语句。
18、在JAVA中,以下选项会导致死循环的是( C )
A、for(int i = 0;i<0;i++){}
B、for(int i = 10;i>0;i–){}
C、for(int i = 0;i<10;i–){}
D、for(int i = 0;i>0;i++){}
19、在Java中如下选项中的代码能够正确执行的有( AB ) (多选)
A、short[] b = new short[10]
B、short b[] = new short[10]
C、short b = new short [10]
D、short b = new short[]
20、在Java的for语句中,对break,continue, return的使用,下列说法不正确的选项为( C )
A、break和return都能结束for循环
B、continue只是跳过本次循环,不再执行continue关键字后面的代码,不影响后面的 循环次数
C、break、return结束for循环的区别在于,break是结束方法的执行,return是结束for 循环
D、break、return不仅可以在for循环中使用,也可以在switch控制语句中使用
21、在Java中,以下代码的输出结果是( C )
public class BWF {
public static void main(String args[]){
int i=0;
while(i<5){
if(i>3)
break;
i++;
if(i<3){
System.out.println(“i小于3”);
continue;
}
System.out.println(“Final”);
}
}
}
A、i小于3
i小于3
Final,Final
B、i小于3
i小于3
C、i小于3
i小于3
Final
Final
D、编译错误
22、在JAVA中,以下代码的运行结果是( D )
public class BWF {
public static void main(String args[]){
int[] num=new int[10];
for(int i=0;i
注:注意没有break,所以会一直执行到最后一行。
26、下面Java代码的横线处不可以填写的代码是( B )
public static void main(String args[])
{
int a=_(int)__10/3.1
__;
}
A、10%3
B、10/3.1
C、10*-3
D、3-10
27、在Java中,变量命名规范说法正确的是( B )
A、变量由字母、下划线、数字、$符号随意组成
B、变量不能以数字作为开头
C、A和a在Java中是同一个变量
D、不同类型的变量,可以起相同的名字
28、在Java中,下面不属于Java的基本数据类型的是( D )
A、float
B、int
C、boolean
D、String
29、在Java中,以下赋值语句正确的是( BC )(多选)
A、int num1=(int)”12”;
B、int num2=(int)12.0;
C、double num3=2d;
D、double num4=5;
注:float类型中的f/F必须加,double类型中的d可加可不加。
30、在Java中,命名类时要遵守一些规则,以下说法错误的是( C )
A、不能使用Java中的关键字
B、不能包含任何嵌入的空格或点号
C、不能包含下划线和“$”符
D、不能以数字开头
二、编程题(编程实现下列问题,共4题,每题10分,共40分)
1、有一对兔子,从出生后第3个月起每个月都生一对兔子,小兔子长到第三个月后每个月 又生一对兔子,假如兔子都不死。问第20个月后兔子总数为多少?(提示://兔子的规律为数列1,1,2,3,5,8,13,21.…)
循环:
public static void main(String[] args){
//定义本月、上月、上上月的兔子对数
int thisMonth = 0;
int lastMonth1 = 0;
int lastMonth2 = 0;
//观察规律得出除了第一、二个月都是1对外,
//本月兔子对数为上月+上上月,做循环
for (int i = 1; i <= 20; i++) {
if (i == 1 || i == 2) {
thisMonth = 1;
lastMonth1 = 1;
} else {
thisMonth = lastMonth1 + lastMonth2;
}
//每轮循环把上月的赋给上上月,本月的赋给上月
lastMonth2 = lastMonth1;
lastMonth1 = thisMonth;
}
System.out.println(thisMonth * 2);
}
递归函数:
public static long sum(int month) {
// 定义兔子总数sum,第一、二个月sum为1*2,
// 第三个月开始本月的兔子数为上月+上上月,使用递归函数
long sum = 0;
if (month == 1 || month == 2) {
return sum = 1 * 2;
} else {
return sum = (sum(month - 1) + sum(month - 2)) * 2;
}
}
2、一球从100米高度自由落下,每次落地后反跳回原高度的一半(即一回合);再落下,求它在第10次落下时弹到最高处,共经过多少米?第10次反弹多高?
循环:
public static void main(String[] args) {
// 定义总距离s,弹起距离t,落下距离luoxia
double s = 100;
double t = 100;
double luoxia = 0;
for (int i = 1; i <= 10; i++) {
t = t / 2;
// 从第二次开始,需要加落下的距离
if (i > 1) {
luoxia = t * 2;
}
s = s + t + luoxia;
}
System.out.println(s);
System.out.println(t);
}
递归函数:
public static void main(String[] args) {
System.out.println(distanceS(10));
System.out.println(distance(10) / 3);
}
// 第十次的距离
public static double distance(int cishu) {
double d1 = 150;
if (cishu == 1) {
return d1 = 150;
} else {
return d1 = distance(cishu - 1) / 2;
}
}
// 总距离
public static double distanceS(int cishu) {
double dS = 0;
if (cishu == 1) {
return dS = distance(1);
} else {
return dS = distance(cishu) + distanceS(cishu - 1);
}
}
3、给出年月日,计算改日是该年的第几天。
public static void main(String[] args) {
System.out.println(days(2017, 3, 1));
}
public static int days(int year, int month, int day) {
int days = 0;
for (int i = 1; i < month; i++) {
switch (i) {
case 1:
case 3:
case 5:
case 7:
case 8:
case 10:
case 12:
days += 31;
break;
case 4:
case 6:
case 9:
case 11:
days += 30;
break;
case 2: {
if (year % 4 == 0 && year % 100 == 0 || year % 400 == 0) {
days += 29;
break;
} else {
days += 28;
break;
}
}
}
}
return days = days + day;
}
4、在控制台输入3个整数a,b,c,按大小顺序输出。
public static void main(String[] args) {
Scanner scan = new Scanner(System.in);
int[] a = new int[3];
// 循环三次把控制台输入的数赋给数组a
for (int i = 0; i < 3; i++) {
a[i] = scan.nextInt();
}
// 使用冒泡排序对数组a排序
for (int i = 1; i < a.length; i++) {
for (int j = 0; j < a.length - i; j++) {
if (a[j] > a[j + 1]) {
int temp = a[j];
a[j] = a[j + 1];
a[j + 1] = temp;
}
}
}
System.out.println(Arrays.toString(a));
}