首页 > 其他分享 >参考题目3——四则运算(二)

参考题目3——四则运算(二)

时间:2022-12-22 14:33:08浏览次数:50  
标签:cishu 题目 参考 int 四则运算 System cunshu static min

(1)题目要求
1.定义方法验证题目是否重复;并将出题参数用子方法定义。
2.定义随机数生成器子方法,根据出题参数(出题个数、操作数的个数、确定操作数的取值范围)生成全部的随机操作数。
3.定义方法实现在线答题;全部完成后,显示答题结果,输出正确率和错题。
4.定义方法实现错题集、错题重练并记录错题的次数功能。

 

代码:

package size;
import java.util.*;
import java.lang.Math;
public class size {
static int count=0;
static int ccount=0;
static int cuoticount=0;
static int congzuosum=1;
static int tishusum=0;
static String []arr = new String[100000];
static String []arr1 = new String[100000];
static int []zqda = new int[100000];
static int []cishu = new int[100000];
static Scanner sc = new Scanner(System.in);
//生成随机符号
public static char operator(int chengchu) {
char op=' ';
int n = (int)(Math.random()*999+1);
if(chengchu==1)
{
switch(n%4)
{
case 0:op = '+';break;
case 1:op = '-';break;
case 2:op = '*';break;
case 3:op = '/';break;
}
}
else
{
switch(n%2)
{
case 0:op = '+';break;
case 1:op = '-';break;
}
}
return op;
}

//查重
public static int chachong(int min,int max,int sumoperate,int chengchu,int zhengquedaan,String str,int sumtitle,int []cishu,int []zqda)
{
boolean flag = true;
if(count==0)
{
arr1[0]=str;
return 1;
}
else
{
for (int j = 0; j <count; j++)
{
if( arr1[count]== arr1[j]) flag = false;
}
if(flag==true)
{
return 1;
}
else
{
return 0;
}
}


}

//生成随机四则运算 public static void problem(int min,int max,int sumoperate,int chengchu,int sumtitle,String []arr,int []cishu,int []zqda) {
int a = (int)(Math.random()*(max-min)+min);
int b = (int)(Math.random()*(max-min)+min);
char c = operator(chengchu);
String str = ""+a+c+b;
int []cunshu = new int[1000];
char []cunfuhao =new char[1000];
int shu=0;
int fuhao=0;
if(c=='*')
{
cunshu[shu]=a*b;
}
else if(c=='/')
{
cunshu[fuhao]=a/b;
}
else
{
cunshu[shu]=a;
shu++;
cunshu[shu]=b;
cunfuhao[fuhao]=c;
}

for(int i=2;i<sumoperate;i++)
{
int zenjiashu = (int)(Math.random()*(max-min)+min);
char zenjiac = operator(chengchu);
if(zenjiac=='*')
{
cunshu[shu]=cunshu[shu]*zenjiashu;
}
else if(c=='/')
{
cunshu[shu]=cunshu[shu]/zenjiashu;
}
else
{
shu++;
cunshu[shu]=zenjiashu;
fuhao++;
cunfuhao[fuhao]=zenjiac;
}
str = str + zenjiac + zenjiashu;
}
int zhengquedaan=cunshu[0];
int cou=0;
for(int j=0;j<=fuhao;j++)
{
if(cunfuhao[cou]=='+')
{
zhengquedaan+=cunshu[cou+1];
}
else
{
zhengquedaan-=cunshu[cou+1];
}
}
int panduan=chachong(min,max,sumoperate,chengchu,zhengquedaan,str,sumtitle,cishu,zqda);
if(panduan==1)
{
arr[ccount]=str;
zqda[ccount]=zhengquedaan;
System.out.println(arr[ccount]+"=");
int daan;
daan = sc.nextInt();
if(daan!=zhengquedaan)
{
cuoticount++;
cishu[ccount]=1;
}
ccount++;
}
else
{
problem(min,max,sumoperate,sumtitle,chengchu,arr,cishu,zqda);
}
}

public static int congzuoma()
{
System.out.println("是否需要错题重做:(1.是 2.否)");
int congzuoma;
congzuoma = sc.nextInt();
return congzuoma;
}

public static void chongzuo(int sumtitle,String []arr,int []cishu,int []zqda)
{
System.out.println("错误率:"+cuoticount/tishusum*100+"%");
while(true)
{
if(congzuoma()==1)
{
int cuo=cuoticount;
cuoticount=0;
for(int k=0;k<cuo;k++)
{
for(int i=0;i<tishusum;i++)
{
if(cishu[i]==congzuosum)
{
System.out.println(arr[i]+"=");
int da;
da = sc.nextInt();
if(da!=zqda[i])
{

System.out.println("正确答案:"+zqda[i]);
cishu[i]+=1;
cuoticount++;
}

}
}

}
congzuosum++;
System.out.println("错误率:"+cuoticount/sumtitle*100+"%");
}
else
{
jielun(cishu,arr);
break;
}
}
}

public static void jielun(int []cishu,String []arr)
{
for(int j=0;j<tishusum;j++)
{
if(cishu[j]!=0)
{
System.out.println(arr[j]+"你错了"+cishu[j]+"次");
}
}
}

public static void main(String[] args) {
int sumtitle;//出题个数
int sumoperate;//操作数个数
int min,max;
int chengchu;
System.out.println("请输入出题个数:");
sumtitle = sc.nextInt();
System.out.println("请输入操作数个数:");
sumoperate = sc.nextInt();
System.out.println("请输入操作数范围:");
min = sc.nextInt();
max = sc.nextInt();
if((max-min)<(2*sumoperate-1)*sumtitle) //系统崩溃条件
{
System.out.println("系统崩溃!");
System.exit(0);
}
System.out.println("是否需要乘除运算:1.需要 2.不需要");
chengchu = sc.nextInt();
tishusum=sumtitle;
for(int i=0;i<tishusum;i++)
{
problem(min,max,sumoperate,sumtitle,chengchu,arr,cishu,zqda);
}
chongzuo(sumtitle,arr,cishu,zqda);
}
}

标签:cishu,题目,参考,int,四则运算,System,cunshu,static,min
From: https://www.cnblogs.com/XiMenXve/p/16998614.html

相关文章

  • ng命令汇总:Angular CLI 使用教程指南参考
    AngularCLI使用教程指南参考AngularCLI现在虽然可以正常使用但仍然处于测试阶段.AngularCLI依赖Node4和NPM3或更高版本.安装要安装AngularCLI你需要先安装nod......
  • 参考WebStorm设置VSCode“转到编辑器中的符号”快捷键为Shift双击(这是一个频繁使用的
    搜索workbench.action.gotoSymbol修改key为“shiftshift”这样就比默认的ctrl+shift+O好用了,也不容易误操作成别的快捷键! ......
  • C 加分题目
    C加分题目用C实现一个函数intgcd(inta,intb)求解两个整数的最大公约数,算法步骤是,用a,b中的大值减去小值得到临时值c,然后再用c和a,b中的最小值进行计算,直到c和a,b......
  • C 加分题目
    任务详情用C实现一个函数intgcd(inta,intb)求解两个整数的最大公约数,算法步骤是,用a,b中的大值减去小值得到临时值c,然后再用c和a,b中的最小值进行计算,直到c和a,b中......
  • C 加分题目
    用C实现一个函数intgcd(inta,intb)求解两个整数的最大公约数,算法步骤是,用a,b中的大值减去小值得到临时值c,然后再用c和a,b中的最小值进行计算,直到c和a,b中的最小值相......
  • 好题&&未解决题目
    1.蓝桥杯2021A组I题括号序列题目链接合法括号对当前仅当左括号数>=右括号数时成立设\(dp[i][j]\)为前\(i\)个括号中左括号比右括号多\(j\)个的方案数(只添加左括号)......
  • StringBuilder和StringBuffer的区别以及衍生题目
    StringBuilder和StringBuffer的区别为什么StringBuffer是线程安全的?StringBuffer在单机环境下线程安全吗?为什么?StringBuffer在多机环境下线程安全吗?为什么?StringBuffer......
  • LeetCode 有关二叉树的算法题目(C++)
    0、NULL与nullptr的区别在C语言中,​​NULL​​​通常被定义为:​​#defineNULL((void*)0)​​​。因为在C语言中把空指针赋给​​int​​​和​​char​​​指针的时候,发......
  • Spring LDAP参考
    SpringLDAP使得构建使用LightweightDirectoryAccess协议的基于Spring的应用程序变得更加容易。本文档的副本可以制作供您自己使用和分发给他人,前提是您不对此类副本......
  • 工作流管理系统参考模型简介
    在阐述工作流引擎之前,我们来了解一下工作流技术的基本知识。早在几年前,为了建立工作流管理系统的相关标准,国际上成立了一个称为“工作流管理联盟”(简称WFMC)的国际组织。她提......