zoukankan      html  css  js  c++  java
  • 软件工程个人作业01

    问题:像二柱子那样,花二十分钟写一个能自动生成三十道小学四则运算题目的 “软件”,要求:除了整数以外,还要支持真分数的四则运算(需要验证结果的正确性)、题目避免重复、可定制出题的数量。(有能力者改编成网页版)

    1.程序设计思想

    根据要求来决定程序的设计思想

    (1)生成任意数量的四则运算:有输入结果个数的变量才行。

    (2)支持真分数运算(需要验证结果的正确性):通过比较这两个数的大小,当分母大于分子时可以生成这个数,否则就不生成分数;要验证结果正确性就要将运算结果求出来。开始用的是字符表示的加减乘除,计算是只要将字符转化成真正的运算符即可。

    (3)题目避免重复:这就要求有储存结果的空间,每生成一个就会和已有的作比较

    2.源程序代码

    /*

     * 要求:

     * 生成任意数量的四则运算:有输入结果个数的变量

     * 支持真分数运算(需要验证结果的正确性)当分母大于分子时可以生成这个数,否则就不生成分数

     * 题目避免重复:这就要求有储存结果的空间,每生成一个就会和已有的作比较

     * 完成时间:2个半小时

     */

    import java.util.*;

     

    public class yunsuan {

           public static void main(String args[])

           {

                  Scanner input=new Scanner (System.in);

                  System.out.println("请输入要生成四则运算的个数:");

                  int n=input.nextInt();

                 

                  char fuhao;

                  int suiji1,suiji2,suiji3,suiji4;//suiji1表示第一个数,suiji2表示第二个数,suiji4表示第三个数,suiji3表示符号

                  //String yunsuan[] = null;

                  String[] yunsuan = new String[100];

                  double suiji;

                  System.out.println("运算式和结果是:");

                  int i=0;

                  while(i<n)

                  {

                         suiji1=suijishu();

                         suiji2=suijishu();//suiji1/suiji2

                         suiji3=suijizifu();

                         suiji4=suijishu();

                          if(suiji3==0)fuhao='+';

                       else if(suiji3==1)fuhao='-';

                       else if(suiji3==2)fuhao='*';

                       else fuhao='/';

                       if(suiji1<suiji2&&suiji2!=0)

                       {

                              String sj="";i++;

                             sj=suiji1+"/"+suiji2+""+fuhao+""+suiji4;

                             if(panduan(sj,yunsuan,i)==true)

                                    {yunsuan[i-1]=sj;

                                  display(suiji1,suiji2,suiji4,fuhao);

                                    }

                            

                       }

                       else

                       {

                              String sj1="";

                                    sj1=suiji1+""+fuhao+""+suiji4;i++;

                                    if(panduan(sj1,yunsuan,i)==true)

                                    {

                                           yunsuan[i-1]=sj1;

                                           display(suiji1,1,suiji4,fuhao);

                                }

                 }

                  }

           }

           //产生随机数

            public static int suijishu()

              {

                     int suiji;

                     suiji=(int)(Math.random()*100);

                     return suiji;

              }

            //产生随机字符

            public static int suijizifu()

              {

                     int suijifu;

                     suijifu=(int)(Math.random()*4);

                     return suijifu;

              }

            //输出四则运算和结果函数

            public static void display(int a1,int a2,int b,char c)

            {

                  /* String aa="";

                   aa=aa+a+c+b+"=";

                   System.out.print(aa);*/

                   if(a2==1)

                   {

                          System.out.print(a1);

                   }

                   else  System.out.print(a1+"/"+a2);

                   System.out.print(c);

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

                   double result = 0;

                   if(c=='+')

                   {

                         result=((double)a1/(double)a2)+(double)b;

                   }

                   else if(c=='-')

                   {

                         result=((double)a1/(double)a2)-(double)b;          }

                   else  if(c=='*')

                   {

                           result=((double)a1/(double)a2)*(double)b;             }

                   else  if(c=='/')

                   {

                         result=((double)a1/(double)a2)/(double)b;

                   }

                   System.out.println(result);

            }

            public static boolean panduan(String a,String aa[],int i)

            {

                   boolean flag = false ;//0表示不重复,1表示重复

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

                   {flag=true;

                          if(a.equals(aa[m])){flag=false;break;}

                          else {flag=true;}

                   }

                   return flag;

            }

    }

    3.运行结果截图

     

    4.不足之处,解决方案

    结果还是有一些问题,虽然结果是小数形式,但是小数点后面的都用0代替了。后来将产生的int型的随机数强制转换成double类型,结果可以了

  • 相关阅读:
    oracle新建用户赋权限
    Linux配置tomcat自动启动
    java白皮书关键术语
    sql中exists和not exists的用法
    db2用户、权限相关命令
    面试问题
    能ping通,但是打不开网页
    kali linux的错误
    virtualbox display size
    Jetson tk1 安装 CUDA,ROS,OpenCV和kinect2以及刷机以及ssh远程控制
  • 原文地址:https://www.cnblogs.com/qianwangxingfu/p/6511815.html
Copyright © 2011-2022 走看看