/*
信息:20133075 张勋 《随机生成30道四则运算题目》
要求:除整数外,还要支持真分数的四则运算
设计思路:
1.通过radom函数生成自然数,给变量赋值
2.另一个变量是真分数,分子比分母小
3.随机生成四则运算符
4.注意除数为0情况
注意:
这是两个函数!一个是srand函数!这是在调用rand()这个函数之前使用的!
rand()是一个产生随机数的函数!而srand是一个设置随机数种子的函数!通常这两
个函数是一起使用的!来完成产生随机数的功能!而time(NULL)这个函数的返回值是作
为srand函数的参数的!意思是以现在的系统时间作为随机数的种子来产生随机数!至
于NULL这个参数。只有设置成NULL才能获得系统的时间!
*/
1 #include<iostream> 2 #include<time.h> 3 #include<string> 4 using namespace std; 5 6 int main() 7 { 8 //以现在的系统时间作为随机数的种子来产生随机数 9 srand(time(NULL)); 10 char X; 11 12 cout << "请您选择四则运算题的难度:(1或2)\n" ; 13 cout << "1.简单(纯整数的运算)\n"<<"2.困难(包含真分数的四则运算)\n"; 14 cin >> X; 15 16 //1.简单(纯整数的运算) 17 if (X == '1') 18 { 19 20 for (int count = 0; count < 30;count++) 21 { 22 int a = 0, b = 0; 23 24 a = rand() % 100; 25 b = rand() % 100; 26 27 //随机产生四则运算符 28 int sign = 0; 29 sign = (rand() % 100) % 4; 30 string opera_sign[4] = { "+", "-", "*", "/" }; 31 32 //当b=0且运算为除法时重新生成 33 while (b == 0 & sign == 3) 34 { 35 b = rand() % 100; 36 } 37 38 switch (sign) 39 { 40 case 0:cout << a << opera_sign[sign] << b << "=" << endl; break; 41 case 1:cout << a << opera_sign[sign] << b << "=" << endl; break; 42 case 2:cout << a << opera_sign[sign] << b << "=" << endl; break; 43 case 3:cout << a << opera_sign[sign] << b << "=" << endl; break; 44 } 45 } 46 } 47 48 49 //2.困难(包含真分数的四则运算) 50 if (X == '2') 51 { 52 for (int count = 0; count < 30; count++) 53 { 54 int a1 = 0, b1 = 0, a2 = 0, b2 = 0; 55 56 a1 = rand() % 100; 57 b1 = rand() % 100; 58 a2 = rand() % 100; 59 b2 = rand() % 100; 60 61 //判断是否为真分数 62 while (a1>b1||b1==0) 63 { 64 a1 = rand() % 100; 65 b1 = rand() % 100; 66 } 67 68 while (a2>b2||b2==0) 69 { 70 a2 = rand() % 100; 71 b2 = rand() % 100; 72 } 73 74 //随机产生四则运算符 75 int sign = 0; 76 sign = (rand() % 100) % 4; 77 string opera_sign[4] = { "+", "-", "*", "/" }; 78 79 switch (sign) 80 { 81 case 0:cout << "(" << a1 << "/" << b1 << ")" << opera_sign[sign] << "(" << a2 << "/" << b2 << ")" << "=" << endl; break; 82 case 1:cout << "(" << a1 << "/" << b1 << ")" << opera_sign[sign] << "(" << a2 << "/" << b2 << ")" << "=" << endl; break; 83 case 2:cout << "(" << a1 << "/" << b1 << ")" << opera_sign[sign] << "(" << a2 << "/" << b2 << ")" << "=" << endl; break; 84 case 3:cout << "(" << a1 << "/" << b1 << ")" << opera_sign[sign] << "(" << a2 << "/" << b2 << ")" << "=" << endl; break; 85 } 86 } 87 } 88 89 }
运行程序后,会产生如下提示:
选择简单,可产生:
选择困难级别,可产生真分数运算:
本道题,需要注意的是:对 srand(time(NULL))函数的使用,可以保证每次运行时,系统产生的结果不一样!
这是两个函数!一个是srand函数!这是在调用rand()这个函数之前使用的!
rand()是一个产生随机数的函数!而srand是一个设置随机数种子的函数!通常这两
个函数是一起使用的!来完成产生随机数的功能!而time(NULL)这个函数的返回值是作
为srand函数的参数的!意思是以现在的系统时间作为随机数的种子来产生随机数!至
于NULL这个参数。只有设置成NULL才能获得系统的时间!
*/