zoukankan      html  css  js  c++  java
  • 课堂测试二:四则运算

    题目:随机打印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++写成。

    时间甚晚,明日继续。

  • 相关阅读:
    关于cnblogs 的KJC模板个性化定制
    2004手机游戏年终点评
    原创作品:手机泡泡堂 1.0 下载
    KillZone2杀戮地带2 超清晰展示
    常用编码工具类,支持base64,md5,des,crc32
    缩小数据库日志的工具源码
    制作了一个WMI 查询分析工具
    常用排序工具类:标准【正序、倒序】排序算法‘冒泡排序,选择排序,快速排序’
    用C#设计一个驱动备份的程序代码
    今天家里停电……
  • 原文地址:https://www.cnblogs.com/hfy717/p/13752646.html
Copyright © 2011-2022 走看看