一、程序要求: 可以控制下列参数: 是否有乘除法; 是否有括号(最多可以支持十个数参与计算); 数值范围; 加减有无负数; 除法有无余数!

 

二、设计思路 要求能够通过参数来控制有无乘除法,加减有无负数,除法是否有余数。整数加法式子,减法式子,都写成函数,然后再通过参数来控制是否产生此类型的式子,以及式子的一些格式。判断是否重复时,将生成的算式保存在一个数组中,输出之前进行验证,判断是否存在并进行输出。

三、源代码:

package demo;
import java.util.Scanner;
public class yunsuan {
static int j;
static int a,b,c,d,min,max;
static String aa,bb;
static char []ch=new char[4];
public static void zhengshu(){
Scanner in=new Scanner(System.in);
System.out.println("1.有乘除法 2.无乘除法:");
int xx=in.nextInt();
System.out.println("请输入题目页数:");
int x=in.nextInt();
System.out.println("请输入题目个数:");
int x1=in.nextInt();
System.out.println("请输入变量个数:");
int z=in.nextInt();
System.out.print("请输入数值范围:");
min=in.nextInt();
max=in.nextInt();
System.out.println("1.有括号 2.无括号:");
int t=in.nextInt();
int a1,b1;
int []M=new int[10];
String []N=new String[10];
String []A1=new String[x1];
for(int ii=1;ii<=x;ii++)
{
for(int i=0;i<x1;i++)
{
a1=(int)(Math.random()*(z-1)+1);
b1=a1+1;
A1[i]="";
for(int o=0;o<z;o++)
{
M[o]=(int)(Math.random()*max+min);
if(t==1)
{
if(o==a1-1||o==b1-1)
{
if(o==a1-1)
N[o]="("+M[o];
else
N[o]=M[o]+")";
}
else
N[o]=""+M[o];
}
else
N[o]=""+M[o];
if(xx==1)
j=(int)(Math.random()*4+1);
else
j=(int)(Math.random()*2+1);
if(o==z-1)
A1[i]=A1[i]+N[o]+" =";
else
A1[i]=A1[i]+N[o]+" "+ch[j-1];
}
for(int k=0;k<i;k++)
{
if(A1[i].equals(A1[k]))
{
i--;
break;
}
}
}
for(int i=0;i<x1;i++)
{
System.out.println((i+1)+". "+A1[i]);
}
System.out.println("-"+ii+"-");
}
}
public static void fenshu(){
String []B=new String[3];
for(int i=0;i<3;i++)
{
a=(int)(Math.random()*100+1);
b=(int)(Math.random()*100+1);
if(a>b)
aa=b+"/"+a;
else if(a<b)
aa=a+"/"+b;
else
aa="1";
g=(int)(Math.random()*100+1);
d=(int)(Math.random()*100+1);
if(c>d)
bb=d+"/"+c;
else if(c<d)
bb=c+"/"+d;
else
vv="1";
j=(int)(Math.random()*4+1);
B[i]=aa+" "+ch[j-1]+" "+bb+"=";
for(int k=i+1;k<3;k++)
{
if(B[i].equals(B[k]))
{
a=(int)(Math.random()*10+1);
b=(int)(Math.random()*10+1);
j=(int)(Math.random()*4+1);
B[k]=aa+" "+ch[j-1]+" "+bb+"=";
k--;
}
}
System.out.println((i+1)+". "+B[i]);
}
}
public static void main(String[] args){
Scanner in=new Scanner(System.in);
System.out.println("1.整数运算");
System.out.println("2.分数运算");
ch[0]='+';
ch[1]='-';
ch[2]='*';
ch[3]='/';
int t=in.nextInt();
if(t==1)
{
zhengshu();
System.out.println();
}
else if(t==2)
{
fenshu();
System.out.println();
}
else
return;
}
}

截图:

四、总结:

  通过编写这个程序我认识到遇到复杂难以解决的问题要分而治之,还有要把解决问题的手段封装到方法里,这样会便于以后的管理。

web四则混合运算3的更多相关文章

  1. web四则混合运算2

    一.设计思路: 先出题(String型)(上周已经实现),再写方法计算结果,加入控制有无乘除法,范围,参与计算数,出题数,页码显示等简单功能,有无括号和分数的计算目前还没能实现. 二.代码: 界面 & ...

  2. Web四则混合运算

    一.代码1: <%@ page language="java" contentType="text/html; charset=UTF-8" pageEn ...

  3. 软件工程学习之小学四则混合运算出题软件 Version 1.00 设计思路及感想

    对于小学四则混合运算出题软件的设计,通过分析设计要求,我觉得为了这个软件在今后便于功能上的扩充,可以利用上学期所学习的<编译原理>一课中的LL1语法分析及制导翻译的算法来实现.这样做的好处 ...

  4. 如何处理加括号的四则混合运算表达式——基于二叉树的实现(Eclipse平台 Java版)

    记得上<数据结构>课程时,利用栈的特性解决过四则混合运算表达式.而如今在编写小型关系数据库的时候,编译部分要处理where后面的逻辑表达式——检查语法正确与否的同时,还要将信息传给下一个接 ...

  5. MathExamV2.0四则混合运算计算题生成器

    MathExamV2.0四则混合运算计算题生成器----211606360 丁培晖 211606343 杨宇潇 一.预估与实际 PSP2.1 Personal Software Process Sta ...

  6. C语言编程学习:写的秒速计算四则混合运算项目

    C语言是面向过程的,而C++是面向对象的 C和C++的区别: C是一个结构化语言,它的重点在于算法和数据结构.C程序的设计首要考虑的是如何通过一个过程,对输入(或环境条件)进行运算处理得到输出(或实现 ...

  7. java 解析四则混合运算表达式并计算结果

    package ch8; import java.util.LinkedList; import java.util.List; import java.util.Stack; /** * 四则混合运 ...

  8. 用C++实现的有理数(分数)四则混合运算计算器

    实现目标 用C++实现下图所示的一个console程序: 其中: 1.加减乘除四种运算符号分别用+.-.*./表示, + 和 - 还分别用于表示正号和负号. 2.分数的分子和分母以符号 / 分隔. 3 ...

  9. 软件工程学习之小学四则混合运算出题软件 Version 1.1 设计思路及感想

    继上次采用形式文法来生成混合运算的算式,由于算法中没有引入控制参数而导致容易产生形式累赘(多余的括号等)的算式.本次更新决定采用一种更为简单有效的生成方式,由给出的一个随机的最终答案S,通过给定的一个 ...

随机推荐

  1. ES6中的Promise.resolve()的作用

    var foo = { then: (resolve, reject) => resolve('foo') }; var resolved = Promise.resolve(foo); 相当于 ...

  2. 批量设置样式json版

    <!doctype html> <html> <head> <meta charset="utf-8"> <meta name ...

  3. 基于iscroll的better-scroll在vue中的使用

    什么是 better-scroll better-scroll 是一个移动端滚动的解决方案,它是基于 iscroll 的重写,它和 iscroll 的主要区别在这里.better-scroll 也很强 ...

  4. Linux防火墙iptables的策略

    iptables策略 iptables -L #查看现有防火墙所有策略 iptables -F #清除现有防火墙策略 只允许特定流量通过,禁用其他流量 1.允许SSH流量(重要) iptables - ...

  5. python中字典常用的方法

    #定义一个空字典: a={ } 定义一个字典: d={'age':18} #增加一个元素: d['age']=20   d[k]=v d.setdefault('age',18)    d.setde ...

  6. el表达式原样输出,不被解析

    今天遇到了,在jar包都有的前提下EL表达式原样输出,不被解析,原因是: page指令中确少 isELIgnored="false" 加上就好了 <%@ page langu ...

  7. angular4-事件绑定

    事件绑定语法(可以通过 (事件名) 的语法,实现事件绑定) <date-picker (dateChanged)="statement()"></date-pic ...

  8. transiton,transform,animation,border-image

    animation,transition,transform三者联系与区别: https://www.jianshu.com/p/0e0e1903b80d transform: 使用小技巧: tran ...

  9. 单元测试模拟-moq

    1.moq 支持 net core 2.moq 通过一个接口类型 可以产生一个新的类 3.举例 //define interface to be mocked public interface ITe ...

  10. 设计Web程序,计算任意两个整数的和,并在网页上显示结果。要求在javabean中实现数据的求和功能。

    <%--提交页面input.jsp--%> <%@ page language="java" import="java.util.*" pag ...