zoukankan      html  css  js  c++  java
  • 援建工程作业04,二柱子4

                                                                                  实验名称:四则运算四

                                                                                   程序员:吕泽坤    

                                                                                   日期:2016-04-10

    (一)实验要求:  

     1、 生成的题目中计算过程不能产生负数,也就是说算术表达式中如果存在形如e1 − e2的子表达式,那么e1 ≥ e2。
    2、生成的题目中如果存在形如e1 ÷ e2的子表达式,那么其结果应是真分数。
    3、每道题目中出现的运算符个数不超过3个,括号不限

    4、程序一次运行生成的题目不能重复,即任何两道题目不能通过有限次交换+和×左右的算术表达式变换为同一道题目。
    例如,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,它们之间不能通过有限次交换变成同一个题目。

    把程序变成一个网页程序, 用户通过设定参数,就可以得到各种题目,并可实现在线答题并评判。


    (二)设计思路:

    1确定题目数量:N

    2随机分配运算符数量,a>0;a<3

    3随机分配在运算符数组 fu[]

    4随机分配数组整数

    5根据运算符个数分类

    6运算符个数为 :1

         分别表示加减乘除运算;

         计算算式结果sum;

         输入 所做答案:

         比较判断对错

    7运算符个数为 :2

         进行判断连续运算符为*,“/”;

         进行括号表示乘除运算;

             分别表示加减乘除运算;

             计算算式结果sum;

              输入 所做答案:

               比较判断对错


    程序代码:

      1 package size04;
      2 import java.lang.*;
      3 import java.util.Scanner;
      4 public class test {
      5     static Scanner input=new Scanner(System.in);     
      6     public static void main(String []arg){
      7         //System.out.println("hello");
      8         System.out.println("请输入题目数量");
      9         //Scanner input=new Scanner(System.in);
     10         int N=input.nextInt();
     11         System.out.println("题目数量"+N);
     12         int i=1,j=0;
     13         for(i=1;i<N+1;i++)
     14         {
     15             
     16             System.out.println("题目 :"+i );
     17             //随机给出运算符数量
     18             int a=(int)(Math.random()*2)+1;
     19             System.out.println("运算符数量:"+a+" ");
     20             String []fu=new String[a];
     21             int fff=0
     22                     ;
     23             for(j=0;j<a;j++)
     24             {
     25                 String  s[]={"+","-","*","/"};
     26                 int c=(int)(Math.random()*4);
     27                 if(c==2||c==3)
     28                 {
     29                     fff++;
     30                 }
     31                 String d=s[c];
     32                 fu[j]=d;
     33             }
     34             System.out.println("运算符:"+" ");
     35             for(j=0;j<a;j++)
     36             {
     37                 System.out.print(fu[j]+" ");
     38                 System.out.println(" :");
     39             }
     40             //随机生成整数数组
     41             int b=a+1;//表示整数个数
     42             int []num=new int[b];
     43             for(j=0;j<b;j++)
     44             {
     45                int d=(int)(Math.random()*101);
     46                num[j]=d;
     47             }
     48             
     49             
     50             if(a==1)
     51             {
     52                 yunsuan1(a,fu,num);
     53                 //a运算符数量
     54                 
     55             }
     56             if(a==2)
     57             {
     58                 yunsuan2(a,fu,num);
     59             }
     60             
     61             /*if(a==3)
     62             {
     63                 yunsuan3(a,fu,num,fff);
     64             }*/
     65         
     66             
     67         }
     68         
     69     }
     70     /*public static void yunsuan3(int a,String fu[],int num[],int fff)
     71     {
     72         int n=a;
     73         int sum=0;
     74          
     75          if(fff<=1)
     76          {
     77              if(fu[0]=="*")
     78          }
     79     }*/
     80     public static void yunsuan2(int a,String fu[],int num[])
     81     {
     82         int n=a,f=0;
     83         int sum=0,sum2=0;
     84         if(fu[0]=="*"&&fu[1]=="*")
     85         {
     86             f=1;
     87         }
     88         if(fu[1]=="/"&&fu[0]=="/")
     89         {
     90             f=1;
     91         }
     92         if(f==1)
     93         {
     94             System.out.println("("+num[0]+fu[0]+num[1]+")"+fu[1]+num[2]+"=");
     95             if(fu[1]=="*")
     96             {
     97                 sum=num[0]*num[1]*num[2];
     98             }
     99             if(fu[1]=="/")
    100             {
    101                 gcd(num[0],num[1]);
    102                  sum2=num[0]/num[1];
    103                 gcd(sum2,num[2]);
    104                 sum=sum2/num[2];
    105             }
    106         }
    107         else  if(f!=1)
    108         {
    109             System.out.println(num[0]+fu[0]+num[1]+fu[1]+num[2]+"=");
    110             if(fu[0]=="+"&&fu[1]=="+")
    111             {
    112                 sum=num[0]+num[1]+num[2];
    113                 
    114             }
    115             if(fu[0]=="+"&&fu[1]=="-")
    116             {
    117                 sum=num[0]+num[1]-num[2];
    118                 
    119             }
    120             if(fu[0]=="+"&&fu[1]=="*")
    121             {
    122                 sum=num[0]+num[1]*num[2];
    123                 
    124             }
    125             if(fu[0]=="+"&&fu[1]=="/")
    126             {
    127                 sum=num[0]+num[1]/num[2];
    128                 
    129             }
    130             if(fu[0]=="-"&&fu[1]=="+")
    131             {
    132                 sum=num[0]-num[1]+num[2];
    133                 
    134             }
    135             if(fu[0]=="-"&&fu[1]=="-")
    136             {
    137                 sum=num[0]-num[1]-num[2];
    138                 
    139             }
    140             if(fu[0]=="-"&&fu[1]=="*")
    141             {
    142                 sum=num[0]-num[1]*num[2];
    143                 
    144             }
    145             if(fu[0]=="-"&&fu[1]=="/")
    146             {
    147                 sum=num[0]-num[1]/num[2];
    148                 
    149             }
    150             if(fu[0]=="*"&&fu[1]=="-")
    151             {
    152                 sum=num[0]*num[1]-num[2];
    153                 
    154             }
    155             if(fu[0]=="*"&&fu[1]=="+")
    156             {
    157                 sum=num[0]-num[1]-num[2];
    158                 
    159             }
    160             if(fu[0]=="*"&&fu[1]=="/")
    161             {
    162                 sum2=num[0]*num[1];
    163                 sum=sum2/num[2];
    164                 
    165             }
    166             if(fu[0]=="/"&&fu[1]=="-")
    167             {
    168                 sum=num[0]/num[1]-num[2];
    169                 
    170             }
    171             if(fu[0]=="/"&&fu[1]=="+")
    172             {
    173                 gcd(num[0],num[1]);
    174                 sum2=num[0]/num[1];
    175             
    176                 sum=sum2+num[2];
    177                 
    178             }
    179             if(fu[0]=="/"&&fu[1]=="*"&&num[1]!=0)
    180             {
    181                 gcd(num[0],num[1]);
    182                 sum2=num[0]/num[1];
    183             
    184                 sum=sum2*num[2];
    185                 
    186             }
    187         }
    188         System.out.println("请输入答案:");
    189         int answer=input.nextInt();
    190         if(sum==answer)
    191         {
    192             System.out.println("答案正确:");
    193         }
    194         else if(sum!=answer)
    195         {
    196             System.out.println("答案错误:");
    197             System.out.println("正确答案:     "+sum);
    198             
    199         }
    200         
    201     }
    202     public static void yunsuan1(int n,String fu[],int num[])
    203     {
    204         
    205             int a=n,j=0;
    206         
    207          
    208             
    209             
    210             int sum = 0,sum2=0;
    211             if(fu[0]=="+")
    212             {
    213                 sum=num[0]+num[1];
    214                 System.out.println(num[0]+fu[0]+num[1]+"=");
    215             }
    216                 
    217             if(fu[0]=="-"&&num[0]>=num[1])
    218             {
    219                 sum=num[0]-num[1];
    220                 System.out.println(num[0]+fu[0]+num[1]+"=");
    221                 
    222             }
    223             if(fu[0]=="-"&&num[0]<num[1])
    224             {
    225                 sum=num[1]-num[0];
    226                 System.out.println(num[1]+fu[0]+num[0]+"=");
    227             }
    228             if(fu[0]=="*")
    229             {
    230                 sum=num[0]*num[1];
    231                 System.out.println(num[0]+fu[0]+num[1]+"=");
    232             }
    233             if(fu[0]=="/"&&num[1]!=0)
    234             {
    235                 System.out.println(num[0]+fu[0]+num[1]+"=");
    236                 gcd(num[0],num[1]);
    237                 sum=num[0]/num[1];
    238                 System.out.println(sum);
    239             }
    240             System.out.println("请输入答案:");
    241             int answer=input.nextInt();
    242             if(sum==answer)
    243             {
    244                 System.out.println("答案正确:");
    245             }
    246             if(sum!=answer)
    247             {
    248                 System.out.println("答案错误:");
    249                 System.out.println("正确答案:"+sum);
    250             }
    251             
    252         
    253     }
    254     
    255     public static int gcd(int x,int y)
    256     {
    257            if(y == 0)
    258                 return x;
    259          else
    260                 return gcd(y,x%y);
    261     }
    262 
    263 }

     实验截图:

  • 相关阅读:
    DHCP服务器与DHCP中继服务器实验
    DAY1-作业
    logging模块的基本使用
    01_docker镜像命令
    00_docker的基本组成
    21_django配置使用mysql数据库的两种方式
    08_使用python操作mysql
    07_mysql的基本操作
    06_python操作mongodb
    05_MongoDB基本操作
  • 原文地址:https://www.cnblogs.com/gdp176119/p/5371143.html
Copyright © 2011-2022 走看看