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

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

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

需求分析:
1.能随机生成整数和真分数四则运算。
2.要能判断用户答案的对错,对做错了的题目给出正确答案,并统计算出正确率。
3.能用参数控制生成题目个数。

设计实现:
1.通过两个函数分别实现整数和真分数运算。
2.采用随机生成1或2来选择调用哪个函数。
3.通过累加的方法计算正确体术,进而算出正确率。

部分代码
1.采用最大公因数来对分数题目答案进行化简,得出最简的答案;采用最小公倍数来获取分数的最简分子和分母。

int maxGYS(int a,int b){
    return a%b==0?b:maxGYS(b,a%b);
}
int minGBS(int a,int b)
{
    int min, max;
    int r;
    max=a>b?a:b;
    min=a<b?a:b;
    if(max%min==0)
        return max;
    while(max%min!=0)
    {
        r=max%min;
        max=min;
        min=r;
    }
    return a*b/min;
}

2.整数除法,先判断答案是否除得尽,是就输出整数,不是就用分数表示。

        case 3:
            cout<<i<<"÷"<<j<<"=";
            if(((double)i/j-(int)i/j)==0)
            {
                DA=i/j;
                _itoa(DA,JG,10);
            }
            else
            {
                char fm[1000];
                _itoa(i,JG,10);
                _itoa(j,fm,10);
                strcat_s(JG,"/");
                strcat_s(JG,fm);
            }
            break;

3.随机出整数和真分数题目

        for(int m=0;m<n;m++){
        int x=(int)rand()%2+1;
        if(x==1){
            ZSYS();
        }
        else if(x==2){
            FSYS();
        }

1111791-20170305225024063-777077485.png
码市地址:https://git.coding.net/yhlms/mssz.git

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

总结:
通过测试修改基本能实现题目的需求,但仍有一些问题没有注意到,界面也不够美观,现在仅能实现自动生成两个数字间的四则运算。

转载于:https://www.cnblogs.com/yhl110/p/6506920.html

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值