博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
201571030303 小学四则混合元算 龚继恒
阅读量:5217 次
发布时间:2019-06-14

本文共 2427 字,大约阅读时间需要 8 分钟。

源码地址

一、需求分析

     1、由用户输入参数n,然后随机产生n道加减乘除练习题,每个数字在 0 和 100 之间,运算符在3个到5个之间;

     2、运算过程中不得出现负数与非整数,比如不能出 3/5+2=2.6,2-5+10=7等算式;

     3、将学号与生成的n道练习题及其对应的正确答案输出到文件“result.txt”中,文件目录与程序目录一致。

      例如:当程序接收的参数为4时,输出如下:

      

 软件附加功能要求如下:

支持有括号的运算式,包括出题与求解正确答案。算式中存在的括号必须大于2个,且不得超过运算符的个数。

扩展程序功能支持真分数的出题与运算,运算时分数需自动化简,比如 1/2+1/6=2/3,而非4/6。

二、设计实现

      1、运算结果不能为负数和非整数;

      2、将学号与生成的n道练习题及其对应的正确答案输出到文件“result.txt”中。

三、功能实现

  我们在设计的开始,就要想随机输出算式就得先了解随机数的定义生成随机数,生成随机数的函数就是math.random,还有运算符的随机产生,不过要想随机产生运算符就要从加减乘除四个运算符号中产产生,即先对其进行定义再调用,最后将所产生的随机式输出我根据学生学习程度的不同,对算式进行了难易分类,让不同程度的学生得到有效的学习

                                                                   

四、测试运行   

                

 

 

           

五、核心代码

import java.io.File;

import java.io.FileOutputStream;
import java.io.IOException;
import java.util.Scanner;
public class Main{
    public static void main(String[] args) throws  IOException {
   
        File file = new File("result.txt");  
                                                                           
        FileOutputStream fop = new FileOutputStream(file);
        if (!file.exists())
        {
            file.createNewFile();
        }
 
        int x;
        System.out.println("输入题目的数量:");
        Scanner scan2 = new Scanner(System.in);
        x = scan2.nextInt();
        String serialNo = "201571030303";
        
        fop.write(serialNo.getBytes());    
        fop.write("\r\n".getBytes());    
        
        for(int i=0;i<x;i++){
            int a=(int)(Math.random()*100);
            int b=(int)(Math.random()*100);
            int c=(int)(Math.random()*100);
            
            String q="";    
            int ans=0;
            int[] flag=new int[2];
            for(int j=0;j<2;j++){      
                int f=(int)(Math.random()*4);
                switch(f){
                case 0:
                    if(j==0){
                        q=a+"+"+b;
                    }
                    else{
                        q=q+"+"+c;
                    }
                    flag[j]=0;
                    break;
                case 1:
                    if(j==0){
                        q=a+"-"+b;
                    }
                    else{
                        q=q+"-"+c;
                    }
                    flag[j]=1;
                    break;
                case 2:
                    if(j==0){
                        q=a+"*"+b;
                    }
                    else{
                        q=q+"*"+c;
                    }
                    flag[j]=2;
                    break;
                case 3:
                    if(j==0){
                        q=a+"/"+b;
                    }
                    else{
                        q=q+"/"+c;
                    }
                    flag[j]=3;
                    break;
                }
            }
            if(flag[0]<2){
                if(flag[1]<2){
                    if(flag[0]==0){
                        ans=a+b;
                    }
                    else{
                        ans=a-b;
                    }
                    if(flag[1]==0){
                        ans+=c;
                    }
                    else{
                        ans-=c;
                    }
                }
                else{
                    if(flag[1]==2){
                        ans=b*c;
                    }
                    else{
                        if(c==0){
                            continue;
                        }
                        if(b<c || b%c!=0) {
                            i=i-1;      
                            continue;                           }
                        ans=b/c;
                    }
                    if(flag[0]==0){
                        ans+=a;
                    }
                    else{
                        ans=a-ans;
                    }
                }
            }
            else{
                if(flag[0]==2){
                    ans=a*b;
                }
                else{
                    if(b==0){
                        continue;
                    }
                    if(a<b || a%b!=0) {
                        i=i-1;       //如果出现重新循环
                        continue;   //判断结果不能为负数和非整数
                    }
                    ans=a/b;
                }
                if(flag[1]==0){
                    ans+=c;
                }
                else if(flag[1]==1){
                    ans-=c;
                }
                else if(flag[1]==2){
                    ans*=c;
                }
                else{
                    if(c==0){
                        continue;
                    }
                    if(ans<c || ans%c!=0) {
                        i=i-1;       //如果出现重新循环
                        continue;   //判断结果不能为负数和非整数
                    }
                    ans/=c;
                }
            }
            
            if(ans<0) //判断结果不能为负数
            {
                i=i-1; continue;
            }   
            
            q=q+"="+ans;           //用字符串将算式和答案连在一起
            System.out.println(q);
            fop.write(q.getBytes());    //写入表达式
            fop.write("\r\n".getBytes());   //换行
        }
        fop.close();
    }
         

转载于:https://www.cnblogs.com/ShirtfulMichael/p/8641987.html

你可能感兴趣的文章
Java实现二分查找
查看>>
优秀员工一定要升职吗
查看>>
[LintCode] 462 Total Occurrence of Target
查看>>
springboot---redis缓存的使用
查看>>
架构图-模型
查看>>
sql常见面试题
查看>>
jQuery总结第一天
查看>>
Java -- Swing 组件使用
查看>>
Software--Architecture--DesignPattern IoC, Factory Method, Source Locator
查看>>
poj1936---subsequence(判断子串)
查看>>
黑马程序员_Java基础枚举类型
查看>>
【redis4 】
查看>>
[ python ] 练习作业 - 2
查看>>
一位90后程序员的自述:如何从年薪3w到30w!
查看>>
在.net core上使用Entity FramWork(Db first)
查看>>
System.Net.WebException: 无法显示错误消息,原因是无法找到包含此错误消息的可选资源程序集...
查看>>
UIImage 和 iOS 图片压缩UIImage / UIImageVIew
查看>>
MongoDB的数据库、集合的基本操作
查看>>
ajax向后台传递数组
查看>>
疯狂JAVA16课之对象与内存控制
查看>>