个人作业1——四则运算题目生成程序

源代码详见:https://coding.net/u/hmhhh/p/hmh_homework1/git/tree/master/

a.需求分析:

自动生成小学四则运算题目的命令行 “软件”,满足以下需求:

1. 除了整数以外,还要支持真分数的四则运算,真分数的运算,例如:1/6 + 1/8 = 7/24

2. 运算符为 +, −, ×, ÷

3. 并且要求能处理用户的输入,并判断对错,打分统计正确率。

4. 要求能处理用户输入的真分数, 如 1/2, 5/12 等

5. 使用 -n 参数控制生成题目的个数,例如执行下面命令将生成10个题目
Myapp.exe -n 10

b.功能设计:

  1. 自动生成题目
  2. 除了整数,还要支持真分数运算
  3. 判断答案正确与否(可以识别真分数答案),如果错误显示正确答案,并显示正确率
  4. 可以控制生成题目数量

 

c.设计实现:

  1. 根据输入的n,生成相应的题目。
  2. 获取答案并检验对错
  3. 返回结果并显示正确率

 

d.代码说明:

使用辗转相除法,求最大公约数

int GCD(int k,int l) //求最大公约数
     
{
     
         int  temp;          /*定义整型变量*/  
     
          if(k<l)             /*通过比较求出两个数中的最大值和最小值*/  
    
          {   

            temp=k;  
     
              k=l;  
     
              l=temp;  
     
           } /*设置中间变量进行两数交换*/  
     
           while(l!=0)           /*通过循环求两数的余数,直到余数为0*/  
     
           {  
     
             temp=k%l;  
 
             k=l;              /*变量数值交换*/  
     
             l=temp;  
     
            }  
     
          return k;      
     
}
int LCM(int k, int l)
     
{
             int temp;  
     
          temp=GCD(k,l);  /*调用自定义函数,求出最大公约数*/  
     
          return  (k*l/temp);             //最大公约数*最小公倍数=两数乘积 求最小公倍数   
     
}

 分数要求生成真分数,所以多了个判断和转换。

if(num3>num4)
     
                {
     
                    num5=num3;
     
                    num3=num4;
     
                    num4=num5;
                    }
     
                printf("(%d/%d)=",num3,num4);

e.测试运行:

PSP表:

PSP2.1

Personal Software Process Stages

Estimated time(min)

actual time(min)

Planning

计划

30

25

· Estimate

估计这个任务需要多少时间

240

310

Development

开发

120

160

· Analysis

需求分析 (包括学习新技术)

20

15

· Design Spec

生成设计文档

20

24

· Design Review

设计复审

10

15

· Coding Standard

代码规范

10

15

· Design

具体设计

30

40

· Coding

具体编码

100

150

· Code Review

代码复审

15

20

· Test

测试(自我测试,修改代码,提交修改)

30

25

Reporting

报告

40

45

·

测试报告

5

5

·

计算工作量

5

8

·

并提出过程改进计划

10

15

 

实验小结:

       这个实验我是用c写的,因为用的是循环,不能一次性全部生成题目,只能做完一题后生成一题。后来查阅了资料也看了其他同学用Java写成的,用的是栈,功能实现好很多。还是自己编程语言能力不足,要继续学习。而且写到分数的四则运算,几乎是借助于资料查阅才完成。编写代码的时间非常长。同样也是长时间下才完成这次作业。总而言之是练习不够、积累不够,要勤加练习了。

 

posted @ 2017-03-07 11:14  快乐大白  阅读(214)  评论(6编辑  收藏  举报