• 编写一个程序,写一个能自动生成30道小学四则运算题目的 “软件”。


    一、 编写一个程序,写一个能自动生成30道小学四则运算题目的 “软件”。

    实验要求:

          程序设计思想构建一个Head类,其中一个rand函数产生1-100随机数以便随时调用随机数。一个rand1函数生成1-20的随机数,构建3个整形数组以及一个字符数组长度都为30。用以储存两个运算的数据和运算符号。

    Add加法函数min减法函数 mult乘法函数division除法函数main界面函数

    界面函数有加减乘除专练和混合专练以及得出结果,choice函数利用随机数产生1-4四个数1代表加法2代表减法3代表乘法,4代表除法。循环随机数用来产生随机的加减乘除的30道题目。

    程序流程图:

     

    源程序:

    Head.java

     

    package xiaoxuesizeyunsuan;
    
    import java.util.Scanner;
    
    public class Head {
        Scanner input=new Scanner(System.in);
            double yes;
            int answer;
            int e;
            int j;
            int sum;
            int f;
            int[] data=new int[30];//结果数组
            int[] data1=new int[30];
            int[] data2=new int[30];
            String[] data3=new String[30];//运算符数组
            //加减法运算数值随机数
            public void rand() {
                double i=Math.random();//产生一个0-1.0的随机数
                e=1+(int)(i*100);//1-100
            }
            //乘法产生随机数
            public void rand1() {
                double i=Math.random();
                e=1+(int)(i*20);
            }
            //加法
            public void add() {
                rand();
                j=e;
                System.out.print(e);
                rand();
                System.out.print("+");
                System.out.print(e);
                System.out.println("=");
                sum=j+e;
            }
            //减法
            public void min() {
                    rand();
                    j=e;
                    System.out.print(e);
                    for(int i=1;i<100;i++) {
                    rand();
                    int z;//判断减法结果是否是负数
                    z=e;
                    if(j>=z)
                    {
                        break;
                    }
                    }
                    System.out.print("-");
                    System.out.print(e);
                    System.out.println("=");
                    sum=j-e;
                    
            }
            //乘法
            public void mult() {
                    rand1();
                    j=e;
                    System.out.print(e);
                    rand1();
                    System.out.print("*");
                    System.out.print(e);
                    System.out.println("=");
                    sum=j*e;
            }
            //除法
            public void division() {
                        rand();
                        j=e+1;
                        System.out.print(e+1);
                        rand();
                        System.out.print("/");
                        System.out.print(e+1);
                        System.out.println("=");
                        sum=j/(e+1);
            }
            public void choice() {
                double i=Math.random();
                f=1+(int)(i*4);
                }
            //界面
            public void menu() {
                System.out.println("1.加法专练");
                System.out.println("2.减法专练");
                System.out.println("3.乘法专练");
                System.out.println("4.除法专练");
                System.out.println("5.混合练习");
                System.out.println("6.输出上次结果");
                System.out.println("  请输入:");
                String choice1=input.next();
                switch(choice1) {
                case "1":
                    for(int i=0;i<30;i++) {
                        add();
                        data[i]=sum;
                        data1[i]=j;
                        data2[i]=e;
                        data3[i]="+";
                    }
                    System.out.println("是否作答?是:1否:2");
                    int c=input.nextInt();
                    if(c==1)
                    {
                        for(int i=0;i<30;i++)
                        { 
                            System.out.print(data1[i]+"+");
                            System.out.print(data2[i]);
                            System.out.print("=");
                            answer=input.nextInt();
                            if(answer==data[i]) {
                                yes++;
                            }
                            if(i==29) {
                                System.out.println("一共答对"+yes+"道题目");
                                System.out.println("正确率:"+(yes/30));
                            }
                        }
                        
                    }
                    break;
                case "2":
                    for(int i=0;i<30;i++) {
                        yes=0;
                        min();
                        data[i]=sum;
                        data1[i]=j;
                        data2[i]=e;
                        data3[i]="-";
                    }
                    System.out.println("是否作答?是:1否:2");
                    c=input.nextInt();
                    if(c==1)
                    {
                        for(int i=0;i<30;i++)
                        { 
                            System.out.print(data1[i]+"-");
                            System.out.print(data2[i]);
                            System.out.print("=");
                            answer=input.nextInt();
                            if(answer==data[i]) {
                                yes++;
                            }
                            if(i==29) {
                                System.out.println("一共答对"+yes+"道题目");
                                System.out.println("正确率:"+(yes/30));
                            }
                        }
                        
                    }
                    break;
                case "3":
                    for(int i=0;i<30;i++){
                        mult();
                        data[i]=sum;
                        data1[i]=j;
                        data2[i]=e;
                        data3[i]="*";
                    }
                    System.out.println("是否作答?是:1否:2");
                    c=input.nextInt();
                    if(c==1)
                    {
                        for(int i=0;i<30;i++)
                        { 
                            System.out.print(data1[i]+"*");
                            System.out.print(data2[i]);
                            System.out.print("=");
                            answer=input.nextInt();
                            if(answer==data[i]) {
                                yes++;
                            }
                            if(i==29) {
                                System.out.println("一共答对"+yes+"道题目");
                                System.out.println("正确率:"+(yes/30));
                            }
                        }
                        
                    }
                    break;
                case "4":
                    for(int i=0;i<30;i++){
                        division();
                        data[i]=sum;
                        data1[i]=j;
                        data2[i]=e+1;
                        data3[i]="/";
                    }
                    System.out.println("是否作答?是:1否:2");
                    c=input.nextInt();
                    if(c==1)
                    {
                        for(int i=0;i<30;i++)
                        { 
                            int yushu=0;
                            System.out.print(data1[i]+"/");
                            System.out.print(data2[i]);
                            System.out.print("=");
                            answer=input.nextInt();
                            System.out.println("是否存在余数,存在:1 不存在:0");
                            int choice=input.nextInt();
                            if(choice==1) {
                                System.out.println("请输入余数:");
                                yushu=input.nextInt();
                            }
                            if(answer==data[i]&&yushu==(data1[1]%data2[2])) {
                                yes++;
                            }
                            if(i==29) {
                                System.out.println("一共答对"+yes+"道题目");
                                System.out.println("正确率:"+(yes/30));
                            }
                        }
                        
                    }
                    break;//一次错误 CASE穿透
                case "5":
                    for(int i=0;i<30;i++) {
                        choice();
                        if(f==1) {
                        add();
                        data3[i]="+";
                        data[i]=sum;
                        data1[i]=j;
                        data2[i]=e;
                        }
                        else if(f==2) {
                        min();
                        data3[i]="-";
                        data[i]=sum;
                        data1[i]=j;
                        data2[i]=e;
                        }
                        else if(f==3) {
                        mult();
                        data3[i]="*";
                        data[i]=sum;
                        data1[i]=j;
                        data2[i]=e;
                        }
                        else if(f==4) {
                        division();
                        data3[i]="/";
                        data[i]=sum;
                        data1[i]=j;
                        data2[i]=e+1;
                        }
                    }
                    System.out.println("是否输出结果?是:1否:2");
                    c=input.nextInt();
                    if(c==1)
                    {
                        for(int j=0;j<30;j++)
                        {
                            System.out.print(data1[j]+data3[j]);
                            System.out.print(data2[j]);
                            if(data3[j]=="/") {
                                System.out.print("="+data[j]);
                                System.out.println("......"+data1[j]%data2[j]);//小学算法计算余数
                            }
                            else
                            {
                                System.out.println("="+data[j]);
                            }
                        }
                    }
                    break;
                case "6":
                    for(int j=0;j<30;j++)
                    {
                        System.out.print(data1[j]+data3[j]);
                        System.out.print(data2[j]);
                        if(data3[j]=="/") {
                            System.out.print("="+data[j]);
                            System.out.println("......"+data1[j]%data2[j]);//小学算法计算余数
                        }
                        else
                        {
                            System.out.println("="+data[j]);
                        }
                    }
    }
    }
    }

     

    Main.java

    package xiaoxuesizeyunsuan;
    
    import xiaoxuesizeyunsuan.Head;
    import java.util.Scanner;
    
    public class Main {
        static int s;
        public static void choice() {
            double i=Math.random();
            s=1+(int)(i*4);
        }
        public static void main(String[] args) {
            Head h=new Head();
            while(true)
            {
                h.menu();
            }
            }
        }

     

    实验结果:

     

    实验总结:;混合运算时用来保存运算符的数组为INT型输出时无法显示+-*/

    后来改用String来保存运算符

    //结果数组

  • 相关阅读:
    【DFS】算24点
    【位运算】【BFS】移动玩具
    【并查集】【DFS】搭桥
    shell脚本编写informix数据库中表的导入和导出
    利用springloaded进行java jar&class的动态替换
    利用springloaded进行java class动态替换
    ActiveMq unsupported major.minor version 52.0
    oracle主键修改&设置某一字段可以为null
    XStream将XML转javaben,出现多余的tag,导致出错
    oracle:the password has expired
  • 原文地址:https://www.cnblogs.com/zlc364624/p/9750450.html
Copyright © 2020-2023  润新知