• 二柱子四则运算定制版


    题目:

    1.题目避免重复 。2.可定制 3.可控制下列参数(是否有乘除法;是否有括号;数值范围;加减有无负数;除法有无余数)

    思路:

    程序设计的总体思路:先定义输出的运算公式,分成真分数和整数外加空行输出和空格输出。然后在主函数中,定义4个随机数,分别整除2求余,通过余数来判断是否有乘除法,是否有括号,加减有无负数,除法有无余数。再定义进行运算的随机数。在乘除法中,若要求无余数,但两个随机数不能进行整除,则计算出这两个随机数的最大公约数,将最大公约数赋值给除数。这样就可以实现整除。

    代码:

    //吕广浩 2013/3/12
    #include<iostream>
    #include<time.h>
    using namespace std;
    int a, b,a1,b1,f, i;
    void ys1()//定义运算函数 方便输出
    {
        if (f == 0)
            cout << a << '+' << b<< "=" << endl;
        if (f == 1)
            cout << a << '-' << b << "=" << endl;
        if (f== 2)
            cout << a << '*' << b << "=" << endl;
        if (f == 3)
            cout << a << '/' << b << "=" << endl;
    }
    void ys2()
    {
        if (f == 0)
            cout << a1 << "+" << b << "=" << "	";
        if (f == 1)
            cout << a << "-" << b << "=" << "	";
        if (f == 2)
            cout << a << "*" << b << "=" << "	";
        if (f == 3)
            cout << a << "/" << b << "=" << "	";
    }
    void zys1()
    {
        if (f == 0)
            cout << a1 << '/' << a << ' ' << '+' << ' ' << b1 << '/' << b << " = " << endl;
        if (f == 1)
            cout << a1 << '/' << a << ' ' << '-' << ' ' << b1 << '/' << b << " = " << endl;
        if (f == 2)
            cout << a1 << '/' << a << ' ' << '*' << ' ' << b1 << '/' << b << " = " << endl;
        if (f == 3)
            cout << a1 << '/' << a << ' ' << '/' << ' ' << b1 << '/' << b << " = " << endl;
    }
    void zys2()
    {
        if (f == 0)
            cout << a1 << '/' << a << ' ' << '+' << ' ' << b1 << '/' << b << " = " << "	";
        if (f == 1)
            cout << a1 << '/' << a << ' ' << '-' << ' ' << b1 << '/' << b << " = " << "	";
        if (f == 2)
            cout << a1 << '/' << a << ' ' << '*' << ' ' << b1 << '/' << b << " = " << "	";
        if (f == 3)
            cout << a1 << '/' << a << ' ' << '/' << ' ' << b1 << '/' << b << " = " << "	";
    }
    
    int main()
    {
        srand(time(NULL));//题目避免重复
        int e, num, min,max, out, d, fushu, kh, k,yushu;//有无真分数判断,题目数量,最小值,最大值,数值的范围,输出方式,是否有乘除运算,加减法是否有负数,有无括号
        cout << "********二柱子四则运算定制版********" << endl;
        cout << "请输入题目的数量num:" << endl;
        cin >> num;
        cout << "请选择数值范围最大值(大于0)" << endl;
        cin >> max;
        cout << "请选择打印方式out(0空行打印 ,1空格打印)" << endl;
        cin >> out;
        cout << "请选择有无乘除运算d(0没有乘除运算, 1有乘除运算)" << endl;
        cin >> d;
        cout << "请选择加减运算有无负数fushu(0没有负数 ,1有负数)" << endl;
        cin >> fushu;
        cout << "请选择有无括号(0没有括号 ,1有括号)" << endl;
        cin >> kh;
        cout <<"除法是否有余数(0没有余数,1有余数)" << endl;
        cin >> yushu;
    
        for (i = 1; i <= num; i++)
        {
            int e1;
            a = rand() % max+1;//控制两个数的范围
            b = rand() % max+1;
            a1 = rand() % max +2-1;//控制两个数的范围
            b1 = rand() % max +2-1;
            f = rand() % 4;//控制运算
            e = a % 2;
            e1 = b % 2;
            k = a1 % 10;//括号的对数
            if (kh == 1)
            {
                for (int j = 0; j < k; j++)
                {
                    int a2, b2;
                    a2 = rand() % max;//控制两个数的范围
                    b2 = rand() % max;
                    e = b2 % 4;
                    if (e == 1)
                    {
                        cout << '(' << a2 << '+' << b2 << ')' << '/';
                    }
                    if (e == 2)
                    {
                        cout << '(' << a2 << '-' << b2 << ')' << '*';
                    }
                    if (e == 3)
                    {
                        cout << '(' << a2 << '*' << b2 << ')' << '-';
                    }
                    if (e == 4)
                    {
                        cout << '(' << a2 << '+' << b2 << ')' << '+';
                    }
                }
                if (out == 0)
                {
                    cout << 1 << '=' << endl;
                }
                else
                    cout << 1 << '='<<" ";
                kh = kh - 1;
            }
            
            else
            {
                if (out == 0)//空行打印
                {
                    if (d == 0 && fushu == 0)//只有加减运算,无负数
                    {
                        if (f >= 2)
                        {
                            f = f - 2;
                            if (e == 1)
                            {
                                zys1();
                            }
                            else
                                ys1();
                        }
                        else
                        {
                            if (e == 1)
                            {
                                zys1();
                            }
                            else
                                ys1();
                        }
                    }
                    if (d == 0 && fushu == 1)//无乘除,有负数
                    {
                        if (f >= 2)
                        {
                            f = f - 2;
                            if (e == 1)
                            {
                                if (e1 == 1)
                                {
                                    a1 = -a1;
                                }
                                zys1();
                            }
                            else
                            {
                                if (e1 == 1)
                                {
                                    a = -a;
                                }
                                ys1();
                            }
                        }
                        else
                        {
                            if (e == 1)
                            {
                                if (e1 == 1)
                                {
                                    a1 = -a1;
                                }
                                zys1();
                            }
                            else
                            {
                                if (e1 == 1)
                                {
                                    a = -a;
                                }
                                ys1();
                            }
    
                        }
                    }
                    if (d == 1 && fushu == 1)//有乘除运算,有负数
                    {
                        if (e == 1)
                        {
                            if (e1 == 1)
                            {
                                a1 = -a1;
                            }
                            zys1();
                        }
                        else
                        {
                            if (e1 == 1)
                            {
                                a = -a;
                            }
                            if (yushu==0&&f==3)
                            {
                                if (a%b == 0)
                                {
                                    ys1();
                                }
                                else //若不能整除 求最大公约数 给b赋值为最大公约数
                                {
                                    if (a > b)
                                        min = b;
                                    else
                                        min = a;
                                    while (true)
                                    {
                                        if (a%min == 0 && b%min == 0)
                                        {
                                            b = min;
                                            break;
                                        }
                                        min--;
                                    }
                                    ys1();
                                    
                                }
                            }
                            else
                                ys1();
                            
                        }
                    }
                    if (d == 1 && fushu == 0)//有乘除运算,无负数
                    {
                        if (e == 1)
                        {
                            zys1();
                        }
                        else
                        if (yushu == 0 && f == 3)
                        {
                            if (a%b == 0)//判断余数
                            {
                                ys1();
                            }
                            else
                            {
                                if (a > b)
                                    min = b;
                                else
                                    min = a;
                                while (true)
                                {
                                    if (a%min == 0 && b%min == 0)
                                    {
                                        b = min;
                                        break;
                                    }
                                    min--;
                                }
                                ys1();
                            }
                        }
                        else
                            ys1();
                    }
                }
                else if (out == 1)
                {
                    if (d == 0 && fushu == 0)
                    {
                        if (f >= 2)
                        {
                            f = f - 2;
                            if (e == 1)
                            {
                                zys2();
                            }
                            else
                                ys2();
                        }
                        else
                        {
                            if (e == 1)
                            {
                                zys2();
                            }
                            else
                                ys2();
                        }
                    }
                    if (d == 1 && fushu == 1)//有负数 有乘除
                    {
                        if (e == 1)
                        {
                            if (e1 == 1)
                            {
                                a1 = -a1;
                            }
                            zys2();
                        }
                        else
                        {
                            if (e1 == 1)
                            {
                                a = -a;
                            }
                            if (yushu == 0 && f == 3)
                            {
                                if (a%b == 0)//判断余数
                                {
                                    ys2();
                                }
                                else
                                {
                                    if (a > b)
                                        min = b;
                                    else
                                        min = a;
                                    while (true)
                                    {
                                        if (a%min == 0 && b%min == 0)
                                        {
                                            b = min;
                                            break;
                                        }
                                        min--;
                                    }
                                    ys2();
                                }
                            }
                            else
                                ys2();
                        }
                    }
                    if (d == 0 && fushu == 1)
                    {
    
                        if (f >= 2)
                        {
                            f = f - 2;
                            if (e == 1)
                            {
                                if (e1 == 1)
                                {
                                    a1 = -a1;
                                }
                                zys2();
                            }
                            else
                            {
                                if (e1 == 1)
                                {
                                    a = -a;
                                }
                                ys2();
                            }
                        }
                        else
                        {
                            if (e == 1)
                            {
                                zys2();
                            }
                            else
                                ys2();
                        }
                    }
                    if (d == 1 && fushu == 0)//有除法
                    {
                        if (e == 1)
                        {
                            zys2();
                        }
                        else
                        if (yushu == 0 && f == 3)
                        {
                            if (a%b == 0)//判断余数
                            {
                                ys2();
                            }
                            else
                            {
                                if (a > b)
                                    min = b;
                                else
                                    min = a;
                                while (true)
                                {
                                    if (a%min == 0 && b%min == 0)
                                    {
                                        b = min;
                                        break;
                                    }
                                    min--;
                                }
                                ys2();
                            }
                        }
                        else
                            ys2();
                    }
                }
            }
        }
    return 0; }

      

    测试用例以及结果:

    初步进行程序运行的判断,审查

    审查乘除法运算变化时,程序运行情况。

    审查题目数量,取值范围,打印方式,有无负数,括号同时改变时运行是否成功。

    审查题目数量,数值范围,有无负数,余数同时改变时运行是否成功

    审查题目数量,取值范围,有无负数变化时运行是否成功。

    审查题目数量,取值范围变化时程序是否运行成功。

    开发流程:

    日期和任务 听课 看书 网上查资料 编程 日总计
    周一 2   0 1 3
    周二         0
    周三   2   1 3
    周四 2   2   4
    周五   1 1 1 3
    周六     3 3 6
    周日          
    总计 4 3 6 6 19
    日期 开始时间 结束时间 中断时间 净时间 活动 备注
    3/7 14:00 16:00 10 110 听课 软件工程课
      16:30 17:30 0 60 编程 老师留的课下作业
    3/9 15:00 17:00 10 110 网上查资料,看书 阅读《构建之法》
      21:00 20:00 0 60 查资料 作业2
    3/10 14:00 15:50 10 100 听课 软件工程上课
      19:00 21:00 20 100 编程 研究作业
    3/11 8:30 9:30 0 60 看书 《构建之法》
      16:30 17:30 0 60 研究程序 整理一些思路
      19:30 20:30 0 60 上网查资料 研究程序
    3/12 7:30 11:30 30 210 整理程序 综合程序
      13:00 15:00 10 110 整理博客 读书感想
      16:00 17:00 30 90 发表博客

    完成任务

    缺陷记录日志:程序编写不足,还需要努力改进。

    所编程序的不足,没有实现好的:

    有括号时,只能输出一组具备括号的式子,缺乏对具备括号的式子的数量的判断和控制,并且输出的有括号式子模式比较发死,不灵活,仍需改进。

  • 相关阅读:
    Docker容器部署 Nginx服务
    trap 的用法 /etc/init.d/rcS trap :1 2 3 24
    android system setup and building (2)
    ubuntu 中建立tftp 服务器
    Mount nfs 报错Protocol not supported
    android system setup and building (1)
    mknod 详解
    linux 内核中已经定义的主设备号及查看设备设备号
    fstab 文件详解
    Linux根文件系统的挂载过程分析
  • 原文地址:https://www.cnblogs.com/lvstudy/p/5269439.html
Copyright © 2020-2023  润新知