四则运算题1

/*
信息: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才能获得系统的时间!
*/

posted @ 2016-03-06 19:16  勋爵|X-knight  阅读(334)  评论(4)    收藏  举报