• 四则运算3


    设计思路:

    使用函数将四则运算封装成四类,分别是jiajian00(),jiajian01(),chengchu00(),chengchu01().

    在主函数中调用函数fushuyushu0()来实现加减法有无负数和除法有无余数的控制;

    在jiajian00(),jiajian01(),chengchu00(),chengchu01()函数中分别实现生成运算数,输出题目,计算结果并判断客户输入答案的正误。

    本程序实现了整数的加减乘除运算功能,并可控制有无负数,有无余数,运算数的取值范围,以及判断正误和统计正确题目数量的功能。

     实验代码:

    复制代码
    #include<iostream>
    #include<ctime> 
    #include<vector> 
    using namespace std;
    int zq=0;
    void chengchu00(int min, int max)//整数无余数
    {
        int c1, c2, k,z,x;
        c1 = rand() % (max - min) + min + 1;
        c2 = rand() % (max - min) + min + 1;
        k = rand() % 2;
        if (k == 0)//---------------------------------乘法部分
        {
            cout << c1 << "*" << c2 << "=" << endl;
            x = c1*c2;
            cout << "请输入你的答案:" << endl;
            cin >> z;
            if (z == x)
            {
                cout << "正确" << endl;
                ++zq;
            }
            else
                cout << "错误,正确答案是:" << x << endl;
        }
        else//------------------------------除法部分
        {
            for (;;)
            {
                c1 = rand() % (max - min) + min + 1;
                c2 = rand() % (max - min) + min + 1;
                int c3 = c1*c2;
                do
                {
                    c3 = c3 - c1;
    
                } while (c3 > max);
                if ((c3 < max) && (c1 != 0))
                {
                    cout << c3 << "/" << c1 << "=" << endl; 
                    x = c3/c1;
                    cout << "请输入你的答案:" << endl;
                    cin >> z;
                    if (z == x)
                    {
                        cout << "正确" << endl;
                        ++zq;
                    }
                    else
                        cout << "错误,正确答案是:" << x << endl; break;
                }
            }
        }
    }
    void chengchu01(int min, int max)//整数有余数
    {
        int c1, c2, k;
        float x,z;
        c1 = rand() % (max - min) + min + 1;
        c2 = rand() % (max - min) + min + 1;
        k = rand() % 2;
        if (k == 0)//---------------------------------乘法部分
        {
            cout << c1 << "*" << c2 << "=" << endl;
            x = c1*c2;
            cout << "请输入你的答案:" << endl;
            cin >> z;
            if (z == x)
            {
                cout << "正确" << endl;
                ++zq;
            }
            else
                cout << "错误,正确答案是:" << x << endl;
        }
        else//------------------------------除法部分
        {
            for (;;)
            {
                c1 = rand() % (max - min) + min + 1;
                if (c1 == 0)
                {
                    c2 = rand() % (max - min) + min + 1;
                    if (c2 != 0)
                    {
                        cout << c1 << "/" << c2 << "=" << endl;
                        x =(float) c1 / c2;
                        cout << "请输入你的答案:" << endl;
                        cin >> z;
                        if (z == x)
                        {
                            cout << "正确" << endl;
                            ++zq;
                        }
                        else
                            cout << "错误,正确答案是:" << "(" <<c1<<"/"<<c2<<")"<<endl; break;
                    }
                }
                else
                {
                    c2 = rand() % c1;
                    if (c2 != 0)
                    {
                        cout << c1 << "/" << c2 << "=" << endl; 
                        x = c1 / c2;
                        int y = c1%c2;
                        cout << "请输入你的答案:" << endl;
                        int m;
                        cin >> z>>m;
                        if ((z == x)&&(y==m))
                        {
                            cout << "正确" << endl;
                            ++zq;
                        }
                        else
                            cout << "错误,正确答案是:" << "(" << c1 << "/" << c2 << ")" << endl; break;
                    }
                }
            }
        }
    }
    void jiajian00(int min, int max)//整数无负数
    {
        int c1, c2, k,x,z;
        c1 = rand() % (max - min) + min + 1;
        c2 = rand() % (max - min) + min + 1;
        k = rand() % 2;
        if (k == 0)//---------------------------------加法部分
        {
            cout << c1 << "+" << c2 << "=" << endl;
            x = c1 + c2;
            cout << "请输入你的答案:" << endl;
            cin >> z;
            if (z == x)
            {
                cout << "正确" << endl;
                ++zq;
            }
            else
                cout << "错误,正确答案是:" << x << endl;
    
        }
        else//------------------------------减法部分
        {
            if (c1>c2)
            {
                cout << c1 << "-" << c2 << "=" << endl;
                x = c1 - c2;
                cout << "请输入你的答案:" << endl;
                cin >> z;
                if (z == x)
                {
                    cout << "正确" << endl;
                    ++zq;
                }
                else
                    cout << "错误,正确答案是:" << x << endl;
            }
            else
            {
                cout << c2 << "-" << c1 << "=" << endl;
                x = c2 - c1;
                cout << "请输入你的答案:" << endl;
                cin >> z;
                if (z == x)
                {
                    cout << "正确" << endl;
                    ++zq;
                }
                else
                    cout << "错误,正确答案是:" << x << endl;
            }
                
        }
    }
    void jiajian01(int min, int max)//整数有负数
    {
        int c1, c2, k,x,z;
        c1 = rand() % (max - min) + min + 1;
        c2 = rand() % (max - min) + min + 1;
        k = rand() % 2;
        if (k == 0)//---------------------------------加法部分
        {
            cout << c1 << "+" << c2 << "=" << endl;
            x = c1+ c2;
            cout << "请输入你的答案:" << endl;
            cin >> z;
            if (z == x)
            {
                cout << "正确" << endl;
                ++zq;
            }
            else
                cout << "错误,正确答案是:" << x << endl;
        }
        else//------------------------------减法部分
        {
            cout << c1 << "-" << c2 << "=" << endl;
            x = c1 - c2;
            cout << "请输入你的答案:" << endl;
            cin >> z;
            if (z == x)
            {
                cout << "正确" << endl;
                ++zq;
            }
                
            else
                cout << "错误,正确答案是:" << x << endl;
        }
    }
    void fushuyushu0(int a,int b, int min, int max)//整数运算
    {
    
        if ((a == 1) && (b == 1))
        {
            int k = rand() % 2;
            if (k == 0)
            {
                chengchu01(min, max);
            }
            else
                jiajian01(min, max);
        }
        if ((a == 0) && (b == 0))
        {
            int k = rand() % 2;
            if (k == 0)
            {
                chengchu00(min, max);
            }
            else
                jiajian00(min, max);
        }
        if ((a == 0) && (b == 1))
        {
            int k = rand() % 2;
            if (k == 0)
            {
                chengchu01(min, max);
            }
            else
                jiajian00(min, max);
        }
        if ((a == 1) && (b == 0))
        {
            int k = rand() % 2;
            if (k == 0)
            {
                chengchu00(min, max);
            }
            else
                jiajian01(min, max);
        }
    
    }
    
    void chengchu10(int min, int max)//真分数无余数
    {
        int c1, c2, c3, c4, k;
        c1 = rand() % (max - min) + min + 1;
        c2 = rand() % (max - min) + min + 1;
        c3 = rand() % (max - min) + min + 1;
        c4 = rand() % (max - min) + min + 1;
        k = rand() % 2;
        if (k == 0)//---------------------------------乘法部分
            cout << "cuowu";
        else//------------------------------除法部分
        {
            cout << "cuowu";
            
        }
    }
    void jiajian10(int min, int max)//真分数无负数
    {
        int c1, c2, k;
        c1 = rand() % (max - min) + min + 1;
        c2 = rand() % (max - min) + min + 1;
        k = rand() % 2;
        if (k == 0)//---------------------------------加法部分
        {
            cout << c1 << "+" << c2 << "=" << endl;
        }
        else//------------------------------减法部分
        {
            if (c1>c2)
            {
                cout << c1 << "-" << c2 << "=" << endl;
            }
            else
                cout << c2 << "-" << c1 << "=" << endl;
    
    
        }
    }
    void jiajian11(int min, int max)//真分数有负数
    {
        int c1, c2, k;
        c1 = rand() % (max - min) + min + 1;
        c2 = rand() % (max - min) + min + 1;
        k = rand() % 2;
        if (k == 0)//---------------------------------加法部分
        {
            cout << c1 << "+" << c2 << "=" << endl;
        }
        else//------------------------------减法部分
        {
            cout << c1 << "-" << c2 << "=" << endl;
        }
    }
    void fushuyushu1(int a, int b, int min, int max)//真分数运算
    {
    
        if (a == 1)
        {
            int k = rand() % 2;
            if (k == 0)
                chengchu10(min, max);
            else
                jiajian11(min, max);
        }
        if (a == 0)
        {
            int k = rand() % 2;
            if (k == 0)
                chengchu10(min, max);
            else
                jiajian10(min, max);
        }
    }
    int main()
    {
        int a, b, c, min, max,N;
        cout << "请输入出题数目:" << endl;
        cin >> N;
        cout << "减法是否有负数:(0否;1是)" << endl;
        cin >> a;
        cout << "除法是否有余数:(0否;1是)" << endl;
        cin >> b;
        cout << "请分别输入下限和上限" << endl;
        cin >> min >> max;
        for (int i = 0; i < N; i++)
        {
            fushuyushu0(a, b, min, max);
        }
        cout << "共答对" << zq << "道题" << endl;
        /*cout << "整数运算输入0,真分数运算输入1" << endl;
        cin >> c;
        if (c == 0)
        {
            cout << "减法是否有负数:(0否;1是)" << endl;
            cin >> a;
            cout << "除法是否有余数:(0否;1是)" << endl;
            cin >> b;
            cout << "请分别输入下限和上限" << endl;
            cin >> min >> max;
            for (int i = 0; i < 100; i++)
            {
                fushuyushu0(a, b, min, max);
            }
        }
            
          else
        {
            for (int i = 0; i < 100; i++)
            {
                cout << "减法是否有负数:(0否;1是)" << endl;
                cin >> a;
                fushuyushu1(a,b,min, max);
            }
    
        }*/
        return 0;
    }
    复制代码

     实验截图:

    分为三种情况,程序正常。

    减法无负数,除法有余数:

    减法无负数,除法无余数:

    减法有负数,除法无余数:

    实验总结:

    通过本次实验的结对开发,在实践中检验了”做中学“,结对开发,表达自己,互相交流。结对开发给我很大的思考空间,给予很大的鼓励,发挥了古语中所谓“三个臭皮匠”作用,相互讨论,相互批评改正,相互交换思路,写出较为合理的程序。我觉得很有意义。

    组员:

    张家军

    徐少凯      博客地址: http://www.cnblogs.com/3712k/

  • 相关阅读:
    Swing 添加Esc快捷键退出程序
    DefaultTableCellRenderer 自定义
    项目清理和删除svn信息(转)
    时间转换工具类
    Java Swing 日期控件(转载)
    Eureka原理
    SpringCloud之Eureka注册中心集群篇
    spring boot及spring cloud介绍
    spring cloud 服务注册/发现/提供/调用 demo
    eclipse构建maven+scala+spark工程
  • 原文地址:https://www.cnblogs.com/zjj123456/p/5296668.html
Copyright © 2020-2023  润新知