编写一个程序,写一个能自动生成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来保存运算符

//结果数组

posted @ 2018-10-07 16:33  雾霾王者  阅读(537)  评论(0编辑  收藏  举报