2026年7月14日-作业.md 7.8 KB

2026-07-14 JavaSE 课后作业

课程内容:流程控制、运算符(算术/赋值/比较/逻辑/位/三目)、运算符优先级
提交方式:在 提交\姓名\ 目录下创建对应的 Java 源文件
截止时间:下次上课前


一、基础题(必做)

题目 1:判断闰年

难度:⭐
知识点:if-else、逻辑运算符、算术运算符

从键盘输入一个年份(整数),判断该年份是否为闰年。

闰年规则(满足其一即可)

  1. 能被 4 整除但不能被 100 整除;或者
  2. 能被 400 整除

要求

  • 定义 int year 变量并赋值为要判断的年份
  • 使用 if-else 分支结构
  • 使用逻辑运算符 &&||
  • 输出格式:xxxx 年是闰年xxxx 年不是闰年

示例输出

2024 年是闰年
2025 年不是闰年

题目 2:三个数比大小

难度:⭐
知识点:三目运算符、if-else

定义三个整数变量 abc,找出其中的最大值并输出。

要求

  • 方法一:使用三目运算符嵌套实现
  • 方法二:使用 if-else 实现
  • 两种方法都写在同一个文件中(分别注释标注)

示例输出

三个数中最大的值是: 78

题目 3:位运算练习

难度:⭐
知识点:位运算符

定义两个整数 int m = 27int n = 15,计算并输出以下位运算的结果,并在注释中写出每一步的二进制运算过程

int m = 27, n = 15;
// 1. m & n  (按位与)
// 2. m | n  (按位或)
// 3. m ^ n  (按位异或)
// 4. ~m     (按位取反)
// 5. m << 2 (左移2位)
// 6. n >> 2 (右移2位)

示例注释格式

// 27 & 15
//  0001 1011  ← 27
// & 0000 1111  ← 15
// --------
//  0000 1011  → 11
System.out.println("27 & 15 = " + (27 & 15));  // 11

二、进阶题(必做)

题目 4:水仙花数判定

难度:⭐⭐
知识点:算术运算符(/%)、if-else

"水仙花数"是指一个三位数,其各位数字的立方和等于该数本身。例如:153 = 1³ + 5³ + 3³

要求

  • 定义一个三位数整数 int num = 153;(可自行修改测试其他数字)
  • 使用 /% 分别取出个位、十位、百位
  • 判断是否为水仙花数,并输出结果

示例输出

153 是水仙花数

提示

int num = 153;
int bai = num / 100;        // 百位
int shi = num / 10 % 10;    // 十位
int ge  = num % 10;         // 个位

题目 5:简易计算器

难度:⭐⭐
知识点:if-else、算术运算符、Scanner(选做)

定义两个整数 ab,以及一个字符变量 operator(取值为 '+''-''*''/''%'),根据运算符输出对应的运算结果。

要求

  • 使用 if-else if-else 多分支判断
  • 除号为 / 时,判断除数是否为 0,如果是则输出"除数不能为 0"
  • 取模为 % 时,同样判断除数是否为 0

示例输出 1

a = 20, b = 7, operator = '%'
20 % 7 = 6

示例输出 2

a = 20, b = 0, operator = '/'
除数不能为 0

题目 6:成绩等级判定(升级版)

难度:⭐⭐
知识点:if-else if-else、逻辑运算符、三目运算符

结合课堂练习的成绩等级判定,增加以下功能:

要求

  1. 定义 double score = 85.5;(可自行修改测试)
  2. 使用 if-else 实现以下等级判定:
分数范围 等级 评价语
90 ≤ score ≤ 100 A 优秀,继续保持!
80 ≤ score < 90 B 良好,再接再厉!
70 ≤ score < 80 C 中等,还需努力!
60 ≤ score < 70 D 及格,危险边缘!
0 ≤ score < 60 E 不及格,加油啊!
其他 无效 分数错误!
  1. 额外使用三目运算符判断该成绩是否及格(≥ 60 为及格),并输出结果
  2. 输出格式参考如下:

示例输出

成绩: 85.5 分
等级: B - 良好,再接再厉!
是否及格: 是

三、挑战题(选做)

题目 7:数字加密系统

难度:⭐⭐⭐
知识点:算术运算符、位运算符、三目运算符、综合运用

设计一个简单的 4 位数字加密系统。

加密规则

  1. 输入一个 4 位整数(如 1234
  2. 对每一位数字进行以下处理:
    • 每个数字加 5
    • 对 10 取余
    • 将第 1 位与第 4 位交换,第 2 位与第 3 位交换
  3. 输出加密后的数字

示例

原始数字: 1234
每位+5后: 6789
取余10后: 6789
交换后:   9876
加密结果: 9876

要求

  • 分别使用算术运算符(/%)取出每位数字
  • 使用三目运算符处理可能的负数情况
  • 输出每一步的中间结果(如上所示)
  • 可以尝试用位运算符对加密结果再次进行异或运算:加密结果 ^ 0xAA

题目 8:程序员智商测试

难度:⭐⭐⭐
知识点:运算符优先级、自增/自减、综合运用

请问以下代码的输出结果是什么?先手算,再用 IDE 验证

public class IQTest {
    public static void main(String[] args) {
        int a = 5, b = 3, c = 2;
        int result1 = a++ + ++b * c--;
        System.out.println("result1 = " + result1);
        System.out.println("a = " + a + ", b = " + b + ", c = " + c);

        int x = 10, y = 4;
        boolean flag = (x > y) && (++x > 10) || (y-- < 3);
        System.out.println("flag = " + flag);
        System.out.println("x = " + x + ", y = " + y);

        int m = 8, n = 3;
        int r = m++ - --n + ++m - n--;
        System.out.println("r = " + r);
        System.out.println("m = " + m + ", n = " + n);
    }
}

要求

  1. 先手算出每一步的中间结果,写在注释中
  2. 再运行代码验证,输出结果
  3. 分析 && 短路特性对执行结果的影响

题目 9:位运算权限系统

难度:⭐⭐⭐
知识点:位运算符(&|~<<)、综合运用

在计算机系统中,常用位运算来实现权限控制。假设一个系统的权限定义如下:

// 权限定义(每个权限占用一个二进制位)
int READ    = 1 << 0;  // 0001 = 1   读权限
int WRITE   = 1 << 1;  // 0010 = 2   写权限
int EXECUTE = 1 << 2;  // 0100 = 4   执行权限
int DELETE  = 1 << 3;  // 1000 = 8   删除权限

要求

  1. 定义一个用户权限变量 int userPerm = 0;(初始无权限)
  2. 使用 | 赋予用户读、写、执行权限:userPerm = READ | WRITE | EXECUTE;
  3. 使用 & 判断用户是否拥有某个权限(如判断是否有删除权限)
  4. 使用 &~ 取消用户的写权限
  5. 按以下格式输出每一步的结果:

示例输出

初始权限: 0 (无权限)
赋予权限(读|写|执行): 7
是否有删除权限? false
取消写权限后: 5
最终权限: 读取=有, 写入=无, 执行=有, 删除=无

提示

// 判断是否有写权限
boolean hasWrite = (userPerm & WRITE) == WRITE;

// 取消写权限
userPerm = userPerm & ~WRITE;

四、提交要求

  1. 提交 文件夹下创建【以你名字命名】的文件夹,然后复制 Java 源文件。比如:

image-20260714171229747

  1. 每个题目一个文件,命名格式:Demo_题目编号_姓名.java

    • 例如:Demo_01_张三.java
  2. 文件头部使用文档注释,包含:

    /**
    * @author 你的姓名
    * @title 题目X:题目名称
    * @create 2026/7/14
    */
    
  3. 代码整洁,有必要的注释

  4. 基础题(1~3)和进阶题(4~6)必做

  5. 挑战题(7~9)选做,学有余力的同学尝试完成