zoukankan      html  css  js  c++  java
  • 个人作业1——四则运算题目生成程序(基于控制台)

    源码地址:https://git.coding.net/xucan0110/first.git

    1.需求分析:

    现代社会不仅提笔忘字现象严重,人们也更加依赖于计算器,这个程序不仅可以满足小学生学习的检测,亦可作为成年人提升自己计算能力的练习工具

    2.功能分析:

    我将本次作业分析为两大部分:a.基本的四则运算及正误判断(包括整数与真分数两部分,分别涉及“加减乘除”);

                                           b.题目的生成(包括数的随机调用与运算符号的随机调用,以及两者间的随机组合);

    3.设计实现:用C++语言实现

                     先将四则运算分为整数与分数两部分,整数不用说。分数则是采用辗转相除法求最大公约数的方法先判断是否为真分数,然后再用最小公倍数法求出结果。

                     题目的生成则随机调用0到9自由组成分数或整数,再与任一运算符号结合即可。

    4.代码说明:

       a.随机选取运算符号的实现

       char Operator()

      {

        char op;
        srand(time(0));
        int i=rand()%4+1;
        switch(i)
        {
        case 1: return '+';
        case 2: return '-';
        case 3: return '*';
        case 4: return '/';
        }
      }
    b.整数的运算(以加法为例)
       void integer() 
    {
      int g;
      int x,y;
      char op;
      srand(time(0));
      x=rand()%100+1;//取随机数
      y=rand()%100+1;//取随机数
      op=Operator();
      cout<<x<<op<<y<<"="<<endl;
      cout<<"请输入运算结果:";
      if(op=='+') 
    {
      cin>>g;
      if(g==x+y)
    {
      cout<<"恭喜你答对了!"<<endl<<endl;
      correct++;//累计计算正确的题目数
    }
      else
    {
      cout<<"很遗憾你答错了,正确答案是:"<<x+y<<endl<<endl;
      mistake++;//累计计算错误题目个数
    }
    }
      else
     

    c.辗转相除法实现求最大公约数

     int maxNumber(int k, int l) 

    {
      while(k%l!=0){
      int t=k%l;
      k=l;
      l=t;
    }
      return l;
    }
    d.真分数的运算(以除法为例)
      if(op=='/') 
    {
      element=b*c;//分子的计算
      denominator=a*d;//分母的计算
      maxNum=maxNumber(element,denominator);
      element=element/maxNum;
      denominator=denominator/maxNum;
      if(denominator!=1)//分母不为一的情况
    {
      sprintf_s(answer, "%d/%d",element ,denominator);
      if (strcmp(answer, result) == 0)
    {
      cout<<"恭喜你答对了!"<<endl<<endl;
      correct++;
    }
      else
    {
      cout<<"很遗憾你答错了,正确答案是:"<<answer<<endl<<endl;
      mistake++;
    }
    }
      else//分母为一的情况
    {
      sprintf_s(answer, "%d",element);
      if (strcmp(answer, result) == 0)
    {
      cout<<"恭喜你答对了!"<<endl<<endl;
      correct++;
    }
      else
    {
      cout<<"很遗憾你答错了,正确答案是:"<<answer<<endl<<endl;
      mistake++;
    }
    5.测试运行
        

       

    6.展示psp

    PSP2.1 Personal Software Process Stages Time (m) Senior Student Time (m)
    Planning 计划 10 20
    · Estimate 估计这个任务需要多少时间 288 367
    Development 开发 90 120
    · Analysis 需求分析 (包括学习新技术) 10 20
    · Design Spec 生成设计文档 5 5
    · Design Review 设计复审 5 6
    · Coding Standard 代码规范 3 2
    · Design 具体设计 10 15
    · Coding 具体编码 20 30
    · Code Review 代码复审 10 30
    · Test 测试(自我测试,修改代码,提交修改) 20 100
    Reporting 报告 10 30
    · 测试报告 5 2
    · 计算工作量 5 2
    · 并提出过程改进计划 5 5

                   7.小结

                      本次作业看上去并不十分困难,在计划中也以为不会花费很多时间,但事实证明,看上去简单的东西并不意味实施起来容易。

                      拿到作业的最初就有了一个大概的思路,但是当我真正顺着这个思路往细节思考的时候,发现需要解决的问题还很多。在代码测试的阶段花费了很多时间,因为

                      出现了很多错误,有些是因为自己的失误,有些是因为编译器的问题,最后是百度加上同学的帮助才解决的大部分问题。

                      发现自己在代码编还差得很远,以后应多加强练习,加强编码速度,提高编码正确率。


     

  • 相关阅读:
    数据结构>图的应用(拓扑排序,关键路径) 小强斋
    数据结构>图的最短路径 小强斋
    数据结构>图的连通性和最小生成树 小强斋
    mysql查看表的存储引擎等相关信息
    java.util.TaskQueue的最小堆排序算法的应用
    jetty源码阅读总结1
    lucene3.6.0的高亮显示
    log4j MDC NDC应用场景
    velocity自定义标签和指令
    jetty关于http状态码处理的一个很有用的类
  • 原文地址:https://www.cnblogs.com/xucan0110/p/6517796.html
Copyright © 2011-2022 走看看