• 基于控制台的四则运算


    Coding地址:https://coding.net/u/Julyyun/p/homework/git

    一、题目简介

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

    二、需求分析

      编写一段程序,能够输出小学四则运算的题目,并且支持真分数的操作,同时能够对用户输入的答案判定正确与否,给出成绩。

    三、功能设计

      1用户能自定义此次题目的数量;

      2能够输出四则运算题目,并支持真分数的运算;

      3能对答案进行判定,并给出正确答案。

    四、代码说明

    .整数部分
    void zhengshu(int m, int a[])
    {
        for (int p = 0; p<m; p++)
        {
            int i = (int)rand() % 50;
            int j = (int)rand() % 50;
            int k = (int)rand() % 100 / 25;
            switch (k)
            {
            case 0:
                int o;
                cout << i << "+" << j << "=";
                a[p] = i + j;
                cin >> o;
                if ((i + j) == o)
                    cout << "答案正确" << endl;
                else
                    cout << "答案错误" << endl;
                break;
            case 1:
                int q;
                cout << i << "-" << j << "=";
                a[p] = i - j;
                cin >> q;
                if ((i - j) == q)
                    cout << "答案正确" << endl;
                else
                    cout << "答案错误" << endl;
                break;
            case 2:
                int r;
                cout << i << "*" << j << "=";
                a[p] = i*j;
                cin >> r;
                if ((i * j) == r)
                    cout << "答案正确" << endl;
                else
                    cout << "答案错误" << endl;
                break;
            case 3:
                int s;
                a[p] = i / j;
                cout << i << "/" << j << "=";
                cin >> s;
                if ((i / j) == s)
                    cout << "答案正确" << endl;
                else
                    cout << "答案错误" << endl;
                break;
            }
        }
    }

    .真分数部分

    void fenshu(int m, int a[][2])
    {
        for (int p = 0; p<m; p++)
        {
            int ti,tj;
            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;
                scanf("%d/%d",&ti,&tj); 
                if(a[p][0]==ti && a[p][1]==tj){
                    cout << "答案正确" << endl;
                }
                else{
                    cout << "答案错误" << endl;
                }
                break;
            case 1:
                cout << "(" << i << "/" << j << ")" << "-" << "(" << x << "/" << y << ")" << "=";
                a[p][0] = i*y - x*j;
                a[p][1] = j*y;
                scanf("%d/%d",&ti,&tj); 
                if(a[p][0]==ti && a[p][1]==tj){
                    cout << "答案正确" << endl;
                }
                else{
                    cout << "答案错误" << endl;
                }
                break;
            case 2:
                cout << "(" << i << "/" << j << ")" << "*" << "(" << x << "/" << y << ")" << "=";
                a[p][0] = i*x;
                a[p][1] = j*y;
                scanf("%d/%d",&ti,&tj); 
                if(a[p][0]==ti && a[p][1]==tj){
                    cout << "答案正确" << endl;
                }
                else{
                    cout << "答案错误" << endl;
                }
                break;
            case 3:
                cout << "(" << i << "/" << j << ")" << "/" << "(" << x << "/" << y << ")" << "=";
                a[p][0] = i*y;
                a[p][1] = j*x;
                scanf("%d/%d",&ti,&tj); 
                if(a[p][0]==ti && a[p][1]==tj){
                    cout << "答案正确" << endl;
                }
                else{
                    cout << "答案错误" << endl;
                }
            }
        }

    五、测试运行

     

    PSP表格

    PSP2.1 Personal Software Process Stages Time (%) Senior Student Time (%)
    Planning 计划 8 6
    · Estimate 估计这个任务需要多少时间 150 160
    Development 开发 80 70
    · Analysis 需求分析 (包括学习新技术) 25 20
    · Design Spec 生成设计文档 5 5
    · Design Review 设计复审 5 5
    · Coding Standard 代码规范 3 3
    · Design 具体设计 30 20
    · Coding 具体编码 80 100
    · Code Review 代码复审 7 5
    · Test 测试(自我测试,修改代码,提交修改) 15 20
    Reporting 报告 10 15
    · 测试报告 3 2
    · 计算工作量 2 1
    · 并提出过程改进计划 3 3

  • 相关阅读:
    算法提高 12-1三角形
    poj3723_Conscription
    算法提高 8-1因式分解
    算法提高 道路和航路
    算法训练 安慰奶牛
    最短路问题(Bellman/Dijkstra/Floyd)
    最小生成树 prime+heap
    算法训练 最短路
    算法训练 最大的算式
    poj3255 Roadblocks
  • 原文地址:https://www.cnblogs.com/bestyun/p/6511743.html
Copyright © 2020-2023  润新知