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

 

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

三、源代码:

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. 人机交互之QQ拼音

    随着电脑系统的不断更新,电脑自带的系统输入法也越来越适应广大群众了,那为什么其他的输入法还能占有大量的用户呢? 首先系统输入法是面向大众的,个性化方面略显不足. 其次系统输入法功能不够全面,比如说手写 ...

  2. linux:ssh远程调用tomcat脚本时候出错

    我们都知道,使用ssh在另一台机子执行一个ssh文件的语句是酱紫的 ssh root@1.9.7.56 "chmod 777 /opt/script/tomcatStop.sh ; sh / ...

  3. linux文件查看

    查看目录 #查看文件 使用  ls  命令,加上参数 -l 表示查看详细信息,-a 表示查看包含隐藏文件在内的文件.也可使用通配符,*代表任意个字符,? 表示单个字符. $ ls ch*.doc #表 ...

  4. Linux系统分区方案(CentOs 6)

    装Linux如何分区: 方案1:(监控服务器,负载均衡器) 1./boot 引导分区,存放引导文件和Linux内核.       启动文件:用于判断你需要启动哪个操作系统或启动哪个内核.        ...

  5. SQL-40 表中新增一列

    题目描述 存在actor表,包含如下列信息:CREATE TABLE IF NOT EXISTS actor (actor_id smallint(5) NOT NULL PRIMARY KEY,fi ...

  6. wait_activity

    wait_activity(self, activity, timeout, interval=1): android特有的 返回的True 或 False :Agrs: - activity - 需 ...

  7. TensorFlow随机值函数:tf.random_uniform

    tf.random_uniform 函数 random_uniform( shape, minval=0, maxval=None, dtype=tf.float32, seed=None, name ...

  8. Android:如何获取屏幕的宽高

    WindowManager wm = (WindowManager) getContext().getSystemService(Context.WINDOW_SERVICE); DisplayMet ...

  9. ios 拉伸图片和计算文字的大小

    一.拉伸图片 /** * 传入图片的名称,返回一张可拉伸不变形的图片 * * @param imageName 图片名称 * * @return 可拉伸图片 */ + (UIImage *)resiz ...

  10. socket长连接理解

    在一个tcp连接上可以连续发送多个数据包,在tcp连接保持期间,如果没有数据包发送,需要双方发检测包以维持此连接,一般需要自己做在线维持. 长连接指建立socket连接后不管是否使用都保持连接,但安全 ...