随机产生四则运算题

/*
信息:20133075   张勋  《随机生成30道四则运算题目》

要求:除整数外,还要支持真分数的四则运算

设计思路:
  1.通过radom函数生成自然数,给变量赋值
  2.另一个变量是真分数,分子比分母小
  3.随机生成四则运算符
  4.注意除数为0情况
注意:
   这是两个函数!一个是srand函数!这是在调用rand()这个函数之前使用的!
rand()是一个产生随机数的函数!而srand是一个设置随机数种子的函数!通常这两
个函数是一起使用的!来完成产生随机数的功能!而time(NULL)这个函数的返回值是作
为srand函数的参数的!意思是以现在的系统时间作为随机数的种子来产生随机数!至
于NULL这个参数。只有设置成NULL才能获得系统的时间!
*/

#include<iostream>
#include<time.h>
#include<string>
using namespace std;

int main()
{
    //以现在的系统时间作为随机数的种子来产生随机数
    srand(time(NULL));
    char X;
    
    cout << "请您选择四则运算题的难度:(1或2)\n" ;
    cout << "1.简单(纯整数的运算)\n"<<"2.困难(包含真分数的四则运算)\n";
    cin >> X;

    //1.简单(纯整数的运算)
    if (X == '1')
    {   
        
        for (int count = 0; count < 30;count++)
        {
            int a = 0, b = 0;

            a = rand() % 100;
            b = rand() % 100;

            //随机产生四则运算符
            int sign = 0;
            sign = (rand() % 100) % 4;
            string opera_sign[4] = { "+", "-", "*", "/" };

            //当b=0且运算为除法时重新生成
            while (b == 0 & sign == 3)
            {
                b = rand() % 100;
            }

            switch (sign)
            {
            case 0:cout << a << opera_sign[sign] << b << "=" << endl; break;
            case 1:cout << a << opera_sign[sign] << b << "=" << endl; break;
            case 2:cout << a << opera_sign[sign] << b << "=" << endl; break;
            case 3:cout << a << opera_sign[sign] << b << "=" << endl; break;
            }
        }
    }
            

        //2.困难(包含真分数的四则运算)
    if (X == '2')
    {
        for (int count = 0; count < 30; count++)
            {
                int a1 = 0, b1 = 0, a2 = 0, b2 = 0;

                a1 = rand() % 100;
                b1 = rand() % 100;
                a2 = rand() % 100;
                b2 = rand() % 100;

                //判断是否为真分数
                while (a1>b1||b1==0)
                {
                    a1 = rand() % 100;
                    b1 = rand() % 100;
                }

                while (a2>b2||b2==0)
                {
                    a2 = rand() % 100;
                    b2 = rand() % 100;
                }

                //随机产生四则运算符
                int sign = 0;
                sign = (rand() % 100) % 4;
                string opera_sign[4] = { "+", "-", "*", "/" };

                switch (sign)
                {
                case 0:cout << "(" << a1 << "/" << b1 << ")" << opera_sign[sign] << "(" << a2 << "/" << b2 << ")" << "=" << endl; break;
                case 1:cout << "(" << a1 << "/" << b1 << ")" << opera_sign[sign] << "(" << a2 << "/" << b2 << ")" << "=" << endl; break;
                case 2:cout << "(" << a1 << "/" << b1 << ")" << opera_sign[sign] << "(" << a2 << "/" << b2 << ")" << "=" << endl; break;
                case 3:cout << "(" << a1 << "/" << b1 << ")" << opera_sign[sign] << "(" << a2 << "/" << b2 << ")" << "=" << endl; break;
                }
        }
    }
                
}

运行程序后,会产生如下提示:

选择简单,可产生:

 

选择困难级别,可产生真分数运算:

 

本道题,需要注意的是:对 srand(time(NULL))函数的使用,可以保证每次运行时,系统产生的结果不一样!

 这是两个函数!一个是srand函数!这是在调用rand()这个函数之前使用的!
rand()是一个产生随机数的函数!而srand是一个设置随机数种子的函数!通常这两
个函数是一起使用的!来完成产生随机数的功能!而time(NULL)这个函数的返回值是作
为srand函数的参数的!意思是以现在的系统时间作为随机数的种子来产生随机数!至
于NULL这个参数。只有设置成NULL才能获得系统的时间!
*/

你可能感兴趣的:(随机产生四则运算题)