四则运算三

一.

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;
                }
                
            
        }
    }
}

 

四.

 

posted @ 2017-03-17 16:05  宫aaaa1  阅读(105)  评论(0编辑  收藏  举报