zoukankan      html  css  js  c++  java
  • 用程序实现用户要求的若干道2年级四则运算题升级版

    一、题目

    用程序实现用户要求的若干道2年级四则运算题,允许用户答题并判断对错。

    二、设计思想

    建立两个数组,一个存正确运算结果,一个存用户输入的结果,比较后得出是否正确。

    三、源代码

    #include<iostream.h>
    #include<time.h>
    #include<stdlib.h>
    #include<math.h>
    int main()
    {
        int num1,num2,num0,c;
        int limit[8];
        double num3,num4;
        srand((int)time(0));         //  不同的时间,产生不同的随机数,但不保证缩小范围后是不是一样的数,是缺陷
        cout<<"输入题目的数量:";
        cin>>num0;
        cout<<endl;
        double sum[num0];
        double result[num0];
        cout<<"输入打印中每行的间隔:";
        cin>>limit[0];
        cout<<endl;
        cout<<"输入打印中每行的题目数:";
        cin>>limit[1];                                //每次都输入太麻烦了,这个设置一般是一样的,可否改为设置一次即可
        cout<<endl;
        cout<<"输入操作数的数值范围的最小值和最大值:";
        cin>>limit[2]>>limit[3];
        cout<<endl;
        cout<<"是否有乘除法,有输入1,没有输入0:";
        cin>>limit[4];
        cout<<endl;
        cout<<"加减有无负数,有输入1,没有输入0:";
        cin>>limit[5];
        cout<<endl;
        if(limit[4]==1)
        {
            cout<<"除法有无余数,有输入1,没有输入0:";
            cin>>limit[6];
            cout<<endl;
        }
        if(limit[4]==0)
        {
            cout<<"是否支持小数,有输入1,没有输入0:";
            cin>>limit[7];
            cout<<endl;
            if(limit[7]==1)
            {
                cout<<"若支持小数,精确到多少位:";
                cin>>limit[8];
                cout<<endl;
            }
        }
        for(int i=0;i<num0;i++)              //输出题目的循环
        {
            num1=limit[2]+(int)(limit[3]*rand()/(RAND_MAX+1.0));
            num2=limit[2]+(int)(limit[3]*rand()/(RAND_MAX+1.0));
            c=1+(int)(4*rand()/(RAND_MAX+1.0));
            if(limit[4]==1)
            {
                if(c%4==0)
                {
                    if(limit[6]==0)
                    {
                        if(num1%num2==0)
                        {
                            sum[i]=num1/num2;
                            cout<<""<<i+1<<"道:"<<num1<<"/"<<num2<<"="<<"    ";
                        }
                        else
                        {
                            while(num1%num2!=0)
                            {
                                num2=num2-num1%num2;
                            }
                            sum[i]=num1/num2;
                            cout<<""<<i+1<<"道:"<<num1<<"/"<<num2<<"="<<"    ";
    
                        }
                    }
                }                                    //输出有无余数的除法
                if(c%4==1)
                {
                    sum[i]=num1+num2;
                    cout<<""<<i+1<<"道:"<<num1<<"+"<<num2<<"="<<"    ";
                }
                if(c%4==2)
                {
                    sum[i]=num1-num2;
                    cout<<""<<i+1<<"道:"<<num1<<"-"<<num2<<"="<<"    ";
                }
                if(c%4==3)
                {
                    sum[i]=num1*num2;
                    cout<<""<<i+1<<"道:"<<num1<<"*"<<num2<<"="<<"    ";
                }
            }                                   //输出有乘除法的题目
            else
            {
                if(limit[7]==1)
                {
                    num3=pow(0.1,limit[8])+(int)(1*rand()/(RAND_MAX+1.0))+num1;
                    num4=pow(0.1,limit[8])+(int)(1*rand()/(RAND_MAX+1.0))+num2;
                }
                if(limit[5]==1)
                {
                    if(c%2==0)
                    {
                        sum[i]=pow(-1,i)*num3-pow(-1,i+1)*num4;
                        cout<<""<<i+1<<"道:"<<pow(-1,i)*num3<<"-"<<pow(-1,i+1)*num4<<"="<<"    ";
                    }
                    if(c%2==1)
                    {
                        sum[i]=pow(-1,i)*num3+pow(-1,i+1)*num4;
                        cout<<""<<i+1<<"道:"<<pow(-1,i)*num3<<"+"<<pow(-1,i+1)*num4<<"="<<"    ";
                    }
                }           //输出有小数的题目
                else
                {
                    if(c%2==0)
                    {
                        sum[i]=num3-num4;
                        cout<<""<<i+1<<"道:"<<num3<<"-"<<num4<<"="<<"    ";
                    }
                    if(c%2==0)
                    {
                        sum[i]=num3+num4;
                        cout<<""<<i+1<<"道:"<<num3<<"+"<<num4<<"="<<"    ";
                    }
                }                                //输出有无负数的加减
            }
            if((i%limit[1])+1==limit[1])     //每行打印的题目数
            for(int k=0;k<=limit[0];k++)
                cout<<endl;                //每行打印的间隔
        }
        for(int j=0;j<num0;j++)
        {
            cout<<"输入第"<<j+1<<"道题的答案:";
            cin>>result[j];
            if(result[j]==sum[j])
            {
                cout<<"正确"<<endl;
            }
            else
            {
                while(result[j]!=sum[j])
                {
                    cout<<"错误,请重试"<<endl;
                    cout<<"输入第"<<j+1<<"道题的答案:";
                    cin>>result[j];
                    if(result[j]==sum[j])
                    {
                        cout<<"正确"<<endl;
                    }
                }
            }
        }
        return 0;
    }

    四、结果截图

    五、实验总结

    创建sum和数组是int型后发现小数相加是double型的,而double转换成int会丢失精度,所以把sum数组变成了double型。

    以后要注意变量类型的要求。

  • 相关阅读:
    <转> Lua使用心得(2)
    (转) Lua使用心得一 LUA和VC整合
    Highcharts 的实际实践一
    Springmvc4 com/fasterxml/jackson/core/JsonProcessingException
    如何在其他电脑上运行VS2005编译的DEBUG版应用程序
    [转]深入分析 Java 中的中文编码问题
    自动白平衡技术(WhiteBalance)(转自Harri的blog)
    沉思录(1)——EricKing工作的一个月
    图像处理一(BMP的格式说明)
    ios检查版本更新
  • 原文地址:https://www.cnblogs.com/weaponx/p/4357044.html
Copyright © 2011-2022 走看看