判断题
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=1∑nk!,并输出计算结果。
输入格式:
输入正整数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;
}