笔试强训(六)

一、选择题

(1)下面哪个赋值语句是正确的(ABD)

A long test=012
B float f=-412
C int other =(int)true
D double d=0x12345678
E byte b=128

012 (8进制) 等于 10(10进制) A正确
可以将一个int类型的整数赋值给float B正确
Java 的 boolean 类型和 int 不能相互转换, 不存在 1 表示 true, 0 表示 false 这样的用法. C错误
可以将int类型的整数赋值给double D正确
byte能存储的数据范围是-128~127,范围之外的数值赋值给byte类型将报错 E错误

(2)在Java中下面Class的声明哪些是错误的?(ABC)

A public abstract final class Test { abstract void method();}
B public abstract class Test { abstract final void method();}
C public abstract class Test { abstract void method() { } }
D public class Test { final void method() { } }

abstract和final不能同时使用,故AB错误
被abstract修饰的方法是不能实现的,也就是()后面不能有{},故C错误

(3)阅读下列程序,选择哪一个是正确的输出结果(C)
在这里插入图片描述
A static A I’m A class static B I’m B class
B I’m A class I’m B class static A static B
C static A static B I’m A class I’m B class
D I’m A class static A I’m B class static B

1、父类静态代码块优先于子类静态代码块执行,且是最早执行
2、父类实例代码块和父类构造方法紧接着执行
3、子类的实例代码块和子类构造方法紧接着再执行
4、第二次实例化子类对象时,父类和子类的静态代码块都将不会再执行

若父类显式定义无参或者默认的构造方法,在子类构造方法第一行默认有隐含的super()调用,即调用基类构造方法

(4)关于抽象类与最终类,下列说法错误的是?(D)
A 抽象类能被继承,最终类只能被实例化。
B 抽象类和最终类都可以被声明使用
C 抽象类中可以没有抽象方法,最终类中可以没有最终方法
D 抽象类和最终类被继承时,方法可以被子类覆盖

最终类不能被继承

二、编程题

2.1 不要二

2.1.1 题目

在这里插入图片描述

2.1.2 题解

题目分析:如果(x1,y1)放了蛋糕,则满足 ( (x1-x2) * (x1-x2) + (y1-y2) * (y1-y2) ) == 4的(x2,y2)不能放蛋
糕。
( (x1-x2) * (x1-x2) + (y1-y2) * (y1-y2) ) == 4看起来是一个无解的表达式。
但是可以进行加法表达式分解:
1+3=4
3+1=4
2+2=4
0+4=4
4+0=4
仔细分析前三个表达式是不可能的,因为(x1-x2) * (x1-x2)表达式结果不能等于2或3。
也就是说( (x1-x2) * (x1-x2) 和(y1-y2) * (y1-y2) )两个表达式一个等于0,一个等于4.
可以看出:假设放蛋糕的位置是(x1,y1),则不能放蛋糕的位置(x2,y2),满足x1=x2,y1-y2=2或者x1-
x2=2,y1=y2.

具体步骤:

创建一个和盒子同样大小的数组,初始化二维数组中元素全部尾0,用0表示当前位置可以放蛋糕,1表示当前位置不可以放蛋糕,遍历数组,遇到0则count++,同时将arr[i+1][j] 和 arr [i][j+1]的位置置为1,遍历结束后,count的大小为能放蛋糕的格子数

代码:

 public static void main(String[] args) {
        Scanner in = new Scanner(System.in);
        int W=in.nextInt();
        int H=in.nextInt();
        int count=0;
        int[][] arr=new int[H][W];
        for(int i=0;i<H;i++){
            for(int j=0;j<W;j++){
               if(arr[i][j]==0){
                   count++;
                   if(i+2<H){
                       arr[i+2][j]=1;
                   }
                   if(j+2<W){
                       arr[i][j+2]=1;
                   }
               }
            }
        }
        System.out.println(count);
    }
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值