zoukankan      html  css  js  c++  java
  • 四则运算三

    一.

    1、定义参数控制生成题目的个数。 例如,参数n=10;则将生成10个题目。 2、定义参数控制题目中数值(自然数、真分数和真分数分母)的范围。 例如参数r= 10,将生成10以内(不包括10)的四则运算题目。该参数可以设置为1或其他自然数。 该参数必须给定,否则程序报错并给出帮助信息。3.程序一次运行生成的题目不能重复,即任何两道题目不能通过有限次交换+和×左右的算术表达式变换为同一道题目 例如,23 + 45 = 和45 + 23 = 是重复的题目,6 × 8 = 和8 × 6 = 也是重复的题目。3+(2+1)和1+2+3这两个题目是重复的,由于+是左结合的,1+2+3等价于(1+2)+3,也就是3+(1+2),也就是3+(2+1)。但是1+2+3和3+2+1是不重复的两道题,因为1+2+3等价于(1+2)+3,而3+2+1等价于(3+2)+1,它们之间不能通过有限次交换变成同一个题目。4.

    二.

        我重新将程序写了一遍,为了将自己的思路理的更加清晰一些。前面不变利用while循环,在进行选项之后,引用后面的方法。在整数方法中,定义了一个d1,d1是式子运行的结果,然后在后面定义一个值z,当z与d1进行比较之后,如果值一样就会输出结果正确,如果结果错误,在输出结果错误语句之后,同时会输出正确答案,对于分数的方法,我定义了一个值Z和M,分别代表分数同分过后的分子和分母,剩下的基本和整数的方法一样。

    三.

    import java.util.Scanner;
    
    public class suanshu3 {
        public static void main(String[] args) {
            Scanner input = new Scanner(System.in);
            int m=0;
            while(m==0)
            {
                System.out.println("1、整数计算式,2、真分数计算式");
                int a1 = input.nextInt();
                if(a1==1)
                {
                    zhengshu(a1);
                }
                else
                {
                    fenshu(a1);
                }
            }
        }
        public static void fenshu(int a1) {
             int x,y,i,a2,C;//a代表计算类型,x代表题目数量,y代表数值的范围,i为循环变量,d代表是否有乘除法
             int M,Z;
             int h = 0;
             String d = null;
             System.out.println("请输入题目的数量");
             Scanner input2=new Scanner(System.in);
             x=input2.nextInt();
             String daan[]=new String [x];
             int x1,x2,B,m1,m2;
             System.out.println("请输入分母数值的范围");
             B=input2.nextInt();
             System.out.println("是否有乘除法?(是输入1,否则输入0)");
             C=input2.nextInt();
             if(C==1){
                 for(i=0;i<x;i++){
                     m1=1+(int)(Math.random()*B);//随机生成一个小于B的分母
                     x1=1+(int)(Math.random()*m1);//生成一个比分母小的分子,实现真分数
                     m2=1+(int)(Math.random()*B);//随机生成一个小于B的分母
                     x2=1+(int)(Math.random()*m2);//生成一个比分母小的分子,实现真分数
                     int c=(int)(Math.random()*3);//生成运算符
                     if(c==0)
                     {
                         Z=x1*m2+x2*m1;
                         M=m1*m2; 
                         System.out.print(x1+"/"+m1+"+"+x2+"/"+m2+"=       ");
                         Scanner e1 = new Scanner(System.in);
                         System.out.println("分子:");
                         int z = e1.nextInt();
                         System.out.println("分母:");
                         int m = e1.nextInt();
                         if(z==Z&&m==M){
                             System.out.println("回答正确!");
                             h++;
                         }else{
                             System.out.println("回答错误!正确答案是"+Z+"/"+M);
                         }
                     }
                     if(c==1)
                     {
                         Z=x1*m2-x2*m1;
                         M=m1*m2;
                         System.out.print(x1+"/"+m1+"-"+x2+"/"+m2+"=       ");
                         Scanner e1 = new Scanner(System.in);
                         System.out.println("分子:");
                         int z = e1.nextInt();
                         System.out.println("分母:");
                         int m = e1.nextInt();
                         if(z==Z&&m==M){
                             System.out.println("回答正确!");
                             h++;
                         }else{
                             System.out.println("回答错误!正确答案是"+Z+"/"+M);
                         }
                     }
                     if(c==2)
                     {
                         Z=x1*x2;
                         M=m1*m2;
                         System.out.print(x1+"/"+m1+"*"+x2+"/"+m2+"=       ");
                         Scanner e1 = new Scanner(System.in);
                         System.out.println("分子:");
                         int z = e1.nextInt();
                         System.out.println("分母:");
                         int m = e1.nextInt();
                         if(z==Z&&m==M){
                             System.out.println("回答正确!");
                             h++;
                         }else{
                             System.out.println("回答错误!正确答案是"+Z+"/"+M);
                         }
                     }
                     if(c==3)
                     {
                         Z=m1*x2;
                         M=m2*x1;
                         System.out.print(x1+"/"+m1+"/"+x2+"/"+m2+"=       ");
                         Scanner e1 = new Scanner(System.in);
                         System.out.println("分子:");
                         int z = e1.nextInt();
                         System.out.println("分母:");
                         int m = e1.nextInt();
                         if(z==Z&&m==M){
                             System.out.println("回答正确!");
                             h++;
                         }else{
                             System.out.println("回答错误!正确答案是"+Z+"/"+M);
                         }
                     }
                     if((i+1)%3==0)
                     {
                         System.out.println();
                     }
                     daan[i]=d;
                      
                 }
             }
             if(C==0)
             {
                 for(i=0;i<x;i++){
                     m1=1+(int)(Math.random()*B);//随机生成一个小于B的分母
                     x1=1+(int)(Math.random()*m1);//生成一个比分母小的分子,实现真分数
                     m2=1+(int)(Math.random()*B);//随机生成一个小于B的分母
                     x2=1+(int)(Math.random()*m2);//生成一个比分母小的分子,实现真分数
                     int c=(int)(Math.random()*2);//生成运算符
                     if(c==0)
                     {
                         Z=x1*m2+x2*m1;
                         M=m1*m2; 
                         System.out.print(x1+"/"+m1+"+"+x2+"/"+m2+"=       ");
                         Scanner e1 = new Scanner(System.in);
                         System.out.println("分子:");
                         int z = e1.nextInt();
                         System.out.println("分母:");
                         int m = e1.nextInt();
                         if(z==Z&&m==M){
                             System.out.println("回答正确!");
                             h++;
                         }else{
                             System.out.println("回答错误!正确答案是"+Z+"/"+M);
                         }
                     }
                     if(c==1)
                     {
                         Z=x1*m2-x2*m1;
                         M=m1*m2;
                         System.out.print(x1+"/"+m1+"-"+x2+"/"+m2+"=       ");
                         Scanner e1 = new Scanner(System.in);
                         System.out.println("分子:");
                         int z = e1.nextInt();
                         System.out.println("分母:");
                         int m = e1.nextInt();
                         if(z==Z&&m==M){
                             System.out.println("回答正确!");
                             h++;
                         }else{
                             System.out.println("回答错误!正确答案是"+Z+"/"+M);
                         }
                     }
                     if((i+1)%3==0)
                     {
                         System.out.println();
                     }
                     daan[i]=d;
                      
                 }
             }
        }
        public static void zhengshu(int a1) {//整数
            int x,y,i,a2,C;//a代表计算类型,x代表题目数量,y代表数值的范围,i为循环变量,d代表是否有乘除法
            int d1=0;
            String d = null;//d用来储存答案
            System.out.println("请输入题目的数量");
            Scanner input2=new Scanner(System.in);
            x=input2.nextInt();
            int daan[]=new int [x];
            System.out.println("请输入数值的范围");
            y=input2.nextInt();
            System.out.println("是否有乘除法?(是输入1,否则输入0)");
            C=input2.nextInt();
            if(C==1)
            {
                for(i=0;i<x;i++){
                    int a=(int)(Math.random()*y);//随机生成一个1-10的整数
                    int b=(int)(Math.random()*y);//随机生成一个1-10的整数
                    int c=(int)(Math.random()*3);//随机生成一个1-4的整数,0表示加法,1表示减法,2表示乘法,3表示除法
                    if(c==0)
                    {
                        d1=a+b;
                        y = a + b;
                        System.out.printf(a+"+"+b+"= ");
                        Scanner e1 = new Scanner(System.in);
                        int z = e1.nextInt();
                        if(z==y){
                            System.out.println("回答正确!");
                            d1++;
                        }else{
                            System.out.println("回答错误!正确答案是"+y);
                        }
                    }
                    if(c==1)
                    {
                        d1=a-b;
                        y = a - b;
                        System.out.printf(a+"-"+b+"= ");
                        Scanner e1 = new Scanner(System.in);
                        int z = e1.nextInt();
                        if(z==y){
                            System.out.println("回答正确!");
                            d1++;
                        }else{
                            System.out.println("回答错误!正确答案是"+y);
                        }
                    }
                    if(c==2)
                    {
                        d1=a*b;
                        y = a * b;
                        System.out.printf(a+"*"+b+"= ");
                        Scanner e1 = new Scanner(System.in);
                        int z = e1.nextInt();
                        if(z==y){
                            System.out.println("回答正确!");
                            d1++;
                        }else{
                            System.out.println("回答错误!正确答案是"+y);
                        }
                    }
                    if(c==3)
                    {
                        d1=a/b;
                        y = a / b;
                        System.out.printf(a+"+"+b+"= ");
                        Scanner e1 = new Scanner(System.in);
                        int z = e1.nextInt();
                        if(z==y){
                            System.out.println("回答正确!");
                            d1++;
                        }else{
                            System.out.println("回答错误!正确答案是"+y);
                        }
                    }
                    if((i+1)%3==0){
                        System.out.println();
                    }
                    daan[i]=d1;
                }
                 
            }
            else
            {
                    for(i=0;i<x;i++)
                    {
                        int a=(int)(Math.random()*y);//随机生成一个1-的整数
                        int b=(int)(Math.random()*y);//随机生成一个1-10的整数
                        int c=(int)(Math.random()*2);//随机生成一个1-4的整数,0表示加法,1表示减法
                        if(c==0)
                        {
                            d1=a+b;
                            y = a + b;
                            System.out.printf(a+"+"+b+"= ");
                            Scanner e1 = new Scanner(System.in);
                            int z = e1.nextInt();
                            if(z==y){
                                System.out.println("回答正确!");
                                d1++;
                            }else{
                                System.out.println("回答错误!正确答案是"+y);
                            }
                        }
                        if(c==1)
                        {
                            d1=a-b;
                            y = a - b;
                            System.out.printf(a+"-"+b+"= ");
                            Scanner e1 = new Scanner(System.in);
                            int z = e1.nextInt();
                            if(z==y){
                                System.out.println("回答正确!");
                                d1++;
                            }else{
                                System.out.println("回答错误!正确答案是"+y);
                            }
                        }
                        if((i+1)%3==0){
                            System.out.println();
                        }
                        daan[i]=d1;
                    }
                    
                
            }
        }
    }

    四.

  • 相关阅读:
    读TIJ -2 一切都是对象
    codeforces 437C The Child and Toy
    关于js基础easy忘记的那些事儿
    项目启动会应该注意的几点
    SSH-Struts(一)——基本原理
    公益代理-开发人员的福音
    【手打】LZW编码的C/C++实现
    tab group of firefox
    Sort Colors -- LeetCode
    Qt 学习之路:自定义事件
  • 原文地址:https://www.cnblogs.com/gong123/p/6566808.html
Copyright © 2011-2022 走看看