一个简单的加减乘除自动生成小程序升级版(JAVA)
import java.util.Scanner;
public class Suan {
public static void main(String[] args) {
int []b;//设置数组来存放随机产生数
b=new int [4];
Scanner in=new Scanner(System.in);
System.out.println("请选择你想练习的题型:");
System.out.println(" 1、分数的加减乘数法练习!");
System.out.println(" 2、整数的加减乘数法练习!");
int xuanze=in.nextInt();
System.out.println("你想输出四则运算的个数是:");
int num=in.nextInt();
String []a={"+","-","*","/"};//整数运算存放符号的数组
String res,res1 = null, sum1=null;//res为你输入的答案,res1为分数运算和整数运算除法中的正确答案
int []c;//符号的代数
int j=0,sum2=0;//sum2为整数运算中加减除的用户输入答案
int rshu = 0;//用户计算正确数
c=new int [4];
if(1==xuanze)//选择应该输出怎样类型的算式
{
for(int i=0;i<4;i++)//产生符号的代数
{
c[i]=(int)(Math.random()*14/3);
}
for( j=0;j<num;j++)//不够num个数就继续输出算式
{
for(int i=0;i<4;i++)//产生1到10的随机数
{
b[i]=(int)( Math.random()*10);
} if(b[0]>b[1]&&b[2]>b[3]&&b[0]!=0&&b[1]!=0&&b[2]!=0&&b[3]!=0)//真分数的前提
{
System.out.println("("+b[1]+"/"+b[0]+")"+ a[c[0]]+"("+ b[3]+"/"+b[2]+")");
System.out.print("你的答案是:");
res=in.next();
switch(c[0]){//调用成员方法计算
case 0:res1=fracAdd(b[1],b[0],b[3],b[2]);break;
case 1:res1=fracSub(b[1],b[0],b[3],b[2]);break;
case 2:res1=fracMul(b[1],b[0],b[3],b[2]);break;
case 3:res1=fractDiv(b[1],b[0],b[3],b[2]);break;
}
if(!res.equals(res1))//比较答案
{
System.out.println("你的答案错误!正确答案为:"+res1);
}
else
{
rshu++;//用户计算正确数
}
}
else
j--;
}
}
if (2==xuanze)//选择整型数算式
{ for( int r=0;r<num;r++)//不够num个数就继续输出算式
{
int sum = -1;//真正的结果
for(int i=0;i<4;i++)
{
b[i]=(int)( Math.random()*100);
}
for(int i=0;i<4;i++)
{
c[i]=(int)(Math.random()*14/3);
}
switch(c[0])//判断应该用什么符号
{
case 0 :
case 1 :sum=b[0]+b[1];break;
case 2 :sum=b[0]-b[1];break;
case 3 :sum=b[0]*b[1];break;
case 4 : sum1=fractDiv2(b[0],b[1]);break;//除号时调用函数,结果显示分数
}
/*if(sum<0)//减法计算结果不能为0
{
j--;
}*/
if(c[0]==4)//如果符号是除号时
{
System.out.println(b[0]+a[c[0]-1]+b[1]+"=");
System.out.print("你的答案是:");
res=in.next();
if(!res.equals(sum1))
{
System.out.println("你的答案错误!正确答案为:"+sum1);
}
else
rshu++;
}
else//如果符号不是除号时
{
System.out.println(b[0]+a[c[0]-1]+b[1]+"=");
System.out.print("你的答案是:");
sum2=in.nextInt();
if(sum2!=sum)
{
System.out.println("你的答案错误!正确答案为:"+sum);
}
else
rshu++;
//System.out.println(sum);
}
System.out.println(r); }
}
else
{}
System.out.println("你一共答对了"+rshu+"道题"); }
static String fracAdd(int first_numerator,int first_denominator,int second_numrator,int second_denominator){
//分数加法
//需要调用求最大公约数的函数 int denominator; //分子
int numerator; //分母 if(first_denominator==second_denominator) //分母相同时加分子
{
denominator=first_denominator;
numerator=first_numerator+second_numrator;
}
else //否则同分比较分子
{
denominator=first_denominator*second_denominator;
numerator=first_numerator*second_denominator+first_denominator*second_numrator;
}
int gcd = gcd(numerator,denominator); //调用gcd方法约分
denominator = denominator / gcd;
numerator = numerator / gcd;
if(0==denominator/numerator)
{
String res="0";
return res;
}
else
{
String zi1=String.valueOf(numerator);//把结果转换成字符串输出
String zi2=String.valueOf(denominator);//把结果转换成字符串输出
String zi3="/";//把结果转换成字符串输出
String res2=zi1+zi3+zi2;//把结果转换成字符串输出 return res2; } }
static String fracSub(int first_numerator,int first_denominator,int second_numrator,int second_denominator){ //需要调用求最大公约数的函数 int denominator;
int numerator; if(first_denominator==second_denominator) //分母相同时加分子
{
denominator=first_denominator;
numerator=first_numerator-second_numrator;
}
else //否则同分比较分子
{
denominator=first_denominator*second_denominator;
numerator=first_numerator*second_denominator-first_denominator*second_numrator;
}
int gcd = gcd(numerator,denominator);
denominator = denominator / gcd;
numerator = numerator / gcd;
if(0==denominator/numerator)
{
String res="0";
return res;
}
else
{
String zi1=String.valueOf(numerator);
String zi2=String.valueOf(denominator);
String zi3="/";
String res2=zi1+zi3+zi2;
return res2; } }
static String fracMul(int first_numerator,int first_denominator,int second_numerator,int second_denominator){ //需要调用求最大公约数的函数
int denominator;
int numerator; denominator=first_denominator*second_denominator;
numerator=first_numerator*second_numerator; int gcd = gcd(numerator,denominator);
denominator = denominator / gcd;
numerator = numerator / gcd;
if(0==denominator/numerator)
{
String res="0";
return res;
}
else
{
String zi1=String.valueOf(numerator);
String zi2=String.valueOf(denominator);
String zi3="/";
String res2=zi1+zi3+zi2;
return res2; } }
static String fractDiv(int first_numerator,int first_denominator,int second_numerator,int second_denominator){ //需要调用求最大公约数的函数 int denominator;
int numerator; numerator = first_numerator*second_denominator;
denominator = first_denominator*second_numerator; int gcd = gcd(numerator,denominator);
denominator = denominator / gcd;
numerator = numerator / gcd;
String zi1=String.valueOf(numerator);
String zi2=String.valueOf(denominator);
String zi3="/";
String res2=zi1+zi3+zi2;
return res2; }
static String fractDiv2(int first,int second){ //需要调用求最大公约数的函数
int denominator= first;
int numerator= second;
int gcd = gcd(numerator,denominator);
denominator = denominator / gcd;
numerator = numerator / gcd;
String zi1=String.valueOf(numerator);
String zi2=String.valueOf(denominator);
String zi3="/";
String res2=zi1+zi3+zi2;
return res2;
}
static int gcd(int x,int y){ //利用辗转相除法求最大公约数
int r;
while( y!= 0)
{
r = x%y;
x = y;
y = r;
}
return x; } }
运行结果:

感想:用了四个小时左右把原来的那个作业一修改成可以自动生成分数加减乘除的算法,虽然还不太完善,但是,基本功能还是实现了。感觉很开心
注:昨天下午已经把程序写好,只是学校网络一直上传不了程序,今天没办法,只能用手机开WiFi电脑连然后发布!T_T
一个简单的加减乘除自动生成小程序升级版(JAVA)的更多相关文章
- 一个简单的加减乘除自动生成小程序(JAVA)
在学习软件工程的时候,遇到一个这样的问题,一个程序员的儿子上小学二年级,老师让家长每天出30道加减题目给学生做,由于家长是个程序员,所以呢,他就自己写了个程序实现,我们可爱的老师于是也叫我们写了一个类 ...
- 使用MFC做一个简单的‘能自动生成小学生四则运算的软件’
这是软件工程的第一次作业!但由于我们python还没入门,所以这次的要求是‘语言不限’. 小学期做过一个关于MFC的‘资金管理系统’,也正好可以有界面,所以就选择了自己很熟悉的MFC来做这个作业! 1 ...
- go语言实现一个简单的登录注册web小程序
最近学习golang也有一段时间了,基础差不多学了个大概,因为本人是java程序员,所以对web更感兴趣.根据<go web编程>中的例子改编一个更简单的例子,供新手参考,废话不多说,上菜 ...
- 完成一段简单的Python程序,用于实现一个简单的加减乘除计算器功能
#!/bin/usr/env python#coding=utf-8'''完成一段简单的Python程序,用于实现一个简单的加减乘除计算器功能'''try: a=int(raw_input(" ...
- nodejs + 小程序云函数 生成小程序码
前言:这个东西坑死我了 业务需求要生成小程序码 然后我找了两天的资料 运行 生成一堆的乱码 死活就是不能生成 最后看了一遍博客 套用了一下 自己又简单的改了一下 nodejs 我是刚刚接触 有很多 ...
- .NET生成小程序码,并合自定义背景图生成推广小程序二维码
前言: 对于小程序大家可能都非常熟悉了,随着小程序的不断普及越来越多的公司都开始推广使用起来了.今天接到一个需求就是生成小程序码,并且于运营给的推广图片合并在一起做成一张漂亮美观的推广二维码,扫码这种 ...
- 一个简单的猜大小的小游戏 python
初学python,用python写了一个简单的猜大小的小游戏 #!/usr/bin/env python #-*- coding:utf-8 -*- print "------------- ...
- 微信小程序获取Access_token和页面URL生成小程序码或二维码
1.微信小程序获取Access_token: access_token具体时效看官方文档. using System; using System.Collections.Generic; using ...
- PHP生成小程序二维码
/** * [生成小程序二维码] * @return [type] [description] */ public function makeMiniQrcode_do() { begin: $id ...
随机推荐
- BZOJ2595: [Wc2008]游览计划(斯坦纳树,状压DP)
Time Limit: 10 Sec Memory Limit: 256 MBSec Special JudgeSubmit: 2030 Solved: 986[Submit][Status][ ...
- Robosup3D平台搭建
目录 1.安装simspark及默认播放器 安装依赖库/下载simspark源码 编译并安装simspark 编译并安装rcssmonitor3d播放器 2.安装Roboviz播放器 安装java 安 ...
- RNA-seq简单处理流程
RNA_seq pipline RNA_seq pipline PeRl 2018年3月7日 首先说明一下我做RNA-seq处理流程的文件树格式: RNA-seq/ data/ GRCh38.gtf ...
- [转载]C#委托与事件--简单笔记
原文地址:https://www.cnblogs.com/joeymary/p/8486358.html 委托 简单记录点东西 适合似懂非懂的朋友看看委托类型用来定义和响应应用程序中的回调.借此可以设 ...
- 20155236范晨歌_MSF基础应用
20155236范晨歌_MSF基础应用 20155236范晨歌_MSF基础应用 目录 概述 MS08-067漏洞攻击 MS11-050漏洞攻击 MS10-087漏洞攻击 辅助模块 概述 MSF的六种模 ...
- 5322: [Jxoi2018]排序问题
5322: [Jxoi2018]排序问题 链接 分析: 每次选一个出现次数最小的. 代码: #include<cstdio> #include<algorithm> #incl ...
- 详解 nginx location ~ .*\.(js|css)?$ 什么意思?
语法规则: location [=|~|~*|^~] /uri/ { … } = 开头表示精确匹配 ^~ 开头表示uri以某个常规字符串开头,理解为匹配 url路径即可.nginx不对url做编码,因 ...
- spring学习笔记 星球日one - xml方式配置bean
ide: idea lib包的导入:http://webcache.googleusercontent.com/search?q=cache:http://zyjustin9.iteye.com/bl ...
- Using the Console[译]
由于最近的项目需要大量用到浏览器端的js编码和调试,所以仔细阅读了一下Chrome对于开发者工具中js部分的说明.虽然原来也用这个工具,但读后仍然觉得受益匪浅.于是抽空翻译一下,与大家分享. 本人英文 ...
- javaweb学习2——HTTP协议
声明:本文只是自学过程中,记录自己不会的知识点的摘要,如果想详细学习JavaWeb,请到孤傲苍狼博客学习,JavaWeb学习点此跳转 本文链接:https://www.cnblogs.com/xdp- ...