zoukankan      html  css  js  c++  java
  • 小学生题目

    package java日常训练;
    import java.util.Random;
    import java.util.Scanner;
    public class Practice {
    
        public static void main(String[] args) {
            // TODO 自动生成的方法存根
            //控制题目的数量
                    int m,m1,m2,m3,m4,m5,s=0,k=0;
                    
                    System.out.print("请输入题目的数量:"); 
                    Scanner sc = new Scanner(System.in);
                    m=sc.nextInt();
                    
                    System.out.print("请输入数值范围(最小数):"); 
                    Scanner min = new Scanner(System.in);
                    m1=sc.nextInt();
                    
                    System.out.print("请输入数值范围(最大数):"); 
                    Scanner max = new Scanner(System.in);
                    m2=sc.nextInt();
                    
                    if(m1>=m2)
                    {
                        System.out.print("输入错误!");
                        System.exit(0);//退出整个程序
                    }
                    System.out.print("是否有负数( 是1或者否2):");    //判断是否有负数
                    Scanner fs = new Scanner(System.in);
                    m5=sc.nextInt();
                    
                    if(m5==2){
                        if(m1>=m2||m1<0||m2<0)
                        {
                            System.out.print("输入错误!");
                            System.exit(0);//退出整个程序 
                        }
                        }
                Random r1 = new Random(10);    
                Random r2 = new Random(20);    
                Random r3 = new Random(30);    
                Random r4 = new Random(40);    
                Random r5 = new Random(50);    
        
                       System.out.print("是否有乘除法( 是1或者否2):"); 
                    Scanner yn = new Scanner(System.in);
                    m3=sc.nextInt();
                    
                    
                    System.out.print("除法有无余数(有1  无2):");           //控制是否有余数
                    Scanner 余数 = new Scanner(System.in);
                    m4=sc.nextInt();
                    
                    
                     for(int i = 0;i < m;i++){              
                        int c = r3.nextInt(120);
                    if(m3==2){    
                        k=c%2;  
                        }                                          //控制是否有乘除法
                    else 
                        k=c%4;
                    
                        int a = r1.nextInt(m2-m1+1)+m1;
                        int b = r2.nextInt(m2-m1+1)+m1;
                    
                    
                        switch(k){
                        case 0: System.out.println(a+"+"+b+"=");break;
                        case 1:
                             if(m5==2){
                                if(a>b){
                                    System.out.println(a+"-"+b+"=");break;
                                }
                                else System.out.println(b+"-"+a+"=");break;
                                }
                            
                             else System.out.println(a+"-"+b+"=");break;
                        case 2: System.out.println(a+"*"+b+"=");break;
                        case 3: if(m4==2){
                            
                           if(a%b==0){
                              System.out.println(a+"/"+b+"=");break;
                                         }
                        else   
                            label: for(int q=1;q<10000000;q++)         //为了保证题目中有一定数量的除法,则一直到生成一个有效的除法为止。
                        {
                            int f = r4.nextInt(m2-m1+1)+m1;
                            int d = r5.nextInt(m2-m1+1)+m1;
                            if(f%d==0){
                                System.out.println(f+"/"+d+"=");
                                break label;
                                
                                      }
                        }
                        }
                        else  System.out.println(a+"/"+b+"=");break;
                        }
                        
                        
        }                   
        }
        }            

    设计思路:

    首先,用一个语句用来定制数量和打印方式。

    然后,再控制参数,是否有乘除法(让用户选择,如果是,则把乘除法加入,如果不是,则删除乘除法),数值范围(random控制),加减有无负数(1.random取值不取负数,2,如果是除法,则加一个控制条件第一个数大于第二个数),除法有无余数(用%来控制,如果没有余数,则加一个条件,如果运算符为除法,a%b=0),是否支持分数(单独添加输出函数,判断分数的输出)。

    应该判断题目是否重复。用for循环来控制,如果第一个数重复,则检查第二个数,如果第二个数也重复,则检查运算符号,若都重复,则删除这一道题,另出一道题。如果在这三道控制中有一个不满足,则break退出。

    结果截图:

    编程感想:在处理加减有无负数的时候,如果减法中出现了负数,则让相减的两个数换位置,这样更简便一些。

                  没有把真分数和避免重复加入到程序中,以后会补上。

                  程序中变量太多太麻烦。应该再简洁一些。没有应用数组。

                  起初的程序用了太多的for循环,导致程序过于繁杂,后经过改正,只用了一个for循环。

    时间记录表

    时间 用时  
    3.14 2h 题目的数量和数值范围
    3.15 2h 是否有负数,是否有乘法
    3.16 1h 乘法是否有余数
    3.17 1h 发现程序过于繁杂
    3.18 2h 重新组合,改进
    3.19 1h 发现除法太少,进行改进保证除法的数量
  • 相关阅读:
    【转】VS2010中 C++创建DLL图解
    [转]error: 'retainCount' is unavailable: not available in automatic reference counting mode
    [转]关于NSAutoreleasePool' is unavailable: not available in automatic reference counting mode的解决方法
    【转】 Tomcat v7.0 Server at localhost was unable to start within 45
    【转】Server Tomcat v7.0 Server at localhost was unable to start within 45 seconds. If
    【转】SVN管理多个项目版本库
    【转】eclipse安装SVN插件的两种方法
    【转】MYSQL启用日志,和查看日志
    【转】Repository has not been enabled to accept revision propchanges
    【转】SVN库的迁移
  • 原文地址:https://www.cnblogs.com/twentytwo/p/4350970.html
Copyright © 2011-2022 走看看