四则运算自动出题机

四则运算出题机

今天,老师给学生留了一项任务,让他的家长每天给他出三十道题,而且都是两位数的加减乘除运算(因为孩子上二年级),身为一个IT人员,怎能去认真的写30道题呢?于是,聪明的IT爸爸就写了一个四则运算出题机。

要求:

我们来说一下解题思路:

1.首先利用随机数生成3个数字,第一个是第一个数,第二个是第二个数,第三个数是符号数;

2.输入数量和每行打印的个数

3.利用分支结构来输出等式

4.当等式输出后,将这三个数存入数组,每次近来三个数要判断是否与之前的重复,重复则重新输入。

代码:

package com.大数计算;

import java.util.Scanner;

public class cal {
    public static void main(String[] args) {
        // TODO Auto-generated method stub
        char[] c = new char[5];
        int i;
        c[1] = '+';
        c[2] = '-';
        c[3] = '*';
        c[4] = '/';
        Scanner in = new Scanner(System.in);
        int k, p;
        System.out.println("请输入题的个数");
        k = in.nextInt();//输入题的个数
        System.out.println("请输入一行打印几个数");
        p = in.nextInt();//每行打印多少个算式
        
        int [][]g=new int[1000000][3];//用来存储第一个数,第二个数和符号数
        int []f=new int[10000000];//标记该数字是否已经换行使用过了
        int v1, v2, v3,flag=0,n=0;//分别是第一个数,第二个数,和符号数,标记值,数组总个数
        for (i = 1; i <= k;) //进行k次循环
        {
            flag=0;
            v1 = (int) (Math.random() * 100);//获取第一个两位数的随机数
            v2 = (int) (Math.random() * 100);//获取第二个两位数的随机数
            v3 = (int) (1 + Math.random() * 4);//获取符号的随机数
            for(int j=0;j<n;j++)
            {
                if(g[j][0]==v1&&g[j][1]==v2&&g[j][2]==v3)
                {
                    flag=1;
                    break;
                }
            }
            if(flag==1)
                continue;
                if (c[v3] == '+')
                {
                    System.out.print(i + ":" + v1 + "+" + v2 + "=" + " ");
                    i++;
                }
                if (c[v3] == '-') 
                {
                    if (v1 >= v2)//减法不能为负数
                    {
                        System.out.print(i + ":" + v1 + "-" + v2 + "=" + " ");
                        i++;
                    }
                    else
                        continue;
                }
                if (c[v3] == '*')
                {
                    if (v1 * v2 < 100)//乘法之积要小于两位数
                    {
                        System.out.print(i + ":" + v1 + "*" + v2 + "=" + " ");
                        i++;
                    } 
                    else
                        continue;
                }
                if (c[v3] == '/')
                {
                    if (v2!=0&&v1 % v2 == 0)//除法保证能整除且分母不为零
                    {
                        System.out.print(i + ":" + v1 + "/" + v2 + "=" + " ");
                        i++;
                    } 
                    else
                        continue;
                }
                g[n][0]=v1;
                g[n][1]=v2;
                g[n][2]=v3;
                n++;
            if ((i-1)%p==0&&f[i]==0)
            {
                f[i]=1;
                System.out.println();
            }
        }
    }
}
原文地址:https://www.cnblogs.com/xiaofengzai/p/11530922.html