java 第三章流程控制语句课后题2021-03-05

(一)选择题

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));

版权声明:本文为yyy1350956533原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接和本声明。