四则运算×2

 

import java.util.Scanner;
public class computePlus {

    /**
     * @param args
     */
    public static void main(String[] args) {
        // TODO Auto-generated method stub

        Scanner in=new Scanner(System.in);
        System.out.println("请输入生成题目的个数");
        int work=in.nextInt();
        System.out.println("请输入算式中的数字个数");
        int n=in.nextInt();
        int num[]=new int[n];
        int max,min;
        System.out.println("请输入数值范围");
        min=in.nextInt();
        max=in.nextInt();
        
        System.out.println("是否有乘除法(是:1 否:2)");
        int choice1=in.nextInt();
        if(choice1==1)
        {
            System.out.println("除法是否有余数(是:1 否:2)");
            int choice2=in.nextInt();
            for(int x=0;x<work;x++)
            {
                num=CreateRandom(n,max,min);
                int operate1=1+(int)(Math.random()*2);
                if(operate1==1)
                    multiply(num,n);
                if(operate1==2)
                {
                    if(choice2==1)
                    {
                        for(int i=0;i<n-1;i++)
                            ModDivide(num[i],num[i+1]);
                    }
                    if(choice2==2)
                    {
                        for(int i=0;i<n-1;i++)
                            NoModDivide(num[i],num[i+1]);
                    }
                }
            }        
        }
        if(choice1==2)
        {
            System.out.println("减法有无负数(是:1 否:2)");
            int choice3=in.nextInt();
            for(int x=0;x<work;x++)
            {
            num=CreateRandom(n,max,min);
            int operate2=1+(int)(Math.random()*2);
            if(operate2==1)
            {
                if(choice3==1)
                    plus(num,n);
                if(choice3==2)
                    Nplus(num,n,max,min);
            }
            if(operate2==2)
                decrease(num,n);
            }    
        }
        
        
        
        
        
        
    }
    //加法
    public static void plus(int a[],int n)
    {
        long sum=0;
        for(int m=0;m<n;m++)
        {
            sum=sum+a[m];
        }
        for(int i=0;i<n-1;i++)
            System.out.print(a[i]+"+");
            System.out.print(a[n-1]+"="+sum);
            System.out.println();
    }
    //有负数减法
    public static void decrease(int a[],int n)
    {
        long sum=a[0];
        for(int m=1;m<n;m++)
        {
            sum=sum-a[m];
        }
        for(int i=0;i<n-1;i++)
            System.out.print(a[i]+"-");
            System.out.print(a[n-1]+"="+sum);
            System.out.println();
    }
    //无负数减法
    public static void Nplus(int a[],int n,int max,int min)
    {
        long sum=a[0];
        for(int m=1;m<n;m++)
        {
            sum=sum-a[m];
        }
        if(sum>=0)
        {
            for(int i=0;i<n-1;i++)
                System.out.print(a[i]+"-");
                System.out.print(a[n-1]+"="+sum);
                System.out.println();
        }
        else
        {
            int b[]=CreateRandom(n,min,max);
            Nplus(b,n,max,min);
        }
    
    }
    //
    public static void multiply(int a[],int n)
    {
        long sum=1;
        for(int m=0;m<n;m++)
        {
            sum=sum*a[m];
        }
        for(int i=0;i<n-1;i++)
            System.out.print(a[i]+"*");
            System.out.print(a[n-1]+"="+sum);
            System.out.println();
    }
    //分数除法
    public static void divide(int a[],int n)
    {
        long fz=a[0];
        long fm=1;
        for(int m=1;m<n;m++)
        {
            fm=fm*a[m];
        }
        String result=simplify(fz,fm);
        for(int i=0;i<n-1;i++)
            System.out.print(a[i]+"/");
            System.out.print(a[n-1]+"="+result);
            System.out.println();
    }
    //分数化简
    public static String simplify(long fz,long fm)
    {
        int max=0;
        for(int i=0;i<100;i++)
        {
            
            int n=i+1;
            if(fz%n==0&&fm%n==0)
                max=n;
        }
        return (String)(fz/max+"/"+fm/max);
    }
    //生成随机数
    public static int[] CreateRandom(int n,int max,int min)
    {
        int[] num=new int[n];
        for(int i=0;i<n;i++)
        {
            num[i]=min+(int)(Math.random()*(max-min));
        }
        return num;
    }
    //余数除法
    public static void ModDivide(int m,int n)
    {
        System.out.println(m+"÷"+n+"="+m/n+"余"+m%n);
    }
    //无余数除法
    public static void NoModDivide(int m,int n)
    {
        System.out.println(m+"÷"+n+"="+m/n);
    }
    
}

运行结果截图

设计思路

先根据算式数字多少生成随机数,再套用有关运算的方法,最终完成实验。我的程序不能完成括号和多种运算符的混合运算,以后我会继续改进。

 

 

时间记录日志

日期 开始时间 结束时间 中断时间 净时间 活动 备注 C U
3.6  14:00 16:00   120分钟 软件工程概论 二柱子计算题第二弹    
3.7                
3.8 14:00 17:00 60分钟 120分钟 软件工程概论作业 二柱子计算题构建框架和方法    
3.9                
3.10 18:00 19:30   90分钟 软件工程概论作业 程序错误修改    
                 

周活动总结表

  听课 编写程序 阅读课本 准备考试 总计
周日          
周一 50 60 40   150
周二 50   50   100
周三 50 70     120
周四 50   50   100
周五 50 40 50   140
周六          
周总结 250 170 190   610

 

posted @ 2017-03-10 19:19  Steerner  阅读(180)  评论(0编辑  收藏  举报