Java流程控制语句-PTA答案

判断题

Java中的switch-case分支结构的特点是等值判断。它能用if分支结构进行改写。(T)

Java中的switch-case分支结构中,一旦控制表达式的计算结果与某个case值匹配成功,就执行完该case对应的语句块,即结束switch-case语句。 (F)
解析:当出现 break 关键词后才会结束,不然会导致穿刺继续顺序执行下去。

在JDK1.8及以后的版本中,使用如下语句是否正确? (T)

String str="*******";
  switch(str)
  {
     case "abc":
       //...
        break;
     case "def":
       //.....
       break;
   }

break语句只用于循环语句中,它的作用是跳出循环。 (F)
解析:switch-case 的 branch 语句也用 break 语句

循环嵌套是指在一个循环语句的循环体中再定义一个循环语句的语法结构。while、do…while、for循环语句都可以进行嵌套,并且它们之间也可以互相嵌套。(T)

Java中continue语句的作用是结束本次迭代,开始下一次迭代。(T)

在switch语句中必须要有default选项。(F)
解析
default选项的使用可以让switch语句更加灵活,可以让程序更加完善,也可以减少代码的重复使用。它的使用可以让程序更加简洁,也可以减少编写的时间,从而提高程序的效率。
default选项的使用也可以帮助程序员更好地处理异常情况。如果在switch语句中没有满足条件的case,那么就可以在default选项中处理这些异常情况,从而避免出现程序错误。
default选项也可以用来处理程序中的边界情况。比如,在某个switch语句中,case的取值范围是1-10,但是如果传入的参数不在这个范围内,那么就可以在default选项中处理这种情况,从而避免出现程序错误。
switch语句中不是必须有default选项的,这是因为switch语句是根据case选项的值来判断的,如果满足条件的case选项存在,则会执行相应的代码,而不会执行default选项中的代码,因此如果case选项中的值可以覆盖所有可能的情况,则不需要default选项。

while(表达式)…语句中的“表达式”的值必须是boolean型数据。(T)

选择题

假设有如下程序:

public class Demo {
        public static void main(String args[]) {
                 boolean flag = 10%2 == 1 && 10 / 3 == 0 && 1 / 0 == 0 ;
                 System.out.println(flag ? "mldn" : "yootk") ;
        }
}

最终执行结果是什么?(B)
A.mldn
B.yootk
C.true
D.程序出错

编译运行以下程序后,关于输出结果的说明,正确的是(B)。

public class Main {
    public static void main(String[] args) {
        int x = 4;
        System.out.println("value is "+((x>4)?99.9:9));
    }
}

A.输出结果为: value is 99.99
B.输出结果为: value is 9
C.输出结果为: value is 9.0
D.编译错误

下面代码运行结果显示(C)。

double temperature = 50;
if (temperature >= 100)
   System.out.println("too hot");
else if (temperature <= 40)
   System.out.println("too cold");
else
   System.out.println("just right");

A.too hot
B.too cold
C.just right
D.too hot too cold just right

下列语句序列执行后,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

以下表达式中,(A)不可作为循环条件。(A)
A.x = 10
B.y >= 80
C.inputPass == truePass
D.m !=3
解析:循环条件必须是一个“布尔类型”的值。而A是赋值语句,其值不是布尔类型。

while循环和 do…while循环的区别是:(D)
A.没有区别,这两个结构任何情况下效果一样
B.while循环比 do…while循环执行效率高
C.while循环是先循环后判断,所以循环体至少被执行一次
D.do…while循环是先循环后判断,所以循环体至少被执行一次

在JAVA中,给定代码片段如下所示,则编译运行后,输出结果是(B)。

 for (int i = 0; i < 10; i++) {
    if (i == 10 - i) {
        break;
    }
    if (i % 3 != 0) {
        continue;
    }
    System.out.print(i + " ");
}

A.0
B.0 3
C.0 3 6
D.0 3 6 9
解析
i=0 —> if1不执行 if2不执行 --> 输出0
–> i=1 —> if1不执行 if2执行
–> i=2 —> if1不执行 if2执行
–> i=3 —> if1不执行 if2不执行 --> 输出3
–> i=4 —> if1不执行 if2执行
–> i=5 —> if1执行
——> 跳出循环,结束

下面代码将输出(B)行 "Welcome to Java"?。

int count = 0;
do {
     System.out.println("Welcome to Java");
} while (count++ < 10);

A.10
B.11
C.9
D.1
解析:do-while会多执行一次,0-9一共执行10次,这时候会count++,count==10再执行一次,一共执行11次,这时候10<10错误,跳出循环

分析下列代码的运行结果是什么?(A)

void looper(){

    int x=0;
    one:
    while(x<20) {
        two:
            System.out.print(++x);
            if(x>3)
              break two;
    }
}

A.编译错误
B.0
C.1
D.2
解析:在Java中,标签语句(label statement)不能标记在非循环语句(non-iteration statement)上。“two:” 标签被标记在了条件语句 “if(x>3)” 上,而条件语句不是循环语句。要想让这段代码能够编译通过,你需要将标签语句标记在循环语句上,比如标记在 while 循环语句之前。

下列选项中不属于本段代码输出结果的是(D)

public class Main{
    public static void main(String args[]) {
      one:
      two:
      for(int i=0; i<3; i++) {
          three:
          for(int j=10; j<30; j+=10) {
             System.out.println(i+j);
             if(i>0)
                break one;
          }
      }
    }
}

A.10
B.20
C.11
D.21
解析:i=0时候,i+j=10,20,继续循环;i=1,i+j=11,会跳转到two,i=2,之后不会有21

挑错题(A,B,C,D注释标注的哪行代码有错误?)(B)

public class Test {
	public static void main(String args[]){
		int m=1000;
		while (m>100) //A{
			m = m--; //B
			if (m == 600){ //C
				continue;
				m++; //D
			}
			System.out.println("m= "+m);
		}
	}

}

A.
B.
C.
D.
解析:A,C,D正确,B含有两个后缀自减运算符,它们的执行顺序是未定义的,也就是说,Java 不保证它们的执行顺序。因此,这段代码的行为是未定义的,可能会产生出乎意料的结果。

填空题

public class E {

public static void main(String[] args) {
    int x = 1,y = 6;
    while (y-->0){
      x--;
    }
    System.out.print("x = "+x+",y="+y);
}
}

x =-5,y=-1

程序填空题

功能:求1!+2!+3!+4!+5!。

public class Main {
    public static void main(String[] args) {
        fun();
    }
    public static void fun(){
        int n,j;
        //float s=0.0,t=1.0;//此行语句有错误,改正后填到下侧空格内
        float s = 0.0f, t = 1.0f;
        for(n=1;n<=5;n++){
            //s=1;//此行语句有错误,改正后填到下侧空格内         
            t=1;
            for(j=1;j<=n;j++){
                //t=t*n;//此行语句有错误,改正后填到下侧空格内
                t = t * j;
            }
            //s+t=s;//此行语句有错误,改正后填到下侧空格内
             s = s + t;
        }
        System.out.printf("jiecheng=%.0f\n",s);
    }
}

编程题

判断点是否在圆内?

编写程序,提示用户输入一个点(x,y),然后检查这个点是否在以原点(0,0)为圆心、半径为10的圆内或圆的边界上。
提示:

在这里插入图片描述

输入格式:
输入任意一个点的x轴和y轴坐标值,且两个值之间空格分隔。

输出格式:
若点在圆内,输出1,否则输出0。

输入样例:

4 5

输出样例:

1

代码:

import java.util.Scanner;

public class Main {
    public static void main(String[] args) {
        Scanner scanner = new Scanner(System.in);
        //System.out.print("请输入一个点(x,y)的坐标,用空格分隔:");
        double x = scanner.nextDouble();
        double y = scanner.nextDouble();
        double distance = Math.sqrt(x * x + y * y); // 计算点到原点的距离
        if (distance <= 10) { // 判断点是否在圆内或圆上
            System.out.println("1");
        } else {
            System.out.println("0");
        }
    }
}

if-else基础训练-计算年利率

基本年利率7.7%

如果一年以内利率给5折
如果三年以内利率为7折
如果五年以内利率为100%
如果五年以上利率为1.1倍
输入一个年份,计算这个年份下的实际利率是多少?

输入格式:
输入一个整数。例如:6。

输出格式:
实际利率=8.47%

输入样例:
6

输出样例:
实际利率=8.47%

输入样例:
-1

输出样例:
error

代码:

import java.util.Scanner;

public class Main {
    public static void main(String[] args) {
        Scanner scanner = new Scanner(System.in);
        //System.out.print("请输入一个年份:");
        int year = scanner.nextInt();
        
        double baseRate = 7.7; // 基本年利率
        double actualRate = 0.0; // 实际利率
        
        if (year <= 0) {
            System.out.println("error");
            return;
        } else if (year <= 1) {
            actualRate = baseRate * 0.5;
        } else if (year <= 3) {
            actualRate = baseRate * 0.7;
        } else if (year <= 5) {
            actualRate = baseRate;
        } else {
            actualRate = baseRate * 1.1;
        }
        if(year>5||year<=3)
        System.out.printf("实际利率=%.2f%%\n", actualRate);
        else
          System.out.printf("实际利率=%.1f%%\n", actualRate);   
    }
}

打印99乘法表

打印99乘法表

输入样例:

不需要输入

输出样例:
在这里给出相应的输出。要求:99乘法表中,每个表达式的乘法结果长度为3。

1x1=1  
2x1=2  2x2=4  
3x1=3  3x2=6  3x3=9  
4x1=4  4x2=8  4x3=12 4x4=16 
5x1=5  5x2=10 5x3=15 5x4=20 5x5=25 
6x1=6  6x2=12 6x3=18 6x4=24 6x5=30 6x6=36 
7x1=7  7x2=14 7x3=21 7x4=28 7x5=35 7x6=42 7x7=49 
8x1=8  8x2=16 8x3=24 8x4=32 8x5=40 8x6=48 8x7=56 8x8=64 
9x1=9  9x2=18 9x3=27 9x4=36 9x5=45 9x6=54 9x7=63 9x8=72 9x9=81 

代码:

public class Main {
    public static void main(String[] args) {
        for (int i = 1; i <= 9; i++) {
            for (int j = 1; j <= i; j++) {
                System.out.printf("%dx%d=%-2d ", i, j, i * j);
            }
            System.out.println();
        }
    }
}

累加求和

输入20以内的整数,编程计算
∑ k = 1 n k ! \sum_{k=1}^{n} k! k=1nk,并输出计算结果。

输入格式:
输入正整数N,1<=N<=20

输出格式:
输出计算结果

输入样例:
在这里给出一组输入。例如:

20

输出样例:
在这里给出相应的输出。例如:

2561327494111820313

代码:

import java.math.BigInteger;
import java.util.Scanner;

public class Main {
    public static void main(String[] args) {
        Scanner scanner = new Scanner(System.in);
        //System.out.print("请输入一个正整数:");
        int n = scanner.nextInt();
        
        BigInteger sum = BigInteger.ZERO; // 阶乘和
        
        for (int i = 1; i <= n; i++) {
            BigInteger factorial = BigInteger.valueOf(1);
            for (int j = 1; j <= i; j++) {
                factorial = factorial.multiply(BigInteger.valueOf(j));
            }
            sum = sum.add(factorial);
        }
        
        System.out.println(sum);
    }
}

分解质因数

求出区间[a,b]中所有整数的质因数分解。

输入格式:
输入两个整数a,b。数据规模和约定  2<=a<=b<=10000

输出格式:
每行输出一个数的分解,形如k=a1a2a3…(a1<=a2<=a3…,k也是从小到大的)(具体可看样例)

输入样例:
在这里给出一组输入。例如:

3 10

输出样例:
在这里给出相应的输出。例如:

3=3
4=2*2
5=5
6=2*3
7=7
8=2*2*2
9=3*3
10=2*5
#include <stdio.h>

void primeFactorization(int n) {
    int i;
    for (i = 2; i <= n; i++) {
        while (n % i == 0) {
            printf("%d", i);
            n /= i;
            
            if (n != 1) {
                printf("*");
            }
        }
    }
}

int main() {
    int a, b;
    //printf("请输入两个整数a和b(以空格分隔):");
    scanf("%d %d", &a, &b);
    
    int i;
    for (i = a; i <= b; i++) {
        printf("%d=", i);
        primeFactorization(i);
        printf("\n");
    }
    
    return 0;
}
  • 26
    点赞
  • 27
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
1给定如下Java程序,编译运行时,将在()出现错误。(选一项) public class Test{ public static void main(String[]args){ int i= 0; //a语句 for(;i5){ String test = “hello”; //c语句 } } System.out.println(test); //d语句 } } A.a B.b C.c D.d(出作用域) 2在Java中,下列代码运行结果是()。(选一项) public static void main(String[]args){ int a = 1,b=2,c=3; if(a<0){ if(b<0) c=10; else c=20; } System.out.pritnln(c); } A.输出:10 B.输出:20 C.输出:3 D.编译错误 3给定如下Java代码片段,编译运行时的结果是()。(选一项) int i= 2; switch(i) { default: System.out.pritnln(“default”); case 0: System.out.println(“zero”); break; case 1: System.out.pritnln(“one”); break; case 2: System.out.println(“two”); } A输出:default B输出:default C输出:two zero D编译出错,default语句的位置不符合switch结构的语法结构 4在Java中,要向控制台打印输出“Welcome to Space!”并自动换行,可以实现此功能的语句是()。(选一项) a) System.print(“Wecome to Space!”); b) System.out.print(“Wecomr to Space!”); c) System.out.println(“Wecome to Space!”); d) System.println(“Wecome to Space!”); 5分析下面的Java源程序,编译后的运行结果是()。(选一项) import java,util.*; public class Test{ public static void main(String[] args){ int[]numbers = new int[]{2,1,3}; Arrays.sort(numbers); System.out.println(Arrays.binarySearch(numbers,2)); } } A.输出:0 B.输出:1 C.输出:2 D.输出:3 6分析下面的Java程序,编译运行结果是()。(选一项) public class B{ public static void main(String[]args){ String s =”y”; System.out.println(s+1+2); System.out.println(1+2+s); } } A输出:y12 B输出:y12 C输出:y3 D程序编译出错 3y 12y 3y 7分析下面的Java代码片段,编译运行后的输出结果是()。(选一项) for(int i = 0;i<6;i++){ int k = ++i; while(k<5){ System.out.print (i); break; } } A.024 B.02 C.123 D.13 8在Java中,源文件Test.java中包含如下代码段,则程序编译运行结果是( )。(选择一项) public class Test{ public static main (String [ ] args) { system.out.print(“Hello!”); } } A输出:Hello! B编译出错,提示“无法解析system” C运行正常,但没有输出任何内容 D运行时出现异常 9在Java中,给定代码片段如下所示,则编译运行后,输出的结果是()。(选择一项) for (int i = 0; i < 10; i++) { if(i==10-i){ break; } if(i%3!=0){ continue; } System.out.print(i+" ");} A.0 B.0 3 C.0 3 6 D.0 3 6 9 10分析下面JAVA程序段,编译运行后的输出结果是().(选择l项) public class Test{ public void changeString(StringBuffer s){ s.append(“stringbuffer2”); } Public static void main(String[] args){ Test a = new Test(); StringBuffer sb = new StringBuffer(“stringbuffer1”); a.changeString(sb); System.out.println(“sb=”+sb); } } A.sb=stringbuffer2stringbuffer1 B.sb=stringbuffer1 C.sb=stringbuffer2 D.sb=stringbuffer1stringbuffer2 11给定一个Java程序的代码如下所示,则编译运行后,输出结果是()。(选择一项) public class Test { int count=9; public void count(){ System.out.println("count="+count++); } public static void main(String[] args) { new Test().count(); new Test().count(); } } A.count=9 B.count=10 C.count=10 D.count=9 count=9 count=9 count=10 count=10 12在Java语言中,有如下代码: (选择两项) 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; } 下列x的定义中,()可能使得上段代码编译通过。 A.double x=100; B.char x=100; C.String x=”100”; D.Int x=100; 13给定如下所示的Java代码,要使这段代码能够编译成功,横线处应该填入( )。(选择一项) Public______count(int i,double d){ return i*d; } A.void B.int C.char D.double 14在java中,源文件Test.java中包含如下代码段,则编译运行结果是(). public class HelloWorld{ public static void main(String[] args){ System.out.print(“Hello World!”); } } A输出:Hello Word! B编译出错,提示“共有类HelloWorld 必须在HelloWorld.java文件中定义”。 C运行正常,但没有输出内容 D运行时出现异常。 15java类的main方法如下所示,当程序启动运行后,用户在控制台输入“你好”,则程序将()。(选择一项) public static void main(String args[]){ Scanner input=new Scanner(System.in); int score=input.nexInt(); System.out.println(score); } A输出“你好” B输出“你“ C程序运行正常,但是不输出任何内容。 D程序出现错误,被中断,提示输入内容不匹配,无法获得整型数值。 16分析如下所示的Java代码,编译运行后的输出结果是( )。 (选择一项) public static void main(String arg [ ] ) { boolean b = true; System.out.print(b); if (b) { System.out.print(“真”); } else { System.out.print(“假”); } } A.true B.true 真 C.tere 假 D.1 17在Java中,Scanner类提供从控制台获取键盘输入的功能,下列语句()能够正确实例化Scanner类的对象,用于获得键盘输入的数据。(选一项) a) Scanner input = new Scanner(System.out); b) Scanner input = new Scanner(System.in); c) Scanner input = new Scanner(System); d) Scanner input = new Scanner(); 18关于Java类中带参数的方法,下列选项中的说法错误的是( )。 (选择一项) A使用带参数的方法分为两步:1.定义带参数的方法:2.调用带参数的方法 B带参数方法的返回值不能为void C带参数方法的参数个数可以为一个或多个 D带参数方法的参数可以是任意的基本类型数据或引用类型数据 19在Java语言的控制结构中,break语句是经常用到的语句。下面一段代码中break语句起到( )的作用。 (选择一项) int pointer=0; while(pointer<=10){ switch(pointer%3){ case 1: pointer+=1; break; case 2: pointer+=2; break; default: pointer+=3; break; } } A结束当次循环,使控制权直接转移到控制循环的条件表达式 B从嵌套循环内部跳出最里面的循环 C终止switch语句语句序列,提高switch-case语句性能 D退出循环
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值