• 软件工程个人作业02


    设计思想:    题目避免重复  将每次产生的三个随机数分别存入三个数组,产生的新随机数与已经产生的每个进行比较,若三个都相同则重新产生前两个,直到不相同。

                  控制是否有乘除  通过控制产生代表运算符的随机数来控制是否有乘除号的产生,随机数为0到1,则无乘除,随机数为0到3则有乘除。

                  控制数值范围    通过Math.random()函数来控制随机数产生的范围。

                  控制加减有无负数   只有减法有负数,所以只要在减号运算符里添加if语句,无负数,则a必须大于b,否则重新生成,计数减一,有负数,则a必须小于b;

                  控制除法有无余数   只要在除号运算符里添加if语句,有余数,则a不能整除b,否则跳出循环,计数减一;无余数,则a能整除b,否则跳出循环,计数减一。

                  控制括号未做出来。

    源代码:

         

    import java.util.Scanner;

    public class A{

       public static void main(String []args){

        int a,b,c,n=0,m=0,q,w; String str=null;

        Scanner reader=new Scanner(System.in);

        System.out.print("整数运算请选 1,真分数运算请选  2:");

        n=reader.nextInt();

        System.out.print("请选择题目数量:");

        m=reader.nextInt();

        System.out.print("请选择范围:");

        q=reader.nextInt();

        w=reader.nextInt();

         //整数

        if(n==1)

       {   int e,f,g;

       System.out.print("请选择是否有乘除: 1 有     2 无");

       e=reader.nextInt();

       System.out.print("请选择加减有无负数: 1 有     2 无");

       f=reader.nextInt();

       System.out.print("请选择乘除有无余数: 1 有     2 无");

       g=reader.nextInt();

        for(int i=1;i<=m;i++)

        {    int z[]=new int[m+1];int x[]=new int[m+1];int v[]=new int[m+1];

           a=(int)(Math.random()*(w-q+1)+q);

           b=(int)(Math.random()*(w-q+1)+q);

            if(e==1)              //控制运算有乘除  

                {c=(int)(Math.random()*4+0);}

            else                 //控制运算无乘除

                { c=(int)(Math.random()*2+0);}

           z[i]=a;x[i]=b;v[i]=c;    //将随机产生的数存入三个数组

           for(int j=1;j<=i-1;j++)   //通过判断随机数的异同控制是否重复

           {

             if(z[i]==z[j]&&x[i]==x[j]&&v[i]==v[j])

                {  do        //重复则重新生成ab

                   {

                a=(int)(Math.random()*(w-q+1)+q);

                   b=(int)(Math.random()*(w-q+1)+q);

                   }while(z[i]==z[j]&&x[i]==x[j]&&v[i]==v[j]);

                }

           }

            switch(c)

                { case 0:

                      System.out.print(a+"+"+b+"="+" ");

                      break;

                  case 1:

                      if(f==1)    //加减有余数

                        {System.out.print(a+"-"+b+"="+" ");

                         break;}

                      else        //加减无余数

                        {if(a<b) 

                            {i--;break;}

                         else

                            {System.out.print(a+"-"+b+"="+" ");}

                        }

                   case 2:

                      System.out.print(a+"*"+b+"="+" ");

                      break;

                  case 3:

                      if(b==0)  //除数为0 则跳出循环i减一

                          {i--;break;}

                      else if(b!=0&&g==2) //乘除无余数

                          { 

                            if(a%b==0)

                             {System.out.print(a+"/"+b+"="+" ");}

                            else

                             {i--;break;}

                          }

                      else if(b!=0&&g==1)    //乘除有余数

                          {  if(a%b==0)

                               {i--;break;}

                             else

                              {System.out.print(a+"/"+b+"="+" "); break;}

                            }

                }

            if(i%5==0) //5个算式一行输出

             {System.out.print(" ");}

       }

    }  

     }

    }

     

    结果截图:

     

  • 相关阅读:
    礼物(枚举,二分)
    空调(差分)
    Prefix Equality(哈希)
    py导入时段报表+清理旧文件
    php 0504
    php 0511
    php 0512
    php 0506
    php 0505
    php 0510
  • 原文地址:https://www.cnblogs.com/jinpeigang/p/5296339.html
Copyright © 2020-2023  润新知