zoukankan      html  css  js  c++  java
  • 三十道随机算法

    9.29

    一家软件公司程序员二柱的小孩上了小学二年级,老师让家长每天出30道四则运算题目给小学生做。

    课堂测试1:像二柱子那样,花二十分钟写一个能自动生成30道小学四则运算题目的 “软件”

    课堂测试2:(1)题目避免重复; (2)可定制(数量/打印方式);

    课堂测试3: 1、可定制(数量/打印方式):输入大的数量值,测试一下系统是否崩溃,反向查找系统是否优化的余地; 2、定制操作数的个数;3、定制是否有乘除法; 4、定制是否有括号(随机加入); 5 、定制数值范围(确定操作数的取值范围)

    目前只能实现到可定制,仍需改进。

    package ClassTest;
    import java.util.Random;
    import java.util.Scanner;
    public class math2 {
        static Scanner sc = null;
        public static int s1 = new Random().nextInt(100);
        public static int s2 = new Random().nextInt(100);
        public static int s3 = new Random().nextInt(100);
        public static int a[][]=new int[100000][2] ;//用于从操作数
     
        public static int s[]=new int[100000];//用于存操作符
     
        public static void main(String[] args) {
     
            sc = new Scanner(System.in);
            System.out.println("请输入题数:");
            int n=sc.nextInt();
            System.out.println("请输入每行的题数:");
            int m=sc.nextInt();
     
            for(int i=0;i<n;i++) {
                if((i)%m==0)
                    System.out.print("\n");
                System.out.print((i+1)+":");
     
                //产生随机数
                s1 = new Random().nextInt(100);
                System.out.print(s1);
                s2 = new Random().nextInt(100);
                s3 = new Random().nextInt(100);            
     
                //检查重复
                    a[i][0]=s1;
                    a[i][1]=s3;
                    s[i]=s2;
                for(int j=0;j<i;j++) {
                    if(a[j][0]==s1&&a[j][1]==s3&&s[j]==s2) {
                        s3 = new Random().nextInt(100);
                        while(s3==a[i][1]) {
                            s3 = new Random().nextInt(100);
                    }
                    s3 = new Random().nextInt(100);
                    while(s3==a[i][1]) {
     
                    }
                }}
     
                //判断操作符
                if(s2%4==0)
                    System.out.print("+");
                if(s2%4==1) {
                    System.out.print("-");
     
                        while(s1<s3) {
                            s3 = new Random().nextInt(100);
                        }
     
                }
     
                if(s2%4==2) {
                    System.out.print("*");
                    while(s1*s3>=100) {
                        //s1 = new Random().nextInt(100);
                        s3 = new Random().nextInt(100);
                    }
                }
     
                if(s2%4==3) {
                    System.out.print("/");
                    while(s3!=0&&s1/s3!=0){
                        //s1 = new Random().nextInt(100);
                        s3 = new Random().nextInt(100);
                    }
                }
     
                System.out.print(s3);
                System.out.print("=");
                System.out.print(" "+'\t');
            }
     
        }
     
    }

    程序截图:

  • 相关阅读:
    数据库课程设计_购书管理系统代码(sql_c#及sql_java)
    你离不开的数组
    getchar的用法
    字母大小写转化
    C语言乘除颠覆你的世界观
    循环的执行过程、适用情况和常见错误
    斐波那契数和数小方块的类型题分析方法
    C语言刷题需要注意的地方
    函数那些事
    逻辑与、或、非的使用方法
  • 原文地址:https://www.cnblogs.com/wangdayang/p/13779682.html
Copyright © 2011-2022 走看看