20165304 四则运算

四则运算

自动生成小学四则运算题目(加、减、乘、除)(完成)

支持整数以及多运算符(优先级未能完善)

支持真分数(未能实现)

统计正确率(完成)

设计思路

假如说随机生产一个随机的四则运算,那么如果说其中数字的个数为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)

实验体会
----------
感觉本次实验难度很大,自己一个人完成很困难,于是请教了设有以及隔壁班的同学,并在其帮助下完成了这次学习。收获颇丰,但是也经历了许多的困难。许多东西是重新学习的,也增长了很多的知识。感谢各位同学的帮助和老司机的教导。
原文地址:https://www.cnblogs.com/zl1998827/p/8849876.html