• 课堂测试二:四则运算


    题目:随机打印30道小学二到四年级的四则运算提。

    要求:

     

     

     

     我的代码如下:

    #include<iostream>
    #include<stdlib.h>
    #include <conio.h>
    using namespace std;
    class Math
    {
        int mins,maxs,n,x,t;
        int a[10000],b[10000][10000],c[10000][10000];
        string s[10000];
    public:
        Math(int mins=0,int maxs=0,int n=0,int x=0,int t=0):mins(mins),maxs(maxs),n(n),x(x),t(t-1){}
        ~Math(){}
        int PC(int i)
        {
            int p=0,g=0,h=0;
            for(int y=0;y<i;y++)
            {if(a[i]==a[y]){p++;}}
            for(int y=0;y<i;y++)
            for(int k=0;k<t;k++)
            {
                if(b[i][k]==b[y][k]){g++;}
                if(c[i][k]==c[y][k]){h++;}
            }
            if(g==t&&h==t){p++;}
            return p;
        }
        void TM()
        {
            int q=0;
            while(q<n)//输出题目
            {
                a[q]=(rand()%(maxs-mins+1))+mins;
                for(int r=0;r<t;r++)
                {
                    b[q][r]=(rand()%(maxs-mins+1))+mins;
                    if(x==0){c[q][r]=rand()%2;}//乘除法判断
                    else{c[q][r]=rand()%4;}
                }
                if(PC(q)!=2){q++;}
            }
            for(int i=0;i<n;i++)
            for(int j=0;j<t;j++)
            {
                switch(c[i][j])
                {
                    case 0:
                    cout<<a[i]<<"+"<<b[i][j]<<"="<<endl;
                break;
                case 1:
                if(a[i]<b[i][j])//避免得数出现负数
                {
                    t=a[i];
                    b[i][j]=t;
                    a[i]=b[i][j];
                }
                cout<<a[i]<<"-"<<b[i][j]<<"="<<endl;
                break;
                case 2:
                cout<<a[i]<<"*"<<b[i][j]<<"="<<endl;
                break;
                case 3:
                if(b[i][j]==0)
                {
                    while(b[i][j]==0)
                    {b[i][j]=(rand()%(maxs-mins+1))+mins;}
                }//防止0为被除数
                cout<<a[i]<<"/"<<b[i][j]<<"="<<endl;
                break;
                }
            }
        }
    };
    main()
    {
        int mins,maxs,n,x,t;
        cout<<"请输入数的范围"<<endl;
        cin>>mins>>maxs;//数的范围
        cout<<"请输入题目总数:";
        cin>>n;//题目个数
        cout<<"是否有乘除法?是请输入1,否请输入0:";//是否有乘除法
        cin>>x;
        cout<<"输入操作数个数:";
        cin>>t;
        Math m(mins,maxs,n,x,t);
        m.TM();
    }

    此代码实现了:随即打印不重复题目、定制数量、定制是否有乘除法、定制操作数数量、定制数值范围。

    但因能力不足一时未实现有:定制是否有括号。且因JAVA甚不熟练,故此程序使用C++写成。

    时间甚晚,明日继续。

  • 相关阅读:
    启动 Eclipse 弹出“Failed to load the JNI shared library jvm.dll”错误的解决方法!
    Eclipse 出现Some sites could not be found. See the error log for more detail.错误 解决方法
    Android sdk manager不能更新下载缓慢的解决方法
    Android图像处理之Bitmap类
    FAQ_1_陌生的VERSION.SDK_INT
    Android5.0新特性——新增的Widget(Widget)
    Android5.0新特性——兼容性(support)
    springmvc通过ajax异步请求返回json格式数据
    redhat7学习笔记之从零到部署javaweb项目
    ssm框架实现图片上传显示并保存地址到数据库
  • 原文地址:https://www.cnblogs.com/hfy717/p/13752646.html
Copyright © 2020-2023  润新知