课后作业1

1.动手动脑
image
这里的两个方法基本上是一致的,形参的个数和算法相同,名字也一样。但是形参的类型不同,返回值的类型也不同,用到了方法的重载
2.课后作业
package exam;
import java.util.Random;
import java.util.Scanner;

class exam04 {
public static void main(String[] args) {
print();
}

// 随机生成30道四则运算题并答题
public static void print() {
    Random r = new Random();
    Scanner sc = new Scanner(System.in);

    int count = 0;   // 题目计数
    int correct = 0; // 答对数
    int wrong = 0;   // 答错数

    String[] notation = {"+", "-", "×", "÷"};
    int[] store1 = new int[50];
    int[] store2 = new int[50];

    for (int i = 0; i < 30; i++) {
        int index = r.nextInt(4);
        int num1 = r.nextInt(50) + 1;
        int num2 = r.nextInt(50) + 1;

        boolean check = judge(num1, num2, count + 1, store1, store2,index,i);
        if (check) {
            i--;
            continue;
        }
        store1[count] = num1;
        store2[count] = num2;
        //输出题目
        System.out.print((count + 1) + ". " + num1 + notation[index] + num2 + "=");
        int answer = sc.nextInt();
        // 计算正确答案
        int right = 0;
        switch (index) {
            case 0: right = num1 + num2; break;
            case 1: right = num1 - num2; break;
            case 2: right = num1 * num2; break;
            case 3: right = num1 / num2; break;
        }
        // 判断对错
        if (answer == right) {
            correct++;
        } else {
            wrong++;
            System.out.println("出现错误,正确答案是:" + right);
        }
        count++;
    }
    // 输出统计结果
    System.out.println("\n答题结束!");
    System.out.println("总题数:" + count);
    System.out.println("答对:" + correct);
    System.out.println("答错:" + wrong);
    double rate = (correct * 100.0) / count;
    System.out.printf("正确率:%.2f%%\n", rate);
    sc.close();
}
public static boolean judge(int num1, int num2, int count, int[] store1, int[] store2,int index,int i) {
    // 检查除法结果是否为整数
    if (index == 3 && num1 % num2 != 0) {
        i--;
        return true;
    }
    // 检查是否重复
    for (int j = 0; i < count - 1; j++) {
        if (num1 == store1[j] && num2 == store2[j]) {
            return true;
        }
    }
    // 检查减法结果是否为负数
    if (num1 - num2 < 0) {
        return true;
    }
    // 检查乘法结果是否为四位数
    if (num1 * num2 >= 1000){
        return true;
    }
    // 检查除数是否为0
    if (num2 == 0){
        return true;
    }
    return false;
}

}

posted @ 2025-10-08 14:36  王春奇  阅读(9)  评论(0)    收藏  举报