zoukankan      html  css  js  c++  java
  • 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)
    
    实验体会
    ----------
    感觉本次实验难度很大,自己一个人完成很困难,于是请教了设有以及隔壁班的同学,并在其帮助下完成了这次学习。收获颇丰,但是也经历了许多的困难。许多东西是重新学习的,也增长了很多的知识。感谢各位同学的帮助和老司机的教导。
  • 相关阅读:
    堆(优先队列)模板
    线段树(递归)模板
    快速幂(含二阶方阵类)模板
    ACM/CF赛制getstart模板
    [Andrew Stankevich's Contest#21] Lempel-Ziv Compression
    [NOIP2001]Car的旅行路线
    [NOIP2007] 矩阵取数游戏
    [NOIP2010] 关押罪犯
    [NOIP1999] 拦截导弹
    设计模式之第1章-工厂方法模式(Java实现)
  • 原文地址:https://www.cnblogs.com/zl1998827/p/8849876.html
Copyright © 2011-2022 走看看