课后作业
四则运算课堂测试二
阶段1: 1、定义方法验证题目是否重复;并将出题参数用子方法定义。 2、定义随机数生成器子方法,根据出题参数(出题个数、操作数的个数、确定操作数的取值范围)生成全部的随机操作数。
阶段2: 1、定义方法实现在线答题;全部完成后,显示答题结果,输出正确率和错题。 2、定义方法实现错题集、错题重练并记录错题的次数功能。
阶段三 3、 改造程序,可以实现浮点数精确计算。 可以实现无限大的整数的计算。
package project;
import java.util.Scanner;
import java.math.BigInteger;
import java.util.Random;
public class Test {
static Scanner sc = new Scanner(System.in);
public static void main(String[] args) {
int t1[]=new int [100];
int t2[]=new int [100];
double T1[]=new double [100];
double T2[]=new double [100];
long k1[]=new long [100];
long k2[]=new long [100];
String t3[]=new String [100];
System.out.print("请输入题目数量:");
int n = sc.nextInt();
System.out.println("请输入:1.为普通计算2.浮点数计算3.大整数计算");
int q = sc.nextInt();
switch(q)
{
case 1:
dati(n,t1,t2,t3);
cuoti(n,t1,t2,t3);
break;
case 2:
fudianshujisuan(n,T1,T2,t3);
fudiancuoti(n,T1,T2,t3);
break;
case 3:
bigshujiansuan(n,k1,k2,t3);
bigcuoti(n,k1,k2,t3);
break;
}
}
public static void bigshujiansuan(int n,long k1[],long k2[],String t3[]) {
Random r = new Random();
int s=0;//正确的题数
String k="";
int l=0;
for(int i=0;i<n;i++)
{
int t=0;long data=0;
long b=r.nextLong();
long c=r.nextLong();
t=(int) (1 + Math.random() * 100) %4;
switch(t) {
case 0:
System.out.print(b+"+"+c+"=");
data=b+c;
k="+";
break;
case 1:
System.out.print(b+"-"+c+"=");
data=b-c;
k="-";
break;
case 2:
System.out.print(b+"*"+c+"=");
data=b*c;
k="*";
break;
case 3:
System.out.print(b+"/"+c+"=");
data=b/c;
k="/";
break;
}
long d= sc.nextLong();
if(d==data)
{System.out.println("答案正确");
s++;
}
else
{
System.out.println("答案错误");
k1[l]=b;
k2[l]=c;
t3[l]=k;
l++;
}
}
System.out.println("正确率:"+(double)s/n*100+"%");
System.out.println("结束");
}
public static void bigcuoti(int n,long k1[],long k2[],String t3[]) {
System.out.println("是否查看错题");
System.out.println("若是则输入:y,若不是则输入:n");
Scanner scanner=new Scanner(System.in);
char y=scanner.next().charAt(0);
if(y=='y')
{
System.out.println("错题为:");
for(int i=0;i<n;i++) {
if(k1[i]==0)
break;
System.out.print(k1[i]+t3[i]+k2[i]+"= ");
System.out.println();
}
}
}
public static void fudianshujisuan(int n,double T1[],double T2[],String t3[]) {
int s=0;//正确的题数
Random r = new Random();
String k="";
int l=0;
for(int i=0;i<n;i++)
{
int t=0;double data=0.0;
double b= r.nextDouble();
double c= r.nextDouble();
t=(int) (1 + Math.random() * 100) %4;
switch(t) {
case 0:
System.out.print(b+"+"+c+"=");
data=b+c;
k="+";
break;
case 1:
System.out.print(b+"-"+c+"=");
data=b-c;
k="-";
break;
case 2:
System.out.print(b+"*"+c+"=");
data=b*c;
k="*";
break;
case 3:
System.out.print(b+"/"+c+"=");
data=b/c;
k="/";
break;
}
double d= sc.nextDouble();
if(Math.abs(data-d) < 1e-10 )
{System.out.println("答案正确");
s++;
}
else
{
System.out.println("答案错误");
T1[l]=b;
T2[l]=c;
t3[l]=k;
l++;
}
}
System.out.println("正确率:"+(double)s/n*100+"%");
System.out.println("结束");
}
public static void fudiancuoti(int n,double T1[],double T2[],String t3[]) {
System.out.println("是否查看错题");
System.out.println("若是则输入:y,若不是则输入:n");
Scanner scanner=new Scanner(System.in);
char y=scanner.next().charAt(0);
if(y=='y')
{
System.out.println("错题为:");
for(int i=0;i<n;i++) {
if(T1[i]==0.0)
break;
System.out.print(T1[i]+t3[i]+T2[i]+"= ");
System.out.println();
}
}
}
public static void cuoti(int n,int t1[],int t2[],String t3[]) {
System.out.println("是否查看错题");
System.out.println("若是则输入:y,若不是则输入:n");
Scanner scanner=new Scanner(System.in);
char y=scanner.next().charAt(0);
if(y=='y')
{
System.out.println("错题为:");
for(int i=0;i<n;i++) {
if(t1[i]==0)
break;
System.out.print(t1[i]+t3[i]+t2[i]+"= ");
System.out.println();
}
}
}
public static void dati(int n,int t1[],int t2[],String t3[]) {
int s=0;//正确的题数
String k="";
int l=0;
for(int i=0;i<n;i++)
{
int t=0;int data=0;
int b=(int)(1+Math.random()*100);
int c=(int)(1+Math.random()*100);
t=(int) (1 + Math.random() * 100) %4;
switch(t) {
case 0:
System.out.print(b+"+"+c+"=");
data=b+c;
k="+";
break;
case 1:
System.out.print(b+"-"+c+"=");
data=b-c;
k="-";
break;
case 2:
System.out.print(b+"*"+c+"=");
data=b*c;
k="*";
break;
case 3:
System.out.print(b+"/"+c+"=");
data=b/c;
k="/";
break;
}
int d= sc.nextInt();
if(d==data)
{System.out.println("答案正确");
s++;
}
else
{
System.out.println("答案错误");
t1[l]=b;
t2[l]=c;
t3[l]=k;
l++;
}
}
System.out.println("正确率:"+(double)s/n*100+"%");
System.out.println("结束");
}
public static void caozuoshu(int nn,int n,int m,int nnn)
{
int i;
int a=(int)(1+Math.random()*100);
for(int j=0;j<n;j++) {
for(i=0;i<nn;i++) {
a=(int)(1+Math.random()*100);
System.out.print(a);
if(i==nn-1)
break;
size(nnn);
}
System.out.print("= ");
if(j%m==m-1)
System.out.println();
}
}
public static void size(int nnn) {
int t=0;
if(nnn==2)
t=(int) (1 + Math.random() * 100) %2;
if(nnn==1)
t=(int) (1 + Math.random() * 100) %4;
switch(t) {
case 0:
System.out.print("+");
break;
case 1:
System.out.print("-");
break;
case 2:
System.out.print("*");
break;
case 3:
System.out.print("/");
break;
}
}
}

浙公网安备 33010602011771号