• 团队作业--四则运算网页版


    设计思路:

    (1)结合之前的.java代码(之前的四则运算程序)实现网页化

    (2)先利用最近web课上学的html语言实现首页(功能为对题目进行定制)

    (3)在用户定制题目后把参数传给jsp文件

    (4)jsp文件调用。java文件实现四则运算式的输出和答案校验

    HuanYing.html

     1 <!DOCTYPE html>
     2 <html>
     3 <head>
     4 <meta charset="UTF-8">
     5 <title>四则运算答题系统首页</title>
     6 
     7 <!-- 强制浏览器编码设为简体中文(GB2312),name为搜索引擎提供的关键字列表,Description用来告诉搜索引擎你的网站主要内容 -->
     8 <meta http-equiv="Content-Type" content="text/html; charset=gb2312" />
     9 <meta name="keywords" content="keyword1,keyword2,keyword3">
    10 <meta name="description" content="this is my page">
    11 <Meta name=Author Content=李营,1058584348@qq.com>
    12 
    13 </head>
    14 <body background="1.jpg">
    15 <h1 align="center">四则运算</h1>
    16 <!-- 传递参数值给index.jsp处理 -->
    17 <form action="index.jsp" method="post" action="My.jsp" method="post">
    18 <!-- 互斥选择 -->
    19 <center>
    20 <br>请选择上限(分数没有上下限):
    21 <select name="TopNumber">
    22 <option value=20>20</option>
    23 <option value=20>30</option>
    24 <option value=20>50</option>
    25 <option value=20>80</option>
    26 <option value=20>100</option>
    27 </select><br>
    28 <br>请选择下限(分数没有上下限):
    29 <select name="BaseNumber">
    30 <option value=0>0</option>
    31 <option value=1>1</option>
    32 <option value=3>3</option>
    33 <option value=5>5</option>
    34 <option value=10>10</option>
    35 </select><br>
    36 <!-- 多项选择,在jsp中用数组保存 -->
    37 <br>请在以下选项中打勾:
    38    <input type="checkbox" name="function" value=1>有乘除
    39    <input type="checkbox" name="function" value=2>无余数
    40    <input type="checkbox" name="function" value=3>有括号
    41 <br>
    42    <br>
    43    <br>
    44    <input type="submit"  name="submit" value="确定">
    45 </center>
    46 </form>
    47 <br><br><br><br><br><br><br><br><br><br><br>
    48 <p align="right">作者:信1405-2 李营</p>
    49 </body>
    50 </html>

    index.jsp

     1 <%@ page language="java" contentType="text/html; charset=utf-8"
     2 
     3     pageEncoding="utf-8"%>
     4 <%@ page import="SiZeYunSuan.*"%>
     5 <%
     6 String path = request.getContextPath();
     7 String basePath = request.getScheme()+"://"+request.getServerName()+":"+request.getServerPort()+path+"/";
     8 %>
     9 
    10 <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
    11 <html>
    12   <head>
    13     <base href="<%=basePath%>">
    14     
    15     <title>答题</title>
    16     <meta http-equiv="Content-Type" content="text/html; charset=gb2312" />
    17     <meta http-equiv="pragma" content="no-cache">
    18     <meta http-equiv="cache-control" content="no-cache">
    19     <meta http-equiv="expires" content="0">    
    20     <meta http-equiv="keywords" content="keyword1,keyword2,keyword3">
    21     <meta http-equiv="description" content="This is my page">
    22     <!--
    23     <link rel="stylesheet" type="text/css" href="styles.css">
    24     -->
    25   </head>
    26   
    27   <body background="images/A2.jpg">
    28 
    29    <%
    30    String[] s=new String[30];
    31    float k[]=new float[30];
    32    SiZeYunSuan a=new SiZeYunSuan();
    33  
    34    request.setCharacterEncoding("UTF-8");
    35    String[] function = request.getParameterValues("function");
    36    String TopNumber,BaseNumber;
    37    TopNumber=request.getParameter("TopNumber");
    38    BaseNumber=request.getParameter("BaseNumber");
    39     a.SetValue(a.StrToNum(TopNumber),a.StrToNum(BaseNumber));
    40    if(function!=null){
    41    for(int i=0;i<function.length;i++){
    42        if(function[i].equals("1"))
    43        {
    44            a.SetValue1(1);
    45        }
    46        if(function[i].equals("2"))
    47        {
    48            a.SetValue2(1);
    49        }
    50        if(function[i].equals("3"))
    51        {
    52            a.SetValue3(0);
    53        }
    54        }
    55    }
    56        
    57   
    58     %>
    59    <form action="MyJsp.jsp" method="post">
    60    <center>
    61    <%
    62      a.main();
    63      float temp;
    64      String[] se=new String[30];
    65      for(int i=0;i<30;i++){
    66      s[i]=a.cs(i);
    67            se[i]="name";
    68            se[i]=se[i]+i;
    69      k[i]=a.css(i);
    70      out.print("<tr>"+s[i]+"</tr>");
    71      out.println("<br>");
    72     
    73      
    74    %>   
    75    <input type="text" name=<%=se[i] %>><br>
    76    <%
    77        } 
    78         session.setAttribute( "v1",s);
    79         session.setAttribute( "v2",k); 
    80     %>
    81     <br><input type="submit" name="submit" value="提交">
    82     
    83     <%
    84     
    85    
    86     %>
    87      </center>
    88   </form>
    89   
    90   
    91    
    92     
    93   </body>
    94 </html>

    MyJsp.jsp

     1 <%@ page language="java" import="java.util.*" pageEncoding="gb2312" contentType="text/html; charset=gb2312"%>
     2 <%@ page import="SiZeYunSuan.*"%>
     3 <%
     4 String path = request.getContextPath();
     5 String basePath = request.getScheme()+"://"+request.getServerName()+":"+request.getServerPort()+path+"/";
     6 %>
     7 
     8 <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
     9 <html>
    10   <head>
    11     <base href="<%=basePath%>">
    12     
    13     <title>结果</title>
    14     
    15     <meta http-equiv="pragma" content="no-cache">
    16     <meta http-equiv="cache-control" content="no-cache">
    17     <meta http-equiv="expires" content="0">    
    18     <meta http-equiv="keywords" content="keyword1,keyword2,keyword3">
    19     <meta http-equiv="description" content="This is my page">
    20     <!--
    21     <link rel="stylesheet" type="text/css" href="styles.css">
    22     -->
    23 
    24   </head>
    25   
    26  <body background="1.jpg">
    27   <% request.setCharacterEncoding("UTF-8");%>
    28   <center>
    29   <%
    30 
    31     
    32     String[] name=new String[30];
    33     String[] sum=new String[30];
    34     SiZeYunSuan a=new SiZeYunSuan();
    35     float sum1[]=new float[30];
    36     int right=0;
    37     String[] s= (String[])session.getAttribute("v1");
    38     float[] k=(float[])session.getAttribute("v2");
    39   
    40     for(int i=0;i<30;i++)
    41         sum1[i]=0;
    42     for(int i=0;i<30;i++){
    43         name[i]="name";
    44         name[i]=name[i]+i;
    45         
    46         sum[i]=request.getParameter(name[i]);
    47         //sum[i]=request.getParameterValues(name[i])";
    48         out.print(s[i]);
    49         out.print("<tr>"+sum[i]+"</tr>");
    50         if(sum[i]=="")
    51            out.print("未回答!");
    52         else{
    53             if(((int)(k[i]*100))%100!=0)
    54                sum1[i]=a.StrToFloat1(sum[i]);
    55             else
    56                sum1[i]=a.StrToFloat(sum[i]);
    57             if(Math.abs(sum1[i]*100-k[i]*100)<4){
    58                out.print(" 回答正确!");
    59                right++;
    60             }
    61             else
    62                out.print(" 回答错误,正确答案是: "+k[i]);
    63         }   
    64         
    65          out.println("<br>");
    66     }
    67     out.print("总共做对 "+right+" 题,正确率为:"+(right/30.0)*100+" %");
    68   %><br>
    69    <input type="button" value="返回首页" onClick="window.location.href='HuanYing.html'">
    70    <input type="button" value="关闭" onClick="window.close();">
    71     </center>
    72   </body>
    73 </html>

    SiZeYunSuan.java

      1 package SiZeYunSuan;
      2 
      3 import java.util.*;
      4 public class SiZeYunSuan {
      5         static int MAX=100;
      6         static String formula = "";         //当前算式
      7         static String[] buffer = new String[MAX];     //缓冲区数组
      8         static int TopNumber;          //上限
      9         static int BaseNumber;         //下限
     10         static int IsMulDlvExist;      //是否有乘除
     11         static int Amount;             //操作数的个数
     12         static int BracketNum;         //括号个数
     13         static int[] LBraket = new int[2];         //左括号的位置
     14         static int[] RBraket = new int[2];         //右括号的位置
     15         static int IsNeg;              //是否有负数
     16         static int IsRem;              //是否有余数
     17         static int IsBra;              //是否有括号
     18         static int IsRep;              //是否重复
     19         static float[] Result= new float[MAX];      //正确结果数组
     20         static char lastOp;            //记录上个运算符是否为除号
     21         
     22         //优先级数组
     23         static char[][] prior = {
     24             { '>', '>', '<', '<', '<', '>', '>' },
     25             { '>', '>', '<', '<', '<', '>', '>' },
     26             { '>', '>', '>', '>', '<', '>', '>' },
     27             { '>', '>', '>', '>', '<', '>', '>' },
     28             { '<', '<', '<', '<', '<', '=', ' ' },
     29             { '>', '>', '>', '>', ' ', '>', '>' },
     30             { '<', '<', '<', '<', '<', ' ', '=' }
     31         };
     32         
     33         //将操作符转化为优先级数组的下标
     34         static int Change(String Oper)
     35         {
     36             switch (Oper.charAt(0))
     37             {
     38                 case '+': return 0;
     39                 case '-': return 1; 
     40                 case '*': return 2; 
     41                 case '/': return 3; 
     42                 case '(': return 4; 
     43                 case ')': return 5;
     44                 case '=': return 6; 
     45                 default:  return 6; 
     46             }
     47         }
     48         static int Change(char Oper)
     49         {
     50             switch (Oper)
     51             {
     52                 case '+': return 0;
     53                 case '-': return 1; 
     54                 case '*': return 2; 
     55                 case '/': return 3; 
     56                 case '(': return 4; 
     57                 case ')': return 5;
     58                 case '=': return 6; 
     59                 default:  return 6; 
     60             }
     61         }
     62         static //返回优先级的大小
     63         char Precede(char Oper, char ch)
     64         {
     65             return prior[Change(Oper)][Change(ch)];
     66         }
     67         
     68         //计算两个数的结果
     69         static float Operate(float first, char oper1, float second)
     70         {
     71             switch (oper1)
     72             {
     73             case '+':
     74             {
     75                         return (first + second);
     76             }
     77             case '-':
     78             {
     79                 if (first-second<0)
     80                 {
     81                     IsRep = 1;
     82                     return 0;
     83                 }
     84                         return (first - second);                    
     85             }
     86             case '*':
     87             {
     88                         return (first * second);                    
     89             }
     90             case '/':
     91             {
     92                         if (second == 0)
     93                         {
     94                             IsRep = 1;
     95                             return 0;
     96                         }
     97                         return (first / second);
     98             }
     99             default:  return 0; 
    100             }
    101         }
    102         
    103         //数字的个数
    104         static void NumberAmount()
    105         {
    106             Amount = 2 + (int)((Math.random())*3);
    107         }
    108         
    109         //加左括号   随机选择在第几个数字前面加括号
    110         static void AddLbracket(){
    111             for (int j = 0; j < 2; j++)
    112                 LBraket[j] = 0;
    113             if (Amount == 2)
    114             {
    115                 BracketNum = 0;
    116             }
    117             if (Amount == 3){
    118                 BracketNum = (int)((Math.random())*2);
    119             }
    120             if (Amount > 3)
    121             {
    122                 BracketNum = (int)((Math.random())*3);
    123             }
    124             for (int i = 0; i < BracketNum; i++){
    125                 LBraket[i] = 1 + (int)((Math.random())*(Amount - 2));
    126             }
    127         }
    128         //加右括号
    129         static void AddRbracket(){
    130             for (int j = 0; j < 2; j++)
    131                 RBraket[j] = 0;
    132             int choose;
    133             int trance;
    134             if (BracketNum == 1){
    135                 RBraket[0] = LBraket[0] + 1 +(int)((Math.random())* (Amount - LBraket[0]));
    136             }
    137             if (BracketNum == 2)
    138 
    139             {
    140                 //把最左边的左括号放在第一个数组中
    141                 if (LBraket[0] < LBraket[1])
    142                 {
    143                     trance = LBraket[0];
    144                     LBraket[0] = LBraket[1];
    145                     LBraket[1] = trance;
    146                 }
    147                 //当两个左括号之间相差有点远时有2中右括号添加方法
    148                 if (LBraket[0] - LBraket[1]>2){
    149                     choose = (int)((Math.random())*2);
    150                     if (choose == 0){
    151                         RBraket[0] = LBraket[0] + 1 + (int)((Math.random())*(Amount - LBraket[0]));
    152                         RBraket[1] = LBraket[0] + 1 + (int)((Math.random())*(Amount - LBraket[0]));
    153                     }
    154                     if (choose == 1)
    155                     {
    156                         RBraket[0] = LBraket[0] + 1 + (int)((Math.random())*(Amount - LBraket[0]));
    157                         RBraket[1] = LBraket[1] + 1 + (int)((Math.random())*(LBraket[0] - 2));
    158                     }
    159                 }
    160                 else
    161                 {
    162                     RBraket[0] = LBraket[0] + 1 + (int)((Math.random())*(Amount - LBraket[0]));
    163                     RBraket[1] = LBraket[0] + 1 + (int)((Math.random())*(Amount - LBraket[0]));
    164                     if (LBraket[0] == LBraket[1] && RBraket[0] == RBraket[1]){
    165                         LBraket[0] = LBraket[1] = 0;
    166                         RBraket[0] = RBraket[1] = 0;
    167                         BracketNum = 0;
    168 
    169                     }
    170                     if (LBraket[1] == 1 && (RBraket[0] == Amount || RBraket[1] == Amount))
    171                     {
    172                         LBraket[0] = LBraket[1] = 0;
    173                         RBraket[0] = RBraket[1] = 0;
    174                         BracketNum = 0;
    175                     }
    176 
    177                 }
    178             }
    179         }
    180         
    181         //随机产生最简真分数
    182         static void Score(){
    183             int Left, Right;
    184             Left = BaseNumber + (int)((Math.random())*(TopNumber - BaseNumber + 1));
    185             Right = BaseNumber + (int)((Math.random())*(TopNumber - BaseNumber + 1));
    186             while (Left >= Right || Left == 0)
    187             {
    188                 Left = BaseNumber + (int)((Math.random())*(TopNumber - BaseNumber + 1));
    189                 Right = BaseNumber + (int)((Math.random())*(TopNumber - BaseNumber + 1));
    190             }
    191             int max = 1;
    192             //求最大公约数
    193             for (int i = 2; i <= Left; i++)
    194             {
    195                 if (Left%i == 0 && Right%i == 0)
    196                 {
    197                     max = i;
    198                 }
    199             }
    200             if (max > 1)
    201             {
    202                 Left /= max;
    203                 Right /= max;
    204             }
    205             formula += "(" + Left + "/" + Right + ")";
    206         }
    207         
    208         //随机生成操作符
    209         static void Operater()
    210         {
    211             int choose;
    212             char op='+';
    213             if (IsMulDlvExist == 1)
    214                 choose = 1 + (int)((Math.random())* 4);
    215             else
    216                 choose = 1 + (int)((Math.random())*2);
    217 
    218             switch (choose)
    219             {
    220                 case 1:{op = '+'; lastOp = '+'; break; }
    221                 case 2:{op = '-';  lastOp = '-'; break; }
    222                 case 3:{op = '*';  lastOp = '*'; break; }
    223                 case 4:
    224                 {
    225                           //防止连续除法产生运算误区
    226                           op = '/';
    227                           if (lastOp == '/')
    228                               IsRep = 1;
    229                           else
    230                               lastOp = '/';
    231                           break;
    232                 }
    233             }
    234             formula += op;
    235         }
    236         
    237         //随机生成整数
    238         static void Integer(){
    239             int num;
    240             num = BaseNumber + (int)((Math.random())*(TopNumber - BaseNumber + 1));
    241             formula += num;
    242         }
    243         //创建算式
    244         static void CreateNumber(){
    245             for (int k = 1; k <= Amount; k++)
    246             {
    247 
    248                 for (int i = 0; i < 2; i++){
    249                     if (LBraket[i] == k)
    250                         formula += "(";
    251                 }
    252 
    253                 int cho;
    254                 cho = (int)((Math.random())*2);
    255                 if (cho == 0)
    256                 {
    257                     Integer();
    258                 }
    259                 else
    260                     Score();
    261                 for (int j = 0; j < 2; j++){
    262                     if ((RBraket[j] == k) && RBraket[j] != 0)
    263                         formula += ")";
    264                 }
    265                 if (k == Amount)
    266                     formula += "=";
    267                 else
    268                     Operater();
    269             }
    270         }
    271         //检查是否重复及判断括号是否添加正确
    272         static int Repeat(int time){
    273             buffer[time] = formula;
    274             int juege = 0;
    275             int trance;
    276             for (int i = 0; i < time; i++)
    277             {
    278                 if (buffer[i] == buffer[time])
    279                 {
    280                     juege = 1;
    281                     break;
    282                 }
    283             }
    284             if (IsBra != 1)
    285             {
    286                 if (BracketNum == 1)
    287                 {
    288                     if (LBraket[0] == 1 && RBraket[0] == Amount)
    289                         juege = 1;
    290                 }
    291                 if (BracketNum == 2)
    292                 {
    293                     if (RBraket[0] < RBraket[1])
    294                     {
    295                         trance = RBraket[0];
    296                         RBraket[0] = RBraket[1];
    297                         RBraket[1] = trance;
    298                     }
    299                     if (LBraket[1] == 1 && RBraket[0] == Amount&&LBraket[0] < RBraket[1])
    300                         juege = 1;
    301                 }
    302             }
    303             return juege;
    304         }
    305         static float EvaluateExpression(){
    306             //Stack OPTR=new Stack();
    307             //Stack OPND=new Stack();
    308             float[] OPND=new float[MAX];
    309             char[] OPTR =new char[MAX];
    310             int Ntop=0;
    311             int Ctop=0;
    312             //InitOperStack(OPTR);
    313             //OPTR.push("=");
    314             OPTR[Ctop++]='=';
    315             //PushOper(OPTR, '=');
    316             //InitNumStack(OPND);
    317             int count = 0;
    318             float Num = 0, first, second;
    319             char oper1;
    320             char bracket1;
    321             while (true)
    322             {
    323                 Num = 0;
    324                 //读取数字
    325                 while (formula.charAt(count) >= '0'&&formula.charAt(count) <= '9')
    326                 {
    327                     if (formula.charAt(count) == '0')
    328                     {
    329                         if (count == 0)
    330                             //OPND.push(new Float(0));
    331                             OPND[Ntop++]=0;
    332                         if (count != 0 && !(formula.charAt(count-1) >= '0'&&formula.charAt(count-1) <= '9'))
    333                             //OPND.push(new Float(0));
    334                             OPND[Ntop++]=0;
    335                     }
    336                         
    337                     Num = Num * 10;
    338                     Num = Num + formula.charAt(count) - 48;
    339                     count++;
    340                     
    341                 }
    342                 if (Num > 0)
    343                 {
    344                     //OPND.push(new Float(Num));
    345                     //PushNum(OPND, Num);
    346                     OPND[Ntop++]=Num;
    347                 }
    348                 if (formula.charAt(count) == '='&&OPTR[Ctop-1] == '=')
    349                 {
    350                     break;
    351                 }
    352                 //判断运算符优先级
    353                 
    354                 switch (Precede(OPTR[Ctop-1], formula.charAt(count)))
    355                 {
    356                     case '<':
    357                     {
    358                         //OPTR.push(formula.charAt(count));
    359                         OPTR[Ctop++]=formula.charAt(count);
    360                             //PushOper(OPTR, formula.str()[count]);
    361                             count++;
    362                             break;
    363                     }
    364                     case '>':
    365                     {
    366                             //PopOper(OPTR, oper1);
    367                         //oper1=(char) OPTR.pop();
    368                         oper1=OPTR[--Ctop];
    369                             //PopNum(OPND, second);
    370                         //second=(float) OPND.pop();
    371                         second=OPND[--Ntop];
    372                             //PopNum(OPND, first);
    373                         //first=(float)OPND.pop();
    374                         first=OPND[--Ntop];
    375                             //PushNum(OPND, Operate(first, oper1, second));
    376                         //OPND.push(Operate(first, oper1, second));
    377                         OPND[Ntop++]=Operate(first, oper1, second);
    378                             break;
    379                     }
    380                     case '=':
    381                     {
    382                                 //PopOper(OPTR, bracket1);
    383                         //bracket1=(char) OPTR.pop();
    384                         bracket1=OPTR[--Ctop];
    385                                 count++;
    386                     }
    387                 }
    388             }
    389             return OPND[Ntop-1];
    390         }
    391         
    392         public static void SetValue(int IsMulDlvExist1,int IsRem1,int IsBra1,int TopNumber1,int BaseNumber1)
    393         {
    394             IsMulDlvExist=0;
    395             BaseNumber=0;
    396             TopNumber=10;
    397             IsNeg=0;
    398             IsRem=0;
    399             IsBra=1;
    400             
    401             
    402             
    403             IsMulDlvExist=IsMulDlvExist1;
    404             TopNumber=TopNumber1;
    405             BaseNumber=BaseNumber1;
    406             IsRem=IsRem1;
    407             IsBra=IsBra1;
    408         }
    409         public static void SetValue1(int IMDE)
    410         {
    411             IsMulDlvExist=IMDE;
    412         }
    413         public static void SetValue2(int Rem)
    414         {
    415             IsRem=Rem;
    416         }
    417         public static void SetValue3(int Bra)
    418         {
    419             IsBra=Bra;
    420         }
    421         public static void SetValue(int TopNumber1,int BaseNumber1){
    422             IsMulDlvExist=0;
    423             BaseNumber=0;
    424             TopNumber=10;
    425             IsNeg=0;
    426             IsRem=0;
    427             IsBra=1;
    428             TopNumber=TopNumber1;
    429             BaseNumber=BaseNumber1;
    430             
    431         }
    432         
    433         public static int StrToNum(String x)
    434         {
    435               int num=0;
    436                for(int i=0;i<x.length();i++)
    437                {
    438                        num=num*10+x.charAt(i)-48;
    439                }
    440                return num;
    441         }
    442         public static float StrToFloat(String x)
    443         {
    444             float num=0;
    445             int doat=0;
    446             int mi=-1;
    447             for(int i=0;i<x.length();i++)
    448             {
    449                 if(x.charAt(i)=='.')
    450                 {
    451                     doat=1;
    452                     continue;
    453                 }
    454                 if(doat==1)
    455                 {
    456                     num=(float) (num+(x.charAt(i)-48)*Math.pow(10,mi));
    457                     mi--;
    458                 }else{
    459                     num=num*10+x.charAt(i)-48;
    460                 }
    461             }
    462             return num;
    463         
    464         }
    465         public static float StrToFloat1(String x)
    466         {
    467             float first=0;
    468             float second=0;
    469             int point=0;
    470             for(int i=0;i<x.length();i++)
    471             {
    472                 if(x.charAt(i)=='/')
    473                 {
    474                     point=1;
    475                     continue;
    476                 }
    477                 if(point==1)
    478                 {
    479                     second=second*10+x.charAt(i)-48;
    480                 }else
    481                 {
    482                     first=first*10+x.charAt(i)-48;
    483                 }
    484             }
    485             return (first/second);
    486         }
    487         static int ma()
    488         {
    489             int OutChoose = 0;
    490             int truenum = 0;
    491             int choose;
    492             boolean flag = true;                       
    493             int range = 0;
    494             
    495             //IsMulDlvExist=1;
    496             //BaseNumber=0;
    497             //TopNumber=10;
    498             //IsNeg=0;
    499             //IsRem=0;
    500             //IsBra=0;
    501             
    502             
    503             /*cout << "            欢迎来到四则运算答题系统!" << endl;
    504             cout << "说明:
    	初级只有加减法无括号无负数无余数(默认数值范围0-5)
    	中级有乘除有括号无负数无余数(默认范围0-20)
    	高级有乘除有括号有负数有余数(默认范围0-100)" << endl;
    505             while (flag)
    506             {
    507                 cout << "现在有初级,中级,高级,三种关卡,你要挑战哪一关?" << endl;
    508                 cout << "1.初级  2.中级  3.高级     请选择:";
    509                 cin >> choose;
    510                 switch (choose)
    511                 {
    512                 case 1:
    513                 {
    514                           cout << "是否打印试卷?0、否  1、是  请选择 : ";
    515                           cin >> OutChoose;
    516                           cout << "是否需要数值重设范围?0、否  1、是  请选择 : ";
    517                           cin >> range;
    518                           IsMulDlvExist = 0;
    519                           BaseNumber = 0;
    520                           TopNumber = 5;
    521                           if (range == 1){
    522                               cout << "请输入下限(正数):";
    523                               cin >> BaseNumber;
    524                               cout << "请输入上限(正数):";
    525                               cin >> TopNumber;
    526                           }
    527                           IsNeg = 1;
    528                           IsRem = 1;
    529                           IsBra = 1;
    530                           flag = false;
    531                           break;
    532                 }
    533                 case 2:
    534                 {
    535                           cout << "是否打印试卷?0、否  1、是  请选择 : ";
    536                           cin >> OutChoose;
    537                           cout << "是否需要数值重设范围?0、否  1、是  请选择 : ";
    538                           cin >> range;
    539                           IsMulDlvExist = 1;
    540                           BaseNumber = 0;
    541                           TopNumber = 20;
    542                           if (range == 1){
    543                               cout << "请输入下限(正数):";
    544                               cin >> BaseNumber;
    545                               cout << "请输入上限(正数):";
    546                               cin >> TopNumber;
    547                           }
    548                           IsNeg = 1;
    549                           IsRem = 1;
    550                           IsBra = 0;
    551                           flag = false;
    552                           break;
    553                 }
    554                 case 3:
    555                 {
    556                           cout << "是否打印试卷?0、否  1、是  请选择 : ";
    557                           cin >> OutChoose;
    558                           cout << "是否需要数值重设范围?0、否  1、是  请选择 : ";
    559                           cin >> range;
    560                           IsMulDlvExist = 1;
    561                           BaseNumber = 0;
    562                           TopNumber = 100;
    563                           if (range == 1){
    564                               cout << "请输入下限(正数):";
    565                               cin >> BaseNumber;
    566                               cout << "请输入上限(正数):";
    567                               cin >> TopNumber;
    568                           }
    569                           IsNeg = 0;
    570                           IsRem = 0;
    571                           IsBra = 0;
    572                           flag = false;
    573                           break;
    574                 }
    575                 default:
    576                 {
    577                            cout << "输入有误,请重新选择:" << endl;
    578                            flag = true;
    579                            break;
    580                 }
    581                 }
    582 
    583             }
    584             */
    585 
    586 
    587             //float sum = 0;
    588             for (int i = 0; i < 30; i++)
    589             {
    590                 lastOp = '+';
    591                 IsRep = 0;
    592                 NumberAmount();
    593                 if (IsBra == 0)
    594                 {
    595                     AddLbracket();
    596                     AddRbracket();
    597                 }
    598                 CreateNumber();
    599                 Result[i] = EvaluateExpression();                    
    600                 while (Repeat(i) == 1 || IsRep == 1 || (IsNeg == 1 && (Result[i] < 0 || Result[i] == -0)) || (IsRem == 1 && ((int)(Result[i]*10000))%10000!=0))
    601                 {
    602 
    603                     IsRep = 0;
    604                     lastOp = '+';
    605                     formula="";
    606                     NumberAmount();
    607                     if (IsBra == 0)
    608                     {
    609                         AddLbracket();
    610                         AddRbracket();
    611                     }
    612                     CreateNumber();
    613                     Result[i] = EvaluateExpression();                    
    614                 }
    615                 buffer[i]=formula;
    616                 formula="";
    617             }
    618 
    619             return 0;
    620         }
    621         public static float css(int number){
    622             return Result[number];
    623         }
    624         public static String cs(int number){
    625             return buffer[number];
    626         }
    627     public static void main()
    628     {
    629         int a;
    630         a=ma();
    631         for (int i = 0; i < 30; i++)
    632         {
    633             System.out.println(buffer[i]+Result[i]);
    634         }
    635         
    636     }
    637 }

    结果截图:

  • 相关阅读:
    TPM 程序设计基础 2-1 :具体函数调用步骤及解析示例
    TPM 程序设计基础 1-2-4 :新的 PCR 命令
    TPM 程序设计基础 1-2-3 :Tspi_PcrComposite 类定义
    TPM 程序设计基础 1-2-2 :旧的 PCR 命令
    TPM 程序设计基础 1-2-1 :Tspi_Context 类定义
    TPM 程序设计基础 1-1 :所用 Tspi 函数目录
    TPM 程序设计基础 0-0 :课设程序结构说明
    TPM 课设程序运行基础与要求
    jstl和EL表达式混合使用
    在eclipse中从cvs下载项目,再部署到tomcat常见错误!
  • 原文地址:https://www.cnblogs.com/liying123/p/5374720.html
Copyright © 2020-2023  润新知