zoukankan      html  css  js  c++  java
  • 四则运算自动出题机

    四则运算出题机

    今天,老师给学生留了一项任务,让他的家长每天给他出三十道题,而且都是两位数的加减乘除运算(因为孩子上二年级),身为一个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();
                }
            }
        }
    }
  • 相关阅读:
    Java 核心编程——文件随机读写类(RandomAccessFile)
    java 核心编程——文件过滤类(FileFilter和FilenameFilter)
    java 核心编程 ——文件操作类File
    java 编程思想笔记(七)——异常
    java 编程思想笔记(六)——内部类
    enote笔记法使用范例(2)——指针(1)智能指针
    enote笔记法使用范例(1)——自己总结的一些编写代码的常识 (a)
    enote笔记语言(2)
    enote笔记语言(1)
    monkey命令——压力测试——转载参考07
  • 原文地址:https://www.cnblogs.com/xiaofengzai/p/11530922.html
Copyright © 2011-2022 走看看