四则运算
自动生成小学四则运算题目(加、减、乘、除)(完成)
支持整数以及多运算符(优先级未能完善)
支持真分数(未能实现)
统计正确率(完成)
设计思路
假如说随机生产一个随机的四则运算,那么如果说其中数字的个数为n个,那么其运算符为n-1个,其中不考虑括号(未完善)以及真分数,所以不妨假设一个符号的个数控制在100以内(所有随机题的+,-,,/相加),那么我可以定义一个整数型的数组b[100],其中每个元素都是一个随机数,再以其元素余4+1,控制每个元素的个数都在1~4,1代表+,2代表-,3代表/,4代表,同理,定义一个数组大小为100的整数数组,里面每个元素的大小同样为一个随机数,为了方便起见,在这里设计每个数的大小不超过10。并定义一个数组来表示每个表达式的数字个数,定义为t[100],每个元素的大小同样为随机数。对于衔接问题,第一个数和第二个数,可以根据b[0]的大小写出 a[0] b[0] a[1]的大小,定为s.随后根据相应的t数组的大小来安排后面的数字,难以描述,附上其代码。代码如下:
if(b[i-2]==1)
{System.out.printf(" + %d",t[i-1]);
s=s+t[i-1];}
if(b[i-2]==2)
{System.out.printf(" - %d",t[i-1]);
s=s-t[i-1];}
if(b[i-2]==3)
{System.out.printf(" * %d",t[i-1]);
s=s*t[i-1];}
if(b[i-2]==4)
{System.out.printf(" / %d",t[i-1]);
s=s/t[i-1];}
}```
代码
----------
import java.util.*;
public class size {
public static void main(String args[]){
Scanner reader=new Scanner(System.in);
int a[]=new int[100];
int b[]=new int[100];
int t[]=new int[100];
int i=0,j=0;
int n=0;
int s=0,c=0;
float d=0;
System.out.printf("请问需要生成多少个题目:");
n=reader.nextInt();
for(j=0;j<n;j++){
Random rand=new Random();
for(i=0;i<100;i++)
{a[i]=rand.nextInt(6)+1;
b[i]=rand.nextInt(4)+1;
t[i]=rand.nextInt(10)+1;
}
if(b[0]==1)
{System.out.printf("%d + %d",t[0],t[1]);
s=t[0]+t[1];}
if(b[0]==2)
{System.out.printf("%d - %d",t[0],t[1]);
s=t[0]-t[1];}
if(b[0]==3)
{System.out.printf("%d * %d",t[0],t[1]);
s=t[0]*t[1];}
if(b[0]==4)
{System.out.printf("%d / %d",t[0],t[1]);
s=t[0]/t[1];}
for(i=3;i<=a[i];i++){
if(b[i-2]==1)
{System.out.printf(" + %d",t[i-1]);
s=s+t[i-1];}
if(b[i-2]==2)
{System.out.printf(" - %d",t[i-1]);
s=s-t[i-1];}
if(b[i-2]==3)
{System.out.printf(" * %d",t[i-1]);
s=s*t[i-1];}
if(b[i-2]==4)
{System.out.printf(" / %d",t[i-1]);
s=s/t[i-1];}
}
System.out.printf(" =");
c=reader.nextInt();
if(s==c)
{d=d+1;
System.out.printf("正确");}
if(s!=c)
System.out.printf("错误,正确答案为:%d",s);
System.out.printf("
");
}
System.out.printf("正确率为%f",d/n);}
}
截图
----------
![](https://images2018.cnblogs.com/blog/1284381/201804/1284381-20180415223637118-1570757978.png)
实验体会
----------
感觉本次实验难度很大,自己一个人完成很困难,于是请教了设有以及隔壁班的同学,并在其帮助下完成了这次学习。收获颇丰,但是也经历了许多的困难。许多东西是重新学习的,也增长了很多的知识。感谢各位同学的帮助和老司机的教导。