(一)选择题
1.设x和y为int型变量,则执行下面的循环后,y的值为(C)
for (y=l,x=l;y<=50;y++)
{if(x>=10)
break;
if(x%2==1){
x+=5;
continue;
}
x-=3;
}
A. 2
B. 4
C. 6
D. 8
2.下列循环中,执行break outer语句后,所列哪条语句将被执行 ( C )
outer:for(int i=1;i<10;i++){
inner:for(int j=1;j<10;j++){
if(i*j>50)
break outer;
System.out.println(i*j);
}
}
next:
A.标号为inner的语句
B.标号为outer的语句
C.标号为next的语句
D.以上都不是
3.下列循环中,执行continue outer语句后,哪种说法正确(A)
outer:for(int i=1;i<10;i++){
inner:for(int j=1;j<10;j++){
if(i*j>50)
continue outer;
System.out.println(i*j);
}
}
next:
A.程序控制在外层循环中并且执行外层循环的下一迭代
B.程序控制在内层循环中并且执行内层循环的下一迭代
C.执行标号为next的语句
D.以上都不是
4.下列语句序列执行后,x 的值是(B)
int a=4, b=1, x=6;
if(a= =b) x+=a;
else x=++a*x;
A.15
B.30
C.25
D.5
5.有以下代码,运行完后i的最终值是(B)
public class Foo {public static void main(String[] args) {
int i = 1;
int j = i++;
if ((i > ++j) && (i++ == j))
i += j;
}
}
A.1
B.2
C.3
D.4
6.下列语句序列执行后,k 的值是(D)
int i=4,j=5,k=9,m=5;
if(i>j || m<k) k++;
else k–;
A.5
B.9
C.8
D.10
7.在switch(expression)语句中,expression的数据类型不能是( C )
A.byte
B.char
C.float
D.short
9.有以下代码,其中变量i可能的类型是(A)
switch (i) {default:
System.out.println("Hello");
}
A.byte
B.long
C.double
D.A and B
10.下列语句序列执行后,i的值是©
int s=1, i=1;
while( i<=4 ) {
s= s*i ;
i++;
}
A.6
B.4
C.24
D.5
11.下列语句序列执行后,m的值是(B)
int m=1;
for( int i=5; i>0; i-- )
m*=i;
A.15
B.120
C.60
D.0
12.以下由 for 语句构成的循环执行的次数是(D)
for ( int i = 0; i >0; i++)
A.有语法错,不能执行
B.无限次
C.执行1次
D.一次也不执行
13.下列语句中执行跳转功能的语句是©
A.for语句
B.while语句
C.continue语句
D.switch语句
14.下列对Java语言的叙述中,错误的是(B)
A.Java虚拟机解释执行字节码
B.Java中执行跳转功能的语句是switch语句
C.Java的类是对具有相同行为对象的一种抽象
D.Java中的垃圾回收机制是一个系统级的线程
15.Java 支持的3 种跳转语句不包括(D)
A.break语句
B.continue语句
C.return语句
D.goto语句
(二)简答题
1.写出下面程序的运行结果:
public class ForBar {public static void main(String[] args) {
int i = 0, j = 5;
tp: for (;;) {
i ++;
for(;;)
if(i > --j) break tp;
}
System.out.println("i = " + i + ", j = "+ j);
}
}
i = 1, j = 0
2.阅读下列程序,写出程序的运行结果。
public class abc{
public static void main(String args[ ]){
int i , s = 0 ;
int a[ ] = { 10 , 20 , 30 , 40 , 50 , 60 , 70 , 80 , 90 };
for ( i = 0 ; i < a.length ; i ++ ){
if ( a[i]%3 == 0 )
s += a[i] ;
}
System.out.println("s="+s);
}
}
s=180
3.读程序写结果。
public class Continue_exe {public static void main(String[] args) {
int sum = 0;
for (int i = 1; i <= 10; i++) {
if (i % 2 != 0)
continue;
else
sum += i;
}
System.out.println("和为:" + sum);
}
}
和为:30
4.阅读下面的程序段,回答问题。
if ( x < 5 )
System.out.print(" one ");
else{if ( y < 5 )
System.out.print(" two ");
else
System.out.println(" three ");
}
1)若执行前 x=6, y=8,该程序段输出是什么?
three
(2)若执行前 x=1, y=8,该程序段输出是什么?
one
5.阅读下面程序片段,试回答程序执行后n的值是多少?22
int j=12,i=6,n=19;
switch(j-i)
{case 5: n=n-i;
break;
case 6: n=n+9;
case 7: n=n-i;
break;
default:n=n*2;
}
6.阅读下面do-while程序片段,写出程序的执行结果。
int i=0,total=0;
do{
i=i+2;
System.out.println("i="+i);
total=total+(i++)*2;
}while(i<12);
System.out.println("总数为:"+total);
i=2
i=5
i=8
i=11
总数为:52
7.阅读下列有关break语句的程序,写出程序的输出结果。
public class BreakTest {public static void main(String[] args) {
int i = 3, j;
outer: while (i > 0) {
j = 3;
inner: while (j > 0) {
if (j < 2)
break outer;
System.out.println(j + "and" + i);
j--;
}
i--;
}
}
}
3and3
2and3
8.阅读下列有关continue语句的程序,写出程序的输出结果。
public class ContinueTest {public static void main(String[] args) {
int n = 10;
for (int i = 1; i <= n; i++) {
if (n % i != 0)
continue;
System.out.print(i + ",");
}
}
}
1,2,5,10,
(三)编程题
1.企业发放的奖金根据利润提成。利润低于或等于10万元时,奖金可提10%;利润高于10万元,低于20万元时,低于10万元的部分按10%提成,高于10万元的部分,可提成7.5%;20万到40万之间时,高于20万元的部分,可提成5%;40万到60万之间时高于40万元的部分,可提成3%;60万到100万之间时,高于60万元的部分,可提成1.5%,高于100万元时,超过100万元的部分按1%提成,在程序中设定一个变量为当月利润,求应发放奖金总数?
public static void main(String[] args) {
double conn=20,lr;
if (conn<=10) {
lr=conn*0.1;
}
else if (conn<=20) {
lr=10*0.1+(conn-10)*0.075;
}else if (conn<=40) {
lr=1+0.75+(conn-20)*0.05;
}else if (conn<=60) {
lr=1+0.75+1+(conn-40)*0.03;
}else if(conn<=100){
lr=1+0.75+1+0.6+(conn-60)*0.015;
}else {
lr=1+0.75+1+0.6+0.6+(conn-100)*0.01;
}
System.out.println("应发放奖金总数:"+lr+"万");
}
2.给定一个成绩a,使用switch结构求出a的等级。A:90-100,B:80-89,C:70-79,D:60-69,E:0~59。
public static void main(String[] args) {
int a=100;
switch (a/10) {
case 10:
case 9:
System.out.println("A");
break;
case 8:
System.out.println("B");
break;
case 7:
System.out.println("C");
break;
case 6:
System.out.println("D");
break;
default:
System.out.println("E");
break;
}
}
3.假设某员工今年的年薪是30000元,年薪的年增长率6%。编写一个Java应用程序计算该员工10年后的年薪,并统计未来10年(从今年算起)总收入。0
public static void main(String[] args) {
double sal=30000,sum=0;
for (int j = 1; j <=10; j++) {
sal+=sal*0.06;
sum+=sal;
}
System.out.println("10年后的年薪:"+sal+"未来10年总收入"+sum);
}
4.猴子第一天摘下若干个桃子,当即吃了一半,还不瘾,又多吃了一个,第二天早上又将剩下的桃子吃掉一半,又多吃了一个。以后每天早上都吃了前一天剩下的一半零一个。到第10天早上想再吃时,见只剩下一个桃子了。求第一天共摘了多少。
public static void main(String[] args) {
int sum=1;
for (int j = 1; j < 10; j++) {//循环9次
sum=(1+sum)*2;
}
System.out.println("第一天共摘了"+sum+"个");
}
5.输入一个数字,判断是一个奇数还是偶数。
public static void main(String[] args) {
int a=scanner.nextInt();
System.out.print(a+"是一个");
System.out.println(a%2==0?"偶数":"奇数");
}
6.编写程序, 判断一个变量x的值,如果是1,输出x=1,如果是5,输出x=5,如果是 10,输出x=10,除了以上几个值,都输出x=none。
public static void main(String[] args) {
Scanner scanner=new Scanner(System.in);
int x=scanner.nextInt();
switch (x) {
case 1:
System.out.println("x=1");
break;
case 5:
System.out.println("x=5");
break;
case 10:
System.out.println("x=10");
break;
default:
System.out.println("x=none");
break;
}
}
7.判断一个数字是否能被5和6同时整除(打印能被5和6整除),或只能被5整除(打印能被5整除),或只能被6整除,(打印能被6整除),不能被5或6整除,(打印不能被5或6整除)
Scanner scanner=new Scanner(System.in);
int x=scanner.nextInt();
if (x%5==0&&x%6==0) {
System.out.println("能被5和6整除");
}else if (x%5==0) {
System.out.println("能被5整除");
}else if (x%6==0) {
System.out.println("能被6整除");
}else {
System.out.println("不能被5和6整除");
}
8.输入一个年份,判断这个年份是否是闰年。
Scanner scanner=new Scanner(System.in);
int x=scanner.nextInt();
if (x%400!=0) {
System.out.println(x%4==0&&(x%100!=0)?"是闰年":"不是闰年");
}else {
System.out.println("是闰年");
}
9.输入一个0~100的分数,如果不是0~100之间,打印分数无效,根据分数等级打印A,B,C,D,E。
Scanner scanner=new Scanner(System.in);
int x=scanner.nextInt();
if (x<100&&x>0) {
switch (x/10) {
case 10:
case 9:
System.out.println("A");
break;
case 8:
System.out.println("B");
break;
case 7:
System.out.println("C");
break;
case 6:
System.out.println("D");
break;
default:
System.out.println("E");
break;
}
}else {
System.out.println("分数无效");
}
10.输入三个整数x,y,z,请把这三个数由小到大输出。
Scanner scanner=new Scanner(System.in);
int x=scanner.nextInt();
int y=scanner.nextInt();
int z=scanner.nextInt();
if (x >= y) {
if (y >= z) {
System.out.println(z + "," + y + "," + x);
} else if (x >= z) {
System.out.println(y + "," + z + "," + x);
} else {
System.out.println(y + "," + x + "," + z);
}
} else {
if (x >= z) {
System.out.println(z + "," + x + "," + y);
} else if (y >= z) {
System.out.println(x + "," + z + "," + y);
} else {
System.out.println(x + "," + y + "," + z);
}
}
11.有一个不多于5位的正整数,求它是几位数,分别打印出每一位数字。
Scanner scanner=new Scanner(System.in);
int x=scanner.nextInt();
int s=0,a=1;
System.out.print("每一位数字以个十百千的顺序依次打印");
if (x<100000) {
while (x/a>0) {
System.out.print(x/a%10+"\t");
a*=10;
s++;
}
System.out.println(s+"位数");
}else {
System.out.println("输入错误!");
}
12.编写一个程序,计算邮局汇款的汇费。如果汇款金额小于100元,汇费为一元,如果金额在100元与5000元之间,按1%收取汇费,如果金额大于5000元,汇费为50元。汇款金额由命令行输入。
Scanner scanner=new Scanner(System.in);
int x=scanner.nextInt();
if (x<=100) {
System.out.println("汇费为1元");
} else if (x<=5000) {
System.out.println("汇费为"+x*(1+0.01)+"元");
}
else {
System.out.println("汇费为50元");
}
13.分别使用for循环,while循环,do循环求1到100之间所有能被3整除的整数的和。
int sum=0;
//for循环
for (int i = 1; i <=100; i++) {
if (i%3==0) {
sum+=i;
}
}
System.out.println("1到100之间所有能被3整除的整数的和为:"+sum);
//while循环
int i=1;sum=0;
while (i++<=100) {
if (i%3==0) {
sum+=i;
}
}
System.out.println("1到100之间所有能被3整除的整数的和为:"+sum);
i=1;sum=0;
//do-while循环
do {
if (i%3==0) {
sum+=i;
}
i++;
}
while (i<100);
System.out.println("1到100之间所有能被3整除的整数的和为:"+sum);
14.输出0-9之间的数,但是不包括5。
for (int i =0; i <=9; i++) {
if (i!=5) {
System.out.print(i+"\t");
}
}
编写一个程序,求整数n的阶乘,例如5的阶乘是1*2*3*4*5。
Scanner scanner=new Scanner(System.in);
int n=scanner.nextInt();
int result=1;
for (int i = 1; i <= n; i++) {
result*=i;
}
System.out.println(n+"的阶乘是"+result);
16.编写一个程序,找出大于200的最小的质数。
for (int i = 201; ; i++) {
boolean y=true;
for (int j=2; j<i; j++) {
if (i%j==0) {
y=false;
}
}
if (y==true) {
System.out.println("大于200的最小的质数:"+i);
break;
}
}
17.由命令行输入一个4位整数,求将该数反转以后的数,如原数为1234,反转后的数位4321。
Scanner scanner=new Scanner(System.in);
int x=scanner.nextInt();
int a=x%10;
int b=x/10%10;
int c=x/100%10;
int d=x/1000%10;
System.out.println("反转后的数:"+(a*1000+b*100+c*10+d));