• 软件工程概论-个人作业02


    1.要求:写一个能自动生成三十道小学四则运算题目的 “软件”,要求:除了整数以外,还要支持真分数的四则运算、题目避免重复、可定制出题的数量。

    2.思路:

      1)产生随机数choose,1或2,1表示生成整数表达式,2表示生成分数表达式,并用一个字符串数组存储表达式便于打印输出(长度由用户输入);

      2)用一个字符数组存储“+ - * ÷”等符号,取符号则生成随机数0-3;

      3)若choose为1,random生成两个整数作为表达式的左操作数和右操作数,并随机产生操作符;

      4)若choose为2,random生成四个整数分别作为左操作数的分子分母和右操作数的分子分母;

      5)用两个函数对生成的分数约分;

      6)调用System.out.println()函数打印,用PrintWriter和FileWriter将生成的表达式数组写入文件;

    3.代码:

    import java.util.*;
    import java.io.*;
    public class MathHomework {
        public static int choose;
        public static int randomArr[]=new int[2];
        public static Random ran=new Random();
        public static char randomCh[]={'+','-','*','÷','/'};
        public static String formula[];
        @SuppressWarnings({ "unused", "resource" })
        public static void main(String[] args) throws IOException{
            String fileName="homework.txt";
            Scanner in=new Scanner(System.in);
            FileWriter fw=new FileWriter(fileName);
            PrintWriter out=new PrintWriter(fw);
            if(fw==null){
                System.out.println("文件打开失败!");
            }
            
            int number;
            System.out.println("题目个数:");
            number=in.nextInt();
            formula=new String[number];
            for(int i=0;i<number;i++){
                choose=ran.nextInt(2)+1;
                formula[i]=creaFormula(choose);
                if(formula[i]==null)
                    i--;
            }
            showFormula(formula);
            //写入文件
            int len=formula.length;
            for(int i=0;i<len;i++){
                out.println("No."+(i+1)+": "+formula[i]);
                
            }
            fw.close();
            out.close();
        }
        public static String creaFormula(int x){
            if(x==1){
                String s="";
                randomNums(randomArr);
                int k=ran.nextInt(4);
                s=s+randomArr[0]+randomCh[k]+randomArr[1]+"=";
                return s;
                
            }
            else if(x==2){
                String s="";
                randomNums(randomArr);
                fun1(randomArr);
                
                s=s+"("+randomArr[0]+"/"+randomArr[1]+")";
                randomNums(randomArr);
                fun1(randomArr);
                int k=ran.nextInt(4);
                s=s+randomCh[k]+"("+randomArr[0]+"/"+randomArr[1]+")"+"=";
                return s;
            }
            else
                return null;
            
        }
        public static void showFormula(String s[]){
            int len=s.length;
            for(int i=0;i<len;i++){
                System.out.println("No."+(i+1)+": "+s[i]);
                
            }
        }
        //约分函数
        public static void fun1(int x[]){
            int k=fun2(x[0],x[1]);
            x[0]=x[0]/k;
            x[1]=x[1]/k;
        }
        //求分子分母最大公约数
        public static int fun2(int x,int y){
            int min,i;
            if(x>y) min=x;
            else
                min=y;
            for(i=min;i>=1;i--){
                if(x%i==0&&y%i==0){
                    break;
                }
            }
            return i;
        }
    
        public static void randomNums(int x[]){
            x[0]=ran.nextInt(20)+1;
            x[1]=ran.nextInt(20)+1;
        }
    }

    4.结果:

  • 相关阅读:
    实现mypwd
    2019-2020-1 20175234 20175205 20175217 实验五 通讯协议设计
    2019-2020-1 20175205 20175234 20175217 实验四 外设驱动程序设计
    2019-2020-1 20175234 20175205 20175217 实验三 实时系统
    2019-2020-1 20175234 20175205 20175217 实验二 固件程序设计
    2018-2019-20175205 实验五《网络编程与安全》实验报告
    [HeadFrist-HTMLCSS学习笔记]第七、八章
    2018-2019-20175205实验四《Android程序设计》实验报告
    [HeadFrist-HTMLCSS学习笔记]第五章认识媒体:给网页添加图像
    [HeadFrist-HTMLCSS学习笔记]第三章构建模块:Web页面建设
  • 原文地址:https://www.cnblogs.com/yifengyifeng/p/6520270.html
Copyright © 2020-2023  润新知