定制小学四则运算题目

一 题目

  1. 题目避免重复;
  2. 可定制(数量/打印方式)
  3. 可控制下列参数:

    是否有乘除法;

    是否有括号(最多可以支持十个数参与运算);

    数值范围;

    加减有无负数;

    除法有无余数;

二 设计思路

  分情况讨论编写代码;

  先按是否有括号分为两种情况;

    有括号时用二叉树随机生成四则运算题;

    没括号时按各种不同的题目要求限制生成的随机数和运算符号。

    先随机获取两随即数,在获取0到4随即数表示四个运算符

 运行结果截屏:

程序源代码:

  1 import java.util.Random ;
  2 import java.util.Scanner;
  3 import java.lang.reflect.Array;
  4 import java.util.LinkedList;
  5 import java.util.List;
  6 
  7 public class FourOperations1 
  8 {
  9     public static void main(String[] ages)
 10     {
 11         while(1>0)
 12         {
 13             System.out.print("
请选择要求:"
 14                 +"
  是否有乘除法;(True/False)"
 15                 +"
  是否有括号(最多可以支持十个数参与运算)(True/False);"
 16                 +"
  数值范围(True(1~10)/False(1~100));"
 17                 +"
  加减乘除有无负数(True/False);"
 18                 +"
  除法有无余数(True/False);");
 19             Scanner sc = new Scanner(System.in);
 20             Boolean[] a=new Boolean[5];
 21             for(int i=0;i<5;i++)
 22             {
 23                  a[i]=sc.nextBoolean();
 24             }
 25             //sc.close();
 26             System.out.println("请输入要出题的个数");
 27             Scanner N = new Scanner(System.in);
 28             int index=N.nextInt();
 29             //N.close();
 30         
 31             for(int ii=0;ii<index;ii++)
 32             {    
 33                 if(a[1]==false)
 34                 {
 35                     int a1=RandomNum(100),a2=RandomNum(100);
 36                     int sign=RandomNum(4);
 37                     if(sign==3&&a[4]==false)
 38                     {
 39                         a1=(a1%15)*(a2%10);
 40                         System.out.print("
"+a1);
 41                         PrintSign(sign);
 42                         System.out.print(a2%10+"  =");
 43                         continue;
 44                     }
 45                     if(a[0]==false)
 46                     {            
 47                         if(a[3]==false)
 48                         {
 49                             if(a[2]==false)
 50                             {
 51                                 
 52                                 System.out.print("
"+a1);
 53                                 PrintSign(sign%2);
 54                                 System.out.print(a2+"  =");
 55                             }    
 56                             else if(a[2]==true)
 57                             {
 58                                 System.out.print("
"+a1%10);
 59                                 PrintSign(sign%2);
 60                                 System.out.print(a2+"  =");
 61                             }
 62                         }
 63                         else if(a[3]==true)
 64                         {
 65                             int ssign=RandomNum(2);
 66                             if(ssign==0){
 67                                 a1=-a1;
 68                             }
 69                             if(a[2]==false)
 70                             {
 71                                 System.out.print("
"+a1);
 72                                 PrintSign(sign%2);
 73                                 System.out.print(a2+"  =");
 74                             }    
 75                             else if(a[2]==true)
 76                             {
 77                                 System.out.print("
"+a1%10);
 78                                 PrintSign(sign%2);
 79                                 System.out.print(a2%10+"  =");
 80                             }
 81                         }
 82                     }
 83                     else if(a[0]==true)
 84                     {
 85                         if(a[3]==false)
 86                         {
 87                             if(a[2]==false)
 88                             {
 89                                 System.out.print("
"+a1);
 90                                 PrintSign(sign);
 91                                 System.out.print(a2+"  =");
 92                             }    
 93                             else if(a[2]==true)
 94                             {
 95                                 System.out.print("
"+a1%10);
 96                                 PrintSign(sign);
 97                                 System.out.print(a2%10+"  =");
 98                             }
 99                         }
100                         else if(a[3]==true)
101                         {
102                             int ssign=RandomNum(2);
103                             if(ssign==0){
104                                 a1=-a1;
105                             }
106                             if(a[2]==false)
107                             {
108                                 System.out.print("
"+a1);
109                                 PrintSign(sign);
110                                 System.out.print(a2+"  =");
111                             }    
112                             else if(a[2]==true)
113                             {
114                                 System.out.print("
"+a1%10);
115                                 PrintSign(sign);
116                                 System.out.print(a2%10+"  =");
117                             }
118                         }
119                         
120                     }
121                 }
122                 else if(a[1]==true)
123                 {
124                     int size=RandomNum(9);
125                     int[] array=new int[size*2+4];
126                     if(a[0]==false){
127                         for(int i=0;i<=size;i++){
128                             array[i]=RandomNum(2);
129                         }
130                     }
131                     else if(a[0]==true){
132                         for(int i=0;i<=size;i++){
133                             array[i]=RandomNum(4);
134                         }
135                     }
136                     if(a[2]==true){
137                         for(int i=size+1;i<=size*2+2;i++){
138                             array[i]=RandomNum(70)+4;
139                         } 
140                     }
141                     else if(a[2]==false){
142                         for(int i=size+1;i<=size*2+2;i++){
143                             array[i]=RandomNum(96)+4;
144                         } 
145                     }
146                     
147                     if(a[3]==true){
148                         for(int i=size+1;i<=size*2+2;i++){
149                             int ssign=RandomNum(2);
150                             if(ssign==0){
151                             array[i]=-array[i];
152                             }
153                         } 
154                     }
155                     
156                     LinkedList<Node> nodeList = new LinkedList<Node>();
157                     for(int nodeIndex=0;nodeIndex<array.length;nodeIndex++){
158                          nodeList.add(new Node(array[nodeIndex]));       
159                     
160                     }
161                     creatBinTree(array,nodeList);
162                     Node root = nodeList.get(0);
163                     inOrderTraverse(root);
164                     System.out.println("  =  "); 
165                 }
166             }
167         }
168     }
169     public static int RandomNum(int i)
170     {
171         Random a=new Random();
172         int a1=a.nextInt (i);
173         return a1;
174     }
175     public static void PrintSign(int sign)
176     {
177         if(sign==0){
178             System.out.print("  +  ");
179         }
180         else if(sign==1){
181             System.out.print("  -  ");
182         }
183         else if(sign==2){
184             System.out.print("  *  ");
185         }
186         else if(sign==3){
187             System.out.print("  /  ");
188         }
189         else
190             System.out.print(sign);
191     }
192     
193     public static class Node
194     {
195         Node leftchild;
196         Node rightchild;
197         int data;
198         
199         Node(int newData){
200             leftchild=null;
201             rightchild=null;
202             data=newData;
203         }
204     }
205     
206     public static void creatBinTree(int array[],LinkedList<Node> nodeList){
207         
208         
209         for(int parentIndex=0;parentIndex<array.length/2-1;parentIndex++){
210             nodeList.get(parentIndex).leftchild = nodeList  
211                     .get(parentIndex * 2 + 1);
212             nodeList.get(parentIndex).rightchild = nodeList  
213                     .get(parentIndex * 2 + 2);
214         }
215     }
216     public static void inOrderTraverse(Node node) {  
217         if (node == null)  
218             return;  
219         if (node.leftchild != null) {
220         System.out.print("(");  
221         }
222         inOrderTraverse(node.leftchild);  
223         PrintSign(node.data );  
224         inOrderTraverse(node.rightchild); 
225         if (node.rightchild != null) {
226             System.out.print(")");  
227         }
228     }  
229     
230 }

                                     项目计划日志:

                       姓名:李锦                                                 日期:2016.3.17

 日期任务(小时)

     听课

    编写程序

    阅读课本

    日总计

周日

 

 

 

 

周一

2

3

1

周二

 

3

 

3

周三

 

 

周四

 

1

1

周五

 

 

 

 

周六

 

4

 

4

周总计

2

10

2

14

                              时间记录日志

            学生:李锦                                                日期:3.14.2016

            教师:王建民                                                课程:软件工程概论

日期

开始时间

结束时间

中断时间

净时间

活动

备注

C

U

3/14

上午第一节课

上午第二节课

 20分钟

听课

课堂

3/15

下午2:00

下午5:00

0

3小时

编写程序

3/16

下午2:00

下午8:00

2小时

3小时

编写程序

休息,吃饭,

3/18

0

0

看书

3/19

上午8:00

下午3:30

0

200

编写程序

                                   缺陷记录日志

        学生:李锦                                                日期:16.3.19

        教员:王建民                                                                                                                                    程序号:1

日期

编号

类型

引入阶段

排除阶段

修复时间

修复缺陷

3.14

1

20

编码

编译

10min

数组空间不够

3.15

2

20

编码

编译

10min

换行显示错位    

3.19

3

20

设计

编译

30min

二叉树显示带括号四则运算时有多与括号

原文地址:https://www.cnblogs.com/amiee/p/5295185.html