zoukankan      html  css  js  c++  java
  • 软件概论作业四则运算2

         

    可怜的二柱子同学,老师又对他的自动出题系统提出了新的要求:

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

    n是否有乘除法;
    n是否有括号(最多可以支持十个数参与计算);
    n数值范围;
    n加减有无负数;
    n除法有无余数!
               
     
          程序思路:

    用Ascll码来显示加减乘除号的随机生成

    避免出题重复:利用数组,让产生的式子不再相同

    打印方式:用输入输出流

        可定制:随机生成一个数量少于10的数组。

        是否有乘除法:条件判断,用条件约束输出中符号的随机情况。

        数值范围:在产生随机数时通过键入控制模,从而使运算数不超过此范围。

        加减有无负号:用switch case 进行操作

        除法有无余数:用switch case进行操作。

            程序代码:

    import java.io.*;

    import java.util.Scanner;

     

     

    public class Suiji {

     

        public static void main(String args[])

        {

          

           int y,o,p;int a,b,c,d;

           char  x[]={42,43,45,47};//定义+-*/

           char m[]={42,47};//*/

           char n[]={43,45};//+-

           int []arr={};

          

           Scanner scanner =new Scanner(System.in);

           System.out.print("请输入一个你想要的运算的个数:");

           int h1=scanner.nextInt();

          

          

           System.out.println("请输入运算的数的个数:");  //定义有多少个数运算

            int  h=scanner.nextInt();   //运算式的个数

        System.out.println("请输入你的范围:");

        int j=scanner.nextInt();

        y=(int)(Math.random()*x.length+0);

        o=(int)(Math.random()*m.length+0);

        p=(int)(Math.random()*n.length+0);

        System.out.println("*************请选择你需要的功能***************");

        System.out.println("1:整数的加减运算,2:分数的加减运算,3:整数有负数,4:整数无负数");

        int L=scanner.nextInt();

       

     

        System.out.println("********************************");

          //保证其不重复

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

          {

             int z[]=new int [h1+1];

             int v[]=new int [h1+1];

             int r[]=new int [h1+1];

             a=(int)(Math.random()*j+1);

             b=(int)(Math.random()*j+1);

             y=(int)(Math.random()*x.length+0);

             z[i]=a;

             v[i]=b;

             r[i]=y;

             for(int a1 =1;a1<i-1;a1++)

             {

                 if(z[i]==z[a1]&&v[i]==v[a1]&&r[i]==r[a1])

                 {

                  do

                  {

                      a=(int)(Math.random()*j+1);

                        b=(int)(Math.random()*j+1);

                     

                  }

                    while(z[i]==z[a1]&&v[i]==v[a1]&&r[i]==r[a1]);

                

                

                 }

                 }

                

             }

         

     

        for(int i=0;i<h1;i++)

        {

       

             a=(int)(Math.random()*j+1);

               b=(int)(Math.random()*j+1);

               c=(int)(Math.random()*j+1);

               d=(int)(Math.random()*j+1);

              

               p=(int)(Math.random()*n.length+0);

              

                 //分母不为零

                 if(b!=0){b++;}

                 if(d!=0){d++;}

                 //为最简式

                 for(int f=a;f>0;f--)

                 { 

                    if(a%f==0&&b%f==0)

                    {

                    a=a/f;

                    b=b/f;

                    }

                 }

                 for(int g=c;g>0;g--)

                 { 

                    if(c%g==0&&d%g==0)

                    {

                    c=c/g;

                    d=d/g;

                    }

                 }

          

                 

          switch(L)

                 {

          case 1:

          {

             System.out.println("("+a+n[p]+c+")"+"=");

             }

             break;

         

            

            

            

            

          case 2:{

             System.out.println("("+a+"/"+b+")"+n[p]+"("+b+"/"+d+")"+"=");

             }

             break;

            

         

            

                

         

         

         

          case 3:

          {

             System.out.println(a+"-"+c+"=");}

          break;

            

          case 4:

             if(a<c)

             {

                 int temp;

                 temp=a;

                 a=c;

                 c=temp;

                 System.out.println(a+"-"+c+"=");

                

                

             }break;

                

         

          }

         

        }

         

         

         

         

         

          

        System.out.println("*************请选择你需要的功能***************");

        System.out.println("1:整数的乘除运算,2:分数的乘除运算,3:整数有余数,4:整数无余数"

               );

        int M =scanner.nextInt();

     

        System.out.println("********************************");

       

       

           for(int i=0;i<h1;i++)

           {        a=(int)(Math.random()*j+1);

                  b=(int)(Math.random()*j+1);

                  c=(int)(Math.random()*j+1);

                  d=(int)(Math.random()*j+1);

                 

                  p=(int)(Math.random()*n.length+0);

                    //分母不为零

                    if(b!=0){b++;}

                    if(d!=0){d++;}

                    //为最简式

                    for(int f=a;f>0;f--)

                    { 

                        if(a%f==0&&b%f==0)

                        {

                      a=a/f;

                      b=b/f;

                        }

                    }

                    for(int g=c;g>0;g--)

                    { 

                        if(c%g==0&&d%g==0)

                        {

                        c=c/g;

                        d=d/g;

                        }

     

                   

                    }

           switch(M)

           {

           case 1:

           {

               System.out.println("("+a+m[o]+c+")"+"=");

               }

               break;

              

           case 2:

              

              

           {

          

               System.out.println("("+a+"/"+b+")"+m[o]+"("+c+"/"+d+")"+"=");

               }

               break;

              

       

           case 3:

               {    if(a<b)

               {

                  int temp;

                  temp=a;

                  a=b;

                  b=temp;

               }

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

               break;

           case 4:

           {if(a%b==0)

     

              

              

            

                 System.out.println(a+"/"+b+"=");

            

           else{h1--;break;}

          

              

          

          

           }break;

          

           }

      

          

           try { FileOutputStream fos = new FileOutputStream("C:/a.txt");

           PrintStream stream = new PrintStream(fos);

           stream.print("("+a+m[o]+c+")"+"=");

          

     

       

            }  catch(Exception e)

           {

            e.printStackTrace();

           

           }

           }

          

        }

     

       

        }

       程序截图:

     

    事后总结:

    在编写程序的过程中,对java的函数调用方式不熟悉,对变量的输入方式不太了解,然后就去百度上查询,对于此项目的一个条件括号的利用没有实现,后面还需努力

       

     

     

     

          

          

          

           

       

       

       

       

       

       

       

       

       

       

       

       

          

          

          

          

          

          

       

  • 相关阅读:
    spark简单入门
    vim 树形目录插件NERDTree
    Windows下查看系统端口使用的命令
    网络爬虫爬取动态网页
    Java并查集链表实现
    基于mahout的海量数据关联规则挖掘
    高维特征降维方法-随机映射
    JVM(4)--垃圾回收算法
    Java高并发程序设计(六)--线程池(1)
    Java高并发程序设计(五)--ReentrantLock源码解析
  • 原文地址:https://www.cnblogs.com/lipengpengpeng/p/5295700.html
Copyright © 2011-2022 走看看