基于控制台的四则运算

 coding地址:https://git.coding.net/Dialect/c-sizeyunsuan.git

题目要求

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

部分代码展示

void DealInt(int n, int a[])
{
    srand(time(NULL));
    for (int p = 0; p<n; p++)
    {
        int i = (int)rand() % 10;
        int j = (int)rand() % 10;
        int k = (int)rand() % 100 / 25;
        switch (k)
        {
        case 0:
            cout << i << "+" << j << "=";
            a[p] = i + j;
            check2(n, a);
            break;
        case 1:
            cout << i << "-" << j << "=";
            a[p] = i - j;
            check2(n, a);
            break;
        case 2:
            cout << i << "*" << j << "=";
            a[p] = i*j;
            check2(n, a);
            break;
        case 3:
            try
            {
                a[p] = i / j;
                cout << i << "/" << j << "=";
                check2(n, a);
            }
            catch (...)
            {
                p--;
            }


        }

    }
    float t = (float)r / (float)n;
    cout << "正确率:" << 100 * t << "%" << endl;
}

void DealFenshu(int n, int a[][2])
{
    srand(time(NULL));
    for (int p = 0; p<n; p++)
    {
        int i = (int)rand() % 10;
        int j = (int)rand() % 10;
        while (j == 0 || i >= j)
        {
            i = (int)rand() % 10;
            j = (int)rand() % 10;
        }
        int x = (int)rand() % 10;
        int y = (int)rand() % 10;
        while (y == 0 || x >= y)
        {
            x = (int)rand() % 10;
            y = (int)rand() % 10;
        }
        int k = (int)rand() % 100 / 25;
        switch (k)
        {
        case 0:
            cout << "(" << i << "/" << j << ")" << "+" << "(" << x << "/" << y << ")" << "=";
            a[p][0] = i*y + x*j;
            a[p][1] = j*y;
            check1(n, a);
            break;
        case 1:
            cout << "(" << i << "/" << j << ")" << "-" << "(" << x << "/" << y << ")" << "=";
            a[p][0] = i*y - x*j;
            a[p][1] = j*y;
            check1(n, a);
            break;
        case 2:
            cout << "(" << i << "/" << j << ")" << "*" << "(" << x << "/" << y << ")" << "=";
            a[p][0] = i*x;
            a[p][1] = j*y;
            check1(n, a);
            break;
        case 3:
            cout << "(" << i << "/" << j << ")" << "/" << "(" << x << "/" << y << ")" << "=";
            a[p][0] = i*y;
            a[p][1] = j*x;
            check1(n, a);
            break;

        }


    }
    float t = (float)r / (float)n;
    cout << "正确率:" << 100 * t << "%" << endl;
}

PSP2.1 Personal Software Process Stages Time (%) Senior Student Time (%)
Planning 计划 8 6
· Estimate 估计这个任务需要多少时间 8 6
Development 开发 82 88
· Analysis 需求分析 (包括学习新技术) 6 10
· Design Spec 生成设计文档 5 18
· Design Review 设计复审 4 12
· Coding Standard 代码规范 3 30
· Design 具体设计 10 12
· Coding 具体编码 36 21
· Code Review 代码复审 7 15
· Test 测试(自我测试,修改代码,提交修改) 13 21
Reporting 报告 9 60
· 测试报告 3 20
· 计算工作量 2 10
· 并提出过程改进计划 3 30
原文地址:https://www.cnblogs.com/dialect/p/6517335.html