个人作业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.1Personal Software Process StagesTime (m) Senior StudentTime (m)
Planning计划1020
· Estimate估计这个任务需要多少时间288367
Development开发90120
· Analysis需求分析 (包括学习新技术)1020
· Design Spec生成设计文档55
· Design Review设计复审56
· Coding Standard代码规范32
· Design具体设计1015
· Coding具体编码2030
· Code Review代码复审1030
· Test测试(自我测试,修改代码,提交修改)20100
Reporting报告1030
·测试报告52
·计算工作量52
·并提出过程改进计划55

               7.小结

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

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

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

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


 

转载于:https://www.cnblogs.com/xucan0110/p/6517796.html

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值