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

    代码还未完全实现,暂且发布以下内容:

      1 //
      2 //四则运算04
      3 
      4 import java.util.Scanner;
      5 public class Four_Operation_04 {
      6     
      7     static Scanner in=new Scanner(System.in);//定义in为输入
      8     
      9     public static void main(String[] args) {
     10         // TODO Auto-generated method stub
     11         
     12         System.out.print("请选择:
    1.混合运算;
    2.简单运算。
    ");
     13         int k=in.nextInt();                                //k:运算选择
     14         System.out.print("5.请输入打印数量:");
     15         int printNUM=in.nextInt();                         //printNUM:打印数量
     16         System.out.print("请选择:
    计算范围:");
     17         int numF=in.nextInt();                             //numF:计算范围
     18         System.out.print("2.请选择是否有乘除法:
    ");
     19         System.out.print("(1):是            (2):否
    ");
     20         int ccYN=in.nextInt();                             //ccYN:是否有乘除法
     21         
     22         if(k==1)
     23         {
     24             operationComp(numF,ccYN);
     25         }
     26 
     27         if(k==2)
     28         {
     29             operationInt(numF,ccYN,printNUM);
     30         }
     31     }
     32     
     33     //简单运算
     34     public static void operationInt(int a1,int a2,int a4)
     35     {                               //计算范围   乘除法   打印数量
     36         int fir[]=new int[a4];//第一个数
     37         int mid[]=new int[a4]; //符号转化的中间变量
     38         char fh[]=new char[a4];//符号
     39         int sec[]=new int[a4];//第二个数
     40         
     41         int T;//控制重新生成随机数的变量
     42 
     43         for(int i=0;i<a4;i++)
     44         {
     45             T=0;
     46                 
     47             //随机产生
     48             fir[i]=(int)(Math.random()*a1);
     49             mid[i]=(int)(Math.random()*a1);
     50             if(a2==2)//没有乘除法
     51             {
     52                 mid[i]=mid[i]%2;
     53                 if(mid[i]==0)fh[i]='+';
     54                 if(mid[i]==1)fh[i]='-';
     55             }
     56             if(a2==1)//有乘除法
     57             {
     58                 mid[i]=mid[i]%4;
     59                 if(mid[i]==0)fh[i]='+';
     60                 if(mid[i]==1)fh[i]='-';
     61                 if(mid[i]==2)fh[i]='*';
     62                 if(mid[i]==3)fh[i]='/';
     63             }
     64             sec[i]=(int)(Math.random()*a1);
     65             
     66             //减法不能有负数
     67             if(fh[i]=='-')
     68             {
     69                 if(fir[i]-sec[i]<0)
     70                     T=1;
     71             }
     72             
     73             //是否重复
     74             for(int j=i-1;j>=0;j--)
     75             {
     76                 if(fh[i]==fh[j])
     77                 {
     78                     //判断数字有无相同
     79                     if(fir[i]==fir[j]&&sec[i]==sec[j])
     80                         T=1;
     81                     //加法与乘法前后数字也不能都相同
     82                     if(fh[i]=='+'||fh[i]=='/')
     83                     {
     84                         if(fir[i]==sec[j]&&sec[i]==fir[j])
     85                             T=1;
     86                     }    
     87                 }
     88             }
     89             if(T==1)i--;
     90         }
     91             
     92         //打印
     93         int R=0;
     94         for(int m=0;m<a4;m++)
     95         {
     96             System.out.print(fir[m]);
     97             System.out.print(fh[m]);
     98             System.out.print(sec[m]);
     99             System.out.print("=");
    100             String r1=in.next();//用户输入答案
    101             int r2=0;
    102             String r3 = "";
    103                 
    104             if(fh[m]=='+')
    105             {
    106                 r2=fir[m]+sec[m];
    107                 r3=Integer.toString(r2);
    108             }
    109             if(fh[m]=='-')
    110             {
    111                 r2=fir[m]-sec[m];
    112                 r3=Integer.toString(r2);
    113             }
    114             if(fh[m]=='*')
    115             {
    116                 r2=fir[m]*sec[m];
    117                 r3=Integer.toString(r2);
    118             }
    119             if(fh[m]=='/')
    120             {
    121                 if(fir[m]%sec[m]!=0)//除法运算有余数时,真分数输出
    122                 {
    123                     //判断能否化简
    124                     for(int q=Math.min(fir[m],sec[m]);q>0;q--)
    125                     {
    126                         if(fir[m]%q==0&&sec[m]%q==0)
    127                         {
    128                             if(sec[m]/q==1)//当分母化简后等于1
    129                                 r3=Integer.toString(fir[m]);
    130                             else
    131                                 r3=Integer.toString(fir[m]/q)+"/"+Integer.toString(sec[m]/q);
    132                         }
    133                     }
    134                     
    135                 }
    136                 if(fir[m]%sec[m]==0)//除法运算没有余数时
    137                 {
    138                     r2=fir[m]/sec[m];
    139                     r3=Integer.toString(r2);
    140                 }
    141             }
    142             
    143             //判断结果与客户输入是否相同
    144             if(r1.equals(r3))
    145             {
    146                 R++;
    147                 System.out.print("正确!继续加油!
    	^-^
    ");
    148             }
    149             else
    150             {
    151                 System.out.print("错误!正确答案为:"+r3+"
    ");
    152             }
    153         }
    154         System.out.print("正确题目个数:"+R+"个。");
    155     }
    156     //混合运算
    157         public static void operationComp(int b1,int b2)
    158         {                               //计算范围   乘除法   负数
    159             int num[]=new int[5];       //混合运算的数字部分
    160             char fuh[]=new char[4];     //混合运算的符号部分
    161             int mid1;                   //符号中间转换变量
    162             System.out.print("请输入混合运算复杂度:
    ");
    163             int numope=in.nextInt();
    164             int R=0;//统计计算正确题目个数
    165             for(int k=0;k<5;k++)
    166             {
    167                 for(int j=0;j<4;j++)
    168                 {
    169                     mid1=(int)(Math.random()*100);
    170                     if(b2==1)                        //有无乘除法
    171                     {
    172                         if(mid1%4==0)
    173                             fuh[j]='+';
    174                         if(mid1%4==1)
    175                             fuh[j]='-';
    176                         if(mid1%4==2)
    177                             fuh[j]='*';
    178                         if(mid1%4==3)
    179                             fuh[j]='/';
    180                     }
    181                     if(b2==2)
    182                     {
    183                         if(mid1%2==0)
    184                             fuh[j]='+';
    185                         if(mid1%2==1)
    186                             fuh[j]='-';
    187                     }
    188                 }
    189                 for(int i=0;i<5;i++)
    190                 {
    191                     num[i]=(int)(Math.random()*b1);
    192                     if(i>0)
    193                     {
    194                         if(fuh[i-1]=='/')
    195                         {
    196                             while(num[i]==0)
    197                             {
    198                                 num[i]=(int)(Math.random()*b1);//除号后不能有0
    199                             }
    200                             if(num[i-1]%num[i]!=0)
    201                             {
    202                                 i=i-2;
    203                             }
    204                         }
    205                     }
    206                 }
    207                 
    208                 //打印
    209                 int N=0;
    210                 for(int n=0;n<numope-1;n++)
    211                 {
    212                     System.out.print(num[n]);
    213                     System.out.print(fuh[n]);                
    214                     N++;
    215                 }
    216                 System.out.print(num[N]);
    217                 System.out.print("=
    ");
    218                 
    219                 //计算        
    220                 for(int js=0;js<numope-1;js++)
    221                 {
    222                     if(fuh[js]=='*'||fuh[js]=='/')
    223                     {
    224                         if(fuh[js]=='*')
    225                             num[js+1]=num[js]*num[js+1];
    226                         if(fuh[js]=='/')
    227                             num[js+1]=num[js]/num[js+1];
    228                         num[js]=0;
    229                         if(js>0)
    230                             fuh[js]=fuh[js-1];
    231                         if(js==0)
    232                             fuh[js]='+';
    233 
    234                     }
    235                 }
    236                 
    237                 for(int js1=0;js1<numope-1;js1++)
    238                 {
    239                     if(fuh[js1]=='+')
    240                         num[js1+1]=num[js1]+num[js1+1];
    241                     if(fuh[js1]=='-')
    242                         num[js1+1]=num[js1]-num[js1+1];
    243                 }
    244 
    245                 int innum=in.nextInt();
    246                 if(innum==num[numope-1])
    247                     R++;
    248             }
    249             System.out.print("正确题目个数:"+R);    
    250         }
    251 }

  • 相关阅读:
    sum left join 多次引发的问题
    WPF之Binding基础三 Binding的路径Path
    解决Android Studio启动不了的办法
    指向常量的指针和常量指针的区别简单理解
    简单的字符串操作
    QT问答
    log4qt使用示例
    在线代码库
    Qt5的windows开放环境准备
    QT 调试技术
  • 原文地址:https://www.cnblogs.com/weiyao/p/5372346.html
Copyright © 2011-2022 走看看