定制小学四则运算题目

Posted 木子金帛

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了定制小学四则运算题目相关的知识,希望对你有一定的参考价值。

一 题目

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

    是否有乘除法;

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

    数值范围;

    加减有无负数;

    除法有无余数;

二 设计思路

  分情况讨论编写代码;

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

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

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

 运行结果截屏:技术分享

技术分享

程序源代码:

  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("\n请选择要求:"
 14                 +"\n  是否有乘除法;(True/False)"
 15                 +"\n  是否有括号(最多可以支持十个数参与运算)(True/False);"
 16                 +"\n  数值范围(True(1~10)/False(1~100));"
 17                 +"\n  加减乘除有无负数(True/False);"
 18                 +"\n  除法有无余数(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("\n"+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("\n"+a1);
 53                                 PrintSign(sign%2);
 54                                 System.out.print(a2+"  =");
 55                             }    
 56                             else if(a[2]==true)
 57                             {
 58                                 System.out.print("\n"+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("\n"+a1);
 72                                 PrintSign(sign%2);
 73                                 System.out.print(a2+"  =");
 74                             }    
 75                             else if(a[2]==true)
 76                             {
 77                                 System.out.print("\n"+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("\n"+a1);
 90                                 PrintSign(sign);
 91                                 System.out.print(a2+"  =");
 92                             }    
 93                             else if(a[2]==true)
 94                             {
 95                                 System.out.print("\n"+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("\n"+a1);
109                                 PrintSign(sign);
110                                 System.out.print(a2+"  =");
111                             }    
112                             else if(a[2]==true)
113                             {
114                                 System.out.print("\n"+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 }

 

以上是关于定制小学四则运算题目的主要内容,如果未能解决你的问题,请参考以下文章

实现生成小学四则运算练习题

小学计算题——四则运算

痛心的伪实现四则运算生成

第二次结对编程

2016012036+小学四则运算练习软件项目报告

结对编程2