js实现随机的四则运算题目
老师给出的题,写一个小程序,可以生成随机的四则运算题目给给小学生用。以前自己就写了一个四则运算的简单js小程序,是这样的:
事件
+
-
*
/
这是个自己输入的算法,但要求是自动产生随机数。于是我用产生随机数的函数重新写了一个:
new document
这样就可以自动的生成随机的30个四则运算题目了。但是还是有问题,小学生啊!他们不知道负数,不知道小数。所以还要加入判定条件!
- switch(Arr[n]){
- case "+":{
- sum=a+b;
- break;
- }
- case "-":{
- sum=a-b;
- while(sum<0){
- var a = GetRandomNum(1,30);
- var b = GetRandomNum(1,30);
- sum=a-b;
- }
- break;
- }
- case "*":{
- sum=a*b;
- break;
- }
- case "/":{
- sum=a/b;
- while(hasDot(sum)){
- var a = GetRandomNum(1,100);
- var b = GetRandomNum(1,100);
- sum=a/b;
- }
- break;
- }
这样负数和小数都没有了。
不过,小学生貌似会分数的运算。于是我又开始试试写分数的。
- <body>
<button class="btn btn-success btn-sm" type='button' onclick="pl_f()">开始生成题目</button>- <span id="text_f"></span>
- <script>
- function GetRandomNum(Min,Max)
- {
- var Range = Max - Min;
- var Rand = Math.random();
- return(Min + Math.round(Rand * Range));
- }
- function max_num(x,y) {
- var t;
- while (y) {
- t = x%y;
- x = y;
- y = t;
- }
- return x;
- }
- function fenshu(a,b,p) {
- if (p==1) {
- if (a>b) {
- return a+"/"+b;
- }else if(a<b){
- return a+"/"+b;
- }else {
- return 1;
- }
- }else {
- var x=a/p;
- var y=b/p;
- if(y==1){
- return x;
- }else{
- return x+"/"+y;
- }
- }
- }
- function pl_f() {
- var son_a = GetRandomNum(1,30);
- var par_b = GetRandomNum(1,30);
- var son_c = GetRandomNum(1,30);
- var par_d = GetRandomNum(1,30);
- var X=son_a+"/"+par_b;
- var Y=son_c+"/"+par_d;
- document.write("第一个分数:"+X+"<br>");
- document.write("第二个分数"+Y+"<br>");
- max_x=max_num(son_a,par_b);
- max_y=max_num(son_c,par_d);
- document.write("第一个最大公约数"+max_x+"<br>");
- document.write("第二个最大公约数"+max_y+"<br>");
- var N=fenshu(son_a,par_b,max_x);
- var M=fenshu(son_c,par_d,max_y);
- document.write("第一个分数化简:"+N+"<br>");
- document.write("第二个分数化简"+M);
- }
- </script>
- </body>
这个可以动态的生成两个分数,然后输出这个分数分子和分母的最大公约数。最后输出分子的最简式。
最后就是将分数放入整数一起了!
- <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
- <html xmlns="http://www.w3.org/1999/xhtml">
- <head>
- <title> new document </title>
- <meta http-equiv="Content-Type" content="text/html; charset=utf-8">
- <meta name="generator" content="editplus" />
- <meta name="author" content="" />
- <meta name="keywords" content="" />
- <meta name="description" content="" />
- </head>
- <body>
- <button type='button' onclick="play_all()">开始生成题目</button>
- <span id="text"></span>
- </body>
- <script>
- function GetRandomNum(Min,Max)
- {
- var Range = Max - Min;
- var Rand = Math.random();
- return(Min + Math.round(Rand * Range));
- }
- function max_num(x,y) {
- var t;
- while (y) {
- t = x%y;
- x = y;
- y = t;
- }
- return x;
- }
- function fenshu(a,b,p) {
- if (p==1) {
- if (a>b) {
- return a+"/"+b;
- }else if(a<b){
- return a+"/"+b;
- }else {
- return 1;
- }
- }else {
- var x=a/p;
- var y=b/p;
- if(y==1){
- return x;
- }else{
- return x+"/"+y;
- }
- }
- }
- function f_count(a,b,c,d) {
- var Arr = ["+","-","*","/"];
- var n = GetRandomNum(0,3);
- switch(Arr[n]){
- case "+":{
- var sum_x=(a*d)+(b*c);
- var sum_y=b*d;
- max_x=max_num(sum_x,sum_y);
- max_y=max_num(sum_x,sum_y);
- var N=fenshu(sum_x,sum_y,max_x);
- return a+"/"+b+"+"+c+"/"+d+"="+N;
- break;
- }
- case "-":{
- var sum_x=(a*d)-(b*c);
- while (sum_x<0) {
- var a = GetRandomNum(1,30);
- var b = GetRandomNum(1,30);
- var c = GetRandomNum(1,30);
- var d = GetRandomNum(1,30);
- var sum_x=(a*d)-(b*c);
- }
- var sum_y=b*d;
- max_x=max_num(sum_x,sum_y);
- max_y=max_num(sum_x,sum_y);
- var N=fenshu(sum_x,sum_y,max_x);
- return a+"/"+b+"-"+c+"/"+d+"="+N;
- break;
- }
- case "*":{
- var sum_x=a*c;
- var sum_y=b*d;
- max_x=max_num(sum_x,sum_y);
- max_y=max_num(sum_x,sum_y);
- var N=fenshu(sum_x,sum_y,max_x);
- return a+"/"+b+"*"+c+"/"+d+"="+N;
- break;
- }
- case "/":{
- var sum_x=a*d;
- var sum_y=b*c;
- max_x=max_num(sum_x,sum_y);
- max_y=max_num(sum_x,sum_y);
- var N=fenshu(sum_x,sum_y,max_x);
- return a+"/"+b+"÷"+c+"/"+d+"="+N;
- break;
- }
- }
- }
- function count(a,b){
- var Arr = ["+","-","*","/"];
- var n = GetRandomNum(0,3);
- switch(Arr[n]){
- case "+":{
- var sum=a+b;
- return a+"+"+b+"="+sum;
- break;
- }
- case "-":{
- var sum=a-b;
- while(sum<0){
- var a = GetRandomNum(1,30);
- var b = GetRandomNum(1,30);
- var sum=a-b;
- }
- return a+"-"+b+"="+sum;
- break;
- }
- case "*":{
- var sum=a*b;
- return a+"*"+b+"="+sum;
- break;
- }
- case "/":{
- var sum=a/b;
- while(a%b!==0){
- var max_x=max_num(a,b);
- var N=fenshu(a,b,max_x);
- return a+"÷"+b+"="+N;
- }
- return a+"÷"+b+"="+sum;
- break;
- }
- }
- }
- function pl_f() {
- var son_a = GetRandomNum(1,30);
- var par_b = GetRandomNum(1,30);
- var son_c = GetRandomNum(1,30);
- var par_d = GetRandomNum(1,30);
- var suma=f_count(son_a,par_b,son_c,par_d);
- return suma;
- }
- function pl() {
- var a = GetRandomNum(1,30);
- var b = GetRandomNum(1,30);
- var sumb=count(a,b);
- return sumb;
- }
- function play_all() {
- for (i = 1; i <=30; i++) {
- var a = GetRandomNum(0,1);
- document.getElementById("text").innerHTML+=("<br>"+"第"+i+"题:");
- switch (a) {
- case 0:
- var A=pl();
- document.getElementById("text").innerHTML+=(A);
- break;
- case 1:
- var B=pl_f();
- document.getElementById("text").innerHTML+=(B);
- break;
- }
- }
- }
- </script>
- </html>
执行完节目就成这样的啦
最后上个答案和题目分开的版本!
- <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
- <html xmlns="http://www.w3.org/1999/xhtml">
- <head>
- <title> new document </title>
- <meta http-equiv="Content-Type" content="text/html; charset=utf-8">
- <meta name="generator" content="editplus" />
- <meta name="author" content="" />
- <meta name="keywords" content="" />
- <meta name="description" content="" />
- </head>
- <body>
- <button type='button' onclick="play_all()">开始生成题目</button>
- <span id="text"></span>
- <span id="text2"></span>
- </body>
- <script>
- function GetRandomNum(Min,Max)
- {
- var Range = Max - Min;
- var Rand = Math.random();
- return(Min + Math.round(Rand * Range));
- }
- function max_num(x,y) {
- var t;
- while (y) {
- t = x%y;
- x = y;
- y = t;
- }
- return x;
- }
- function fenshu(a,b,p) {
- if (p==1) {
- if (a>b) {
- return a+"/"+b;
- }else if(a<b){
- return a+"/"+b;
- }else {
- return 1;
- }
- }else {
- var x=a/p;
- var y=b/p;
- if(y==1){
- return x;
- }else{
- return x+"/"+y;
- }
- }
- }
- function f_count(a,b,c,d) {
- var Arr = ["+","-","*","/"];
- var n = GetRandomNum(0,3);
- switch(Arr[n]){
- case "+":{
- var sum_x=(a*d)+(b*c);
- var sum_y=b*d;
- max_x=max_num(sum_x,sum_y);
- max_y=max_num(sum_x,sum_y);
- var N=fenshu(sum_x,sum_y,max_x);
- return a+"/"+b+"+"+c+"/"+d+"="+N;
- break;
- }
- case "-":{
- var sum_x=(a*d)-(b*c);
- while (sum_x<0) {
- var a = GetRandomNum(1,30);
- var b = GetRandomNum(1,30);
- var c = GetRandomNum(1,30);
- var d = GetRandomNum(1,30);
- var sum_x=(a*d)-(b*c);
- }
- var sum_y=b*d;
- max_x=max_num(sum_x,sum_y);
- max_y=max_num(sum_x,sum_y);
- var N=fenshu(sum_x,sum_y,max_x);
- return a+"/"+b+"-"+c+"/"+d+"="+N;
- break;
- }
- case "*":{
- var sum_x=a*c;
- var sum_y=b*d;
- max_x=max_num(sum_x,sum_y);
- max_y=max_num(sum_x,sum_y);
- var N=fenshu(sum_x,sum_y,max_x);
- return a+"/"+b+"*"+c+"/"+d+"="+N;
- break;
- }
- case "/":{
- var sum_x=a*d;
- var sum_y=b*c;
- max_x=max_num(sum_x,sum_y);
- max_y=max_num(sum_x,sum_y);
- var N=fenshu(sum_x,sum_y,max_x);
- return a+"/"+b+"÷"+c+"/"+d+"="+N;
- break;
- }
- }
- }
- function count(a,b){
- var Arr = ["+","-","*","/"];
- var n = GetRandomNum(0,3);
- switch(Arr[n]){
- case "+":{
- var sum=a+b;
- return a+"+"+b+"="+sum;
- break;
- }
- case "-":{
- var sum=a-b;
- while(sum<0){
- var a = GetRandomNum(1,30);
- var b = GetRandomNum(1,30);
- var sum=a-b;
- }
- return a+"-"+b+"="+sum;
- break;
- }
- case "*":{
- var sum=a*b;
- return a+"*"+b+"="+sum;
- break;
- }
- case "/":{
- var sum=a/b;
- while(a%b!==0){
- var max_x=max_num(a,b);
- var N=fenshu(a,b,max_x);
- return a+"÷"+b+"="+N;
- }
- return a+"÷"+b+"="+sum;
- break;
- }
- }
- }
- function pl_f() {
- var son_a = GetRandomNum(1,30);
- var par_b = GetRandomNum(1,30);
- var son_c = GetRandomNum(1,30);
- var par_d = GetRandomNum(1,30);
- var suma=f_count(son_a,par_b,son_c,par_d);
- return suma;
- }
- function pl() {
- var a = GetRandomNum(1,30);
- var b = GetRandomNum(1,30);
- var sumb=count(a,b);
- return sumb;
- }
- function play_all() {
- for (i = 1; i <=30; i++) {
- var a = GetRandomNum(0,1);
- document.getElementById("text").innerHTML+=("<br>"+"第"+i+"题:");
- switch (a) {
- case 0:
- var A=pl();
- var strs = A.split("=");
- document.getElementById("text").innerHTML+=(strs[0]+"="+"<br>");
- document.getElementById("text2").innerHTML+=("<br>"+"第"+i+"题答案:"+strs[1]);
- break;
- case 1:
- var B=pl_f();
- var strs = B.split("=");
- document.getElementById("text").innerHTML+=(strs[0]+"="+"<br>");
- document.getElementById("text2").innerHTML+=("<br>"+"第"+i+"题答案:"+strs[1]);
- break;
- }
- }
- }
- </script>
- </html>
四则最终版开始生成题目
js实现随机的四则运算题目的更多相关文章
- js实现随机的四则运算题目(2)-更新界面
上次的代码提交完成后,有很多bug.比如函数会重复调用执行,每点击一次按钮都会在生成题目的下方直接生成新的题目,于是我在代码前面添加了如下的代码: function play_allE() { doc ...
- 软件工程课堂作业(二)续——升级完整版随机产生四则运算题目(C++)
一.设计思想: 1.根据题目新设要求,我将它们分为两类:一类是用户输入数目,根据这个数目改变一系列后续问题:另一类是用户输入0或1,分情况解决问题. 2.针对这两类要求,具体设计思路已在上篇博文中写出 ...
- 软件工程课堂作业(一)——随机产生四则运算题目(C++)
一.设计思想: 1.首先主函数只用来调用随机产生并输出运算题目函数,随机产生并输出这一部分功能用一个randout函数实现: 2.随机产生运算数这一功能,两个运算数可以用随机函数生成,并将它们控制在1 ...
- 软件工程课堂作业(五)——终极版随机产生四则运算题目(C++)
一.升级要求:让程序能接受用户输入答案,并判定对错.最后给出总共对/错的数量. 二.设计思想: 1.首先输入答案并判断对错.我想到的是定义两个数组,一个存放用户算的结果,另一个存放正确答案.每输出一道 ...
- 30道四则运算题目---课堂作业--软件工程c++
问题:设计一程序,给二年级小学生随机产生四则运算题目. 一.设计思考问题: 1.四则运算需要俩个运算数和一个运算符. 2.如何产生随机数? 3.如何实现随机产生四则运算? 4.题目是否符合小学生学习范 ...
- 个人作业1——四则运算题目生成程序(java代码,基于控制台)
一.题目描述: 从<构建之法>第一章的 "程序" 例子出发,像阿超那样,花二十分钟写一个能自动生成小学四则运算题目的命令行 "软件",满足以下需求: ...
- 个人作业1——四则运算题目生成程序(基于C++)
题目描述: 从<构建之法>第一章的 "程序" 例子出发,像阿超那样,花二十分钟写一个能自动生成小学四则运算题目的命令行 "软件",满足以下需求: 1 ...
- myapp——自动生成小学四则运算题目的命令行程序(侯国鑫 谢嘉帆)
1.Github项目地址 https://github.com/baiyexing/myapp.git 2.功能要求 题目:实现一个自动生成小学四则运算题目的命令行程序 功能(已全部实现) 使用 -n ...
- java 随机出题四则运算
作业要求来源于:https://edu.cnblogs.com/campus/gzcc/GZCC-16SE2/homework/2186 我的github地址:https://github.com/k ...
随机推荐
- java调用Linux执行Python爬虫,并将数据存储到elasticsearch--(环境脚本搭建)
java调用Linux执行Python爬虫,并将数据存储到elasticsearch中 一.以下博客代码使用的开发工具及环境如下: 1.idea: 2.jdk:1.8 3.elasticsearch: ...
- 【Alpha Go】Day 1 !
[Alpha Go]Day 1 ! Part 0 · 简要目录 Part 1 · 任务分配 Part 2 · 他日安排 Part 3 · 预期任务量 Part 4 · 团队贡献值计算原则 Part 1 ...
- SSL/TLS Diffie-Hellman Modulus <= 1024 位 (LogJam) 使用2048位或更高的Diffie-Hellman
1.http://slproweb.com/products/Win32OpenSSL.html 下载 SSL 并安装 2.设置环境变量,例如工具安装在C:\OpenSSL-Win64,则将C:\O ...
- angularjs ngRoute和ui.router对比
ngRoute模块是angularjs自带的路由模块,ui.router是一个第三方路由模块,接下来将对两者进行一个对比: ng-router(angular-router.js) ng-view n ...
- 使用Winform程序作为WCF服务的宿主
如果我们自己新建一个WCF服务库,生成了dll文件.那我们需要创建一个宿主程序,在本例中我们新建一个Winform程序作为WCF的宿主程序. 在网上很多教程里对创建过程写的很模糊,错误也很多.本文是作 ...
- [POI2011]Meteors
嘟嘟嘟 做了几道题之后,对整体二分有点感觉了. 整体二分的本质就是二分答案.所以这道题二分的就是次数. 然后就是套路了,把小于\(mid\)的操作都添加减去,然后查询,如果查询的值\(x\)比给定值大 ...
- Apache服务器的安装与配置
文档:http://httpd.apache.org/docs/2.4/ 指令:http://httpd.apache.org/docs/2.4/mod/core.html 一.配置文件 语法 * 主 ...
- oracle 查看用户所在的表空间
查看当前用户的缺省表空间 SQL>select username,default_tablespace from user_users; 查看当前用户的角色 SQL>select * fr ...
- centos下安装pip-python
pyspider需要通过pip工具安装 首先检查linux有没有安装python-pip包,直接执行 yum install python-pip 没有python-pip包就执行命令 yum -y ...
- WorldWind源码剖析系列:设置类SettingsBase
PluginSDK中的星球设置类WorldSettings 和WorldWind.程序设置类WorldWindSettings均继承自父类SettingsBase.类图如下所示.其中父类Setting ...