四则运算出题机
今天,老师给学生留了一项任务,让他的家长每天给他出三十道题,而且都是两位数的加减乘除运算(因为孩子上二年级),身为一个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(); } } } }