基于控制台的四则运算程序

题目描述:

从《构建之法》第一章的 “程序” 例子出发,像阿超那样,花二十分钟写一个能自动生成小学四则运算题目的命令行 “软件”,满足以下需求:

除了整数以外,还要支持真分数的四则运算,真分数的运算,例如:1/6 + 1/8 = 7/24
运算符为 +, −, ×, ÷
并且要求能处理用户的输入,并判断对错,打分统计正确率。
要求能处理用户输入的真分数, 如 1/2, 5/12 等
使用 -n 参数控制生成题目的个数,例如执行下面命令将生成10个题目
Myapp.exe -n 10

需求分析

  • 1、支持整数、真分数的四则运算;
  • 2、判断用户的回答是否正确,并在最后显示正确率;
  • 3、能够使用参数控制生成题目的个数。

功能分析

  • 基本功能
    支持整数、真分数的四则运算;
    提供正确率的显示功能;
    人性化的生成用户所需的题目数。
  • 扩展功能
    整数、真分数在四则运算中可能会出现需要约分的情况,因此要具备约分的功能
  • 高级功能
    暂时还没想出来 ....

设计实现

  • 本程序采用C语言编程
  • 一开始,在主函数定义一个参数来控制题目的个数,定义一个随机数(取值在1、2之间——1表示整数的四则运算,2则表示的是分数的四则运算)来选择随机进行的是整数的四则运算或者是分数的四则运算。同时,定义一个全局变量来记录用户回答正确的题目的个数,再通过与输入的题目个数比较,即可得出正确率。
  • 接着,分别写出计算整数的四则运算和计算分数的四则运算的两个函数。因为在整数的除法运算和分数的运算过程中都有可能涉及到约分的情况,而约分就涉及到最大公约数的计算,因此另外定义了一个函数来获得传入的两个参数的最大公约数。
  • 最后,将各个函数联系起来检查并纠正错误,即可得到一个相对完整的四则运算的小程序。

代码说明

  • 计算过程中涉及到计算最大公约数的情况,因此编写以下代码通过辗转相除法来获得传入的两个参数的最大公约数。之后,在对传入参数进行简单的除法运算即可达到约分的目的。
int gcd(int m,int n)
{
    while(m%n!=0){
        int t=m%n;
        m=n;
        n=t;
    }
    return n;
}

在判断回答是否正确时,采用字符串的比较,比较用户传入的answer和在程序内部计算出的正确结果result,相同则提示TRUE,否则提示FALSE并给出正确的答案。

    if(strcmp(answer,result)==0)
        {
            printf("TRUE\n");
            right++;
        }
    else 
        printf("FALSE  \t正确答案是%s\n",result);
                }

测试运行

1110651-20170304130225501-16689319.png

码云链接:https://git.coding.net/Luojiening/work1.git

PSP展示

PSP2.1Personal Software Process StagesTime (%) Senior Student(/hour)Time (%)(/hour)
· Planning计划21.5
· Estimate估计这个任务需要多少时间4045
· Analysis需求分析 (包括学习新技术)21
· Coding Standard代码规范11.5
· Design具体设计1.51
· Coding具体编码2025
· Test测试(自我测试,修改代码,提交修改)11.5
Reporting报告11

小结

编写程序的过程中,出现过类似随机出来的分数运算结果为1时,输入1/1才能算答案正确,通过添加了一个条件解决了这一个小问题。整体而言,程序能满足题目的大部分要求,但在仍不具备处理类似多运算符等问题。在接下去的日子,会不断地改进和完善。

转载于:https://www.cnblogs.com/Luojiening/p/6501083.html

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值