首页 > 其他 > 详细

软件工程个人作业01

时间:2017-03-05 22:02:14      阅读:175      评论:0      收藏:0      [点我收藏+]

题目:

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

 

思路:首先,运用随机数程序生成1-100之间的随机数(int型),在方法中通过随机的方法确定这个数是否为分数:如果为分数,则产生两个随机数相除,为保证为真分数,在生成算式之前进行判断,如果分母小于分子,则分母等于分子+分母。再判断是否重复:定义一个String类型数组,将生成的算式保存,每次输出之前先验证是否存在,如果存在则不输出,不计数。

 

源程序:



import java.util.*;

public class Yunsuan01 {
    @SuppressWarnings("resource")
    public static void main(String args[])
    {
        Scanner sc = new Scanner(System.in);
        int num;
        System.out.println("请输入需要生成的个数:");
        num = sc.nextInt();
        String[] s = new String[100];//保存已有的运算式
        int ss = 0;//运算式个数计数
        char[] ch = new char[4];
        ch[0] = ‘+‘;
        ch[1] = ‘-‘;
        ch[2] = ‘*‘;
        ch[3] = ‘/‘;
        int a,b,a1,b1;
        double A,B,A1,B1;
        int k;
        String str;
        int flagA = 0,flagB = 0;//判断是否用真分数。
        for(int i = 0;i < num;i ++)
        {
            flagA = SuiJileixing();
            flagB = SuiJileixing();
            if(flagA == 1 && flagB == 1)
            {
                a = SuiJi1();
                b = SuiJi1();
                k = SuiJiyunsuanfu();
                str = a + " " + ch[k] + " " + b + " = ";
                if(Check(s,str,ss) != 1)
                {
                    s[ss] = str;
                    System.out.print(s[ss]);
                    A = (double)a;
                    B = (double)b;
                    show(A,B,k);
                    ss ++;
                }
            }
            else if(flagA == 1 && flagB == 0)
            {
                a = SuiJi1();
                b = SuiJi1();
                b1 = SuiJi1() + 1;
                if(b < b1)
                {
                    b = b;
                }
                else
                {
                    b1 = b1 + b;
                }
                k = SuiJiyunsuanfu();
                str = a + " " + ch[k] + " (" + b + "/" + b1 + ") = ";
                if(Check(s,str,ss) != 1)
                {
                    s[ss] = str;
                    System.out.print(s[ss]);
                    A = (double)a;
                    B = (double)b;
                    B1 = (double)b1;
                    show(A,B/B1,k);
                    ss ++;
                }
            }
            else if(flagA == 0 && flagB == 1)
            {
                a = SuiJi1();
                a1 = SuiJi1() + 1;
                b = SuiJi1();
                if(a > a1)
                {
                    a1 = a + a1;
                }
                k = SuiJiyunsuanfu();
                str = "(" + a + "/" + a1 + ") " + ch[k] + " " + b + " = ";
                if(Check(s,str,ss) != 1)
                {
                    s[ss] = str;
                    System.out.print(s[ss]);
                    A = (double)a;
                    A1 = (double)a1;
                    B = (double)b;
                    show(A/A1,B,k);
                    ss ++;
                }
            }
            else
            {
                a = SuiJi1();
                a1 = SuiJi1() + 1;
                b = SuiJi1();
                b1 = SuiJi1() + 1;
                if(a > a1)
                {
                    a1 = a + a1;
                }
                if(b > b1)
                {
                    b1 = b + b1;
                }
                k = SuiJiyunsuanfu();
                str =  "(" + a + "/" + a1 + ") " + ch[k] + " " + b + "/" + b1 + " = ";
                if(Check(s,str,ss) != 1)
                {
                    s[ss] = str;
                    System.out.print(s[ss]);
                    A = (double)a;
                    A1 = (double)a1;
                    B = (double)b;
                    B1 = (double)b1;
                    show(a/a1,b/b1,k);
                    ss ++;
                }
            }

            
            
        }
        
    }
    
    public static int SuiJi1()
    {
        int a;
        a = (int)(Math.random()*100);
        return a;
    }
    public static int SuiJiyunsuanfu()
    {
        int a;
        a = (int) (Math.random()*4);
        return a;
    }
    public static int Check(String s[],String str,int ss)
    {
        int qqq = 0;
        for(int i = 0;i < ss;i ++)
        {
            if(str.equals(s[ss]))
            {
                qqq = 1;
                break;
            }
        }
        return qqq;
    }
    public static int SuiJileixing()
    {
        int flag = (int)(Math.random()*2);
        return flag;
    }
    public static void show(double a,double b,int k)
    {
        if(k == 0)
        {
            System.out.println(a + b);
        }
        if(k == 1)
        {
            System.out.println(a - b);
        }
        if(k == 2)
        {
            System.out.println(a * b);
        }
        if(k == 3)
        {
            System.out.println(a / b);
        }
    }
}

程序运行结果:技术分享

 

软件工程个人作业01

原文:http://www.cnblogs.com/fychen0302/p/6506994.html

(0)
(0)
   
举报
评论 一句话评论(0
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!