zoukankan      html  css  js  c++  java
  • 软件工程概论四则运算3

             设计思路:

        

    1、题目要求:

        在之前自动出题程序的基础之上,添加新的功能:

            ①能判断用户的输入答案是否正确,正确与否,给出提示,若错误,显示正确答案;

            ② 能处理四则运算的混合算式。

    2、实现思路:

         出题思路不变,对原来程序生成的算式文本,进行读取每一个算式并进行计算,若输入的答案与结果相等,即计算正确。

    在运行混合运算时先随机产生第一个整数,将其转化为字符串,循环产生num4-1个运算符和参加混合运算的整数,将产生的整数以及运算符存入两个数组中,混合四则运算的计算   遍历所有运算符先计算乘除,再计算加减。

           程序源代码:

          import java.util.Scanner;
        import java.util.Random;
    public class sizeyunsuan3
    {
     public  static void main(String args[])
     {
      
      int ab,a,b,c,e,f,q,r=0;
      int down,up;
      double anwser1,anwser2;
      Scanner scanner =new Scanner(System.in);
       System.out.println("请输入你需要的最大值");//先考虑整数的
            
             e=scanner.nextInt();
             System.out.println("请输入你需要的最 小值");
             f=scanner.nextInt();
      System.out.println("请输出你需要多少道题");
      int h0=scanner.nextInt();
      System.out.println("请输出你要进行的运算: 1 二数运算  2 四则混合运算");
      int as=scanner.nextInt();
      
      if(as==1)
      {
      
     
      int i=0,j=0,k=0,p=0;
      for(int h=0;h<h0;h++)
      {   
       b=(int)(Math.random()*4+0);
       a=(int)(Math.random()*e+f);
       c=(int)(Math.random()*e+f);
      
       
       
       if(b==0){
        System.out.println(a+"+"+c+"=");
        System.out.println("请输入你的算式的答案:");
        int w=scanner.nextInt();
        if(w==a+c){
         System.out.println("你的答案正确!");
        i++;
        }
        else
        {
         System.out.println("你的答案错误!");
       }
        }
       if(b==1){
       
        System.out.println(a+"-"+c+"=");
        System.out.println("请输入你的算式的答案:");
        int a1=scanner.nextInt();
        if(a1==a-c)
        {
         System.out.println("你的答案正确!");
         j++;
         }
        else
        {
         System.out.println("你的答案错误!");
       }
       }
       if(b==2)
       {
        System.out.println(a+"*"+c+"=");
        System.out.println("请输入你的算式的答案:");
        int a2=scanner.nextInt();
        if(a2==a*c){
         System.out.println("你的答案正确!");
         k++;
        }
         else
         {
         System.out.println("你的答案错误!");
       }
       }
       if(b==3)
       {
        System.out.println(a+"/"+c+"=");
        System.out.println("请输入你的算式的答案:");
        int a3=scanner.nextInt();
        if(a3==a/c)
        {
         System.out.println("你的答案正确!");
         p++;
        }
        else
        {
         System.out.println("你的答案错误!");
       }
       }
          
         
       
      }
            int w;
            w=j+k+i+p;
            System.out.println("你一共对了"+w+"道题");
      }
      
      
      
      if(as==2){
       
       
       
       char Q[]={'+','-','*','/'};
          for(int i=0;i<h0;i++)
         { 
          int num1,num2,num3,num4,p,p1;
          num4=(int)(Math.random()*9+2); //随机产生混合运算中整数的个数
          double[] j=new double[num4];char[]k=new char[num4];
          num2=(int)(Math.random()*e+f);//随机产生第一个整数
          j[0]=num2;
          String str1=String.valueOf(num2);  //将随机产生的第一个整数转换成字符串形式
          int y=1,l=0;
          for(int z=0;z<num4-1;z++)     //循环产生num4-1个运算符和参加混合运算的整数
            {  
           num1=(int)(Math.random()*4+0);
           num3=(int)(Math.random()*e+f);
           j[y]=num3;k[l]=Q[num1];     //将产生的整数以及运算符存入两个数组中
           ++y;++l;
           String str2=String.valueOf(num3);//将num3转换成字符串
           str1=str1+Q[num1]+str2;  //按混合运算的形式变成字符串
            }
          System.out.println(str1+"=");
          System.out.print("请输入你的答案:");
          anwser1=scanner.nextDouble();
            for(p=0;p<num4-1;p++)    //混合四则运算的计算   遍历所有运算符先计算乘除,再计算加减
            {
             if(k[p]=='*')
             
             {  
              j[p+1]=j[p]*j[p+1];
                 j[p]=0;
                 k[p]='+';
             }
             else if(k[p]=='/')
             {
              j[p+1]=j[p]/j[p+1];
                 j[p]=0;
                 k[p]='+';
             }
            
            }
            for(p1=0;p1<num4-1;p1++)
            {
             if(k[p1]=='+')
             {
              j[p1+1]=j[p1]+j[p1+1];
                 j[p1]=0;
             }
             else if(k[p1]=='-')
             {
              j[p1+1]=j[p1]-j[p1+1];
                 j[p1]=0;
             }
            }
            anwser2=j[num4-1];
            if(anwser1==anwser2)
            {System.out.println("恭喜!输入正确!");r++;}
          else
            {System.out.println("Sorry!输入错误!");
            System.out.println("正确答案是:"+anwser2);}
        }
            System.out.println("一共答对了"+r+"道题!");
           
         }
         }}

           程序截图:

    编程总结分析:

    在编程过程中, 第一次体验了结对开发编程,其中的好处不言而喻,锻炼了团队沟通能力,团结协作解决问题的能力。但是有时候难免会产生不同的思路,而且在编第二个问题的时候,又去看上学期学的数据结构,重新又学习了相关的知识。

     

  • 相关阅读:
    线程
    VS调试Tip集结
    努力提高代码的质量
    深入Razor,你准备好了吗?(兼谈我的学习方法和定位)
    使用匿名委托,Lambda简化多线程代码
    敏捷个人-自我成长[关注个人成长软技能]
    使用ActiveRecord的三层构架及泛型例子
    RUP4+1架构方法
    信息系统字段动态定义 和 JavaScript 实用脚本,很好,珍藏起来[转贴]
    CRM2011
  • 原文地址:https://www.cnblogs.com/lipengpengpeng/p/5321989.html
Copyright © 2011-2022 走看看