小学生的四则运算

一、题目:随机生出小学四则运算题目。减法结果不能为负数;乘法结果小于100;除法除数不为零,并且能够整除。①.题目避免重复;②.可定制(数量和打印方式)。

二、设计思路

1、随机生成两个操作数和一个代表运算符号的数;

2、要避免重复就要和之前出现的作比较,所以原来出现过的数据就要存下来,我定义了三个数组分别来存储两个操作数和代表运算符号的数;

3、判断随机生成的三个数是否符合运算要求,是则以适当的形式输出,否则丢掉这组随机数,重新生成;

4、若选择你n个一行输出形式,则判断i(第i个式子)能否整除n,能则输出换行,否则不换行。

三、源程序

package org.yuan.Day1;

import java.util.Scanner;

public class Yunsuan {

    public static void main(String[] args) {
        // TODO Auto-generated method stub
        
        System.out.print("请输入算式的 个数:");
        Scanner sc=new Scanner(System.in);
        int n=sc.nextInt();
        System.out.print("输入几个式子换一行:");
        int k=sc.nextInt();
        int []x=new int[1000];
        int []y=new int[1000];
        int []p=new int[1000];
                
        for(int i=0;i<n;i++)
        {
        x[i]=(int)(Math.random()*100);
        y[i]=(int)(Math.random()*100);
        p[i]=(int)(Math.random()*4);
        for(int j=0;j<i-1;)
        {
            if(x[j]==x[i]&&y[j]==y[i]&&p[j]==p[i])
                i--;
            break;
                
        }
        switch(p[i])
        {
        case 0:
            System.out.print(i+1+"."+x[i]+"+"+y[i]+"="+"   ");
            if((i+1)%k==0)
            {
                System.out.println("\n");
            }
            break;
        case 1:
            if(x[i]>y[i])
            {
                System.out.print(i+1+"."+x[i]+"-"+y[i]+"="+"   ");
                if((i+1)%k==0)
                {
                    System.out.println("\n");
                }
            }
            
            else
                i--;
            break;
        case 2:
            if(x[i]*y[i]<100)
            {
            System.out.print(i+1+"."+x[i]+"*"+y[i]+"="+"   ");
            if((i+1)%k==0)
            {
                System.out.println("\n");
            }
            }
            
            else i--;        
            break;
        case 3:
            if(y[i]!=0&&x[i]%y[i]==0)
            {
            System.out.print(i+1+"."+x[i]+"/"+y[i]+"="+"   ");
            if((i+1)%k==0)
            {
                System.out.println("\n");
            }
            }
            else i--;
            break;
        }
        }
    }

}

四、实验总结:

1、通过这道题对随机数有了一些了解,掌握了生成随机数的基本方法;

2、实验过程中将换行部分的代码写在了switch语句外面,结果运行的时候就有的行距会特别大。原因是有的不符合的式子(恰巧能整除n的那些式子)丢掉了但在for循环里依旧执行。

posted @ 2019-09-19 21:44  兜转转  阅读(220)  评论(0编辑  收藏  举报