设计思路

1,题目避免重复:

采用srand(time(NULL))实现

2,可定制:

a)定制数量:定义变量n,用户可以自己设置

b)打印方式:可以自己选择每行可以打印几个

3,可控制参数:

a)是否支持乘除:编写了两个函数,一个有乘除,一个没有乘除,在主函数里设置判断语句用户自己选择,然后调用相应的函数。

b)加减有无负数:设置判断语句,有负数为0,无负数为1.

c)除法有无余数:在有乘除的函数里设置条件语句,0为有余数,1为无余数,如果用户选择与随机产生的不一致,则再随机取一个被除数。

d)打印中每行的间隔:只要再换行时用一个循环语句,循环输出endl即可。

缺陷:由于编程能力不足,未能实现是否有括号和最多支持十个参数参与运算。

  1 #include<iostream>
  2 #include<stdlib.h>
  3 using namespace std;
  4 #include<time.h>
  5 
  6 char get_oper(int n)
  7 {
  8     switch (n)
  9 
 10     {
 11 
 12     case 0:return '+';
 13 
 14     case 1:return '-';
 15 
 16     case 2:return '*';
 17 
 18     case 3:return '/';
 19 
 20     }
 21 
 22 }
 23 
 24 
 25 
 26 int main()
 27 
 28 {
 29 
 30     srand(time(NULL));
 31 
 32     int num1 = 0;
 33 
 34     int num2 = 0;
 35 
 36     int operators = 0;
 37 
 38     int cpl;          //定义每行输出题目个数
 39 
 40     int range;           //定义数值范围
 41 
 42     int answer;        //定义计算结果
 43 
 44     int num;        //定义题目个数
 45 
 46     int JG;                //定义每行间隔
 47 
 48     char m;              //是否有乘除法
 49 
 50     char n;               //加减有无负数
 51 
 52     cout << "请输入输出题目个数:";
 53 
 54     cin >> num;
 55 
 56     cout << "请输入数值范围:";
 57 
 58     cin >> range;
 59 
 60     cout << "请输入每行题目个数:";
 61 
 62     cin >> cpl;
 63 
 64     cout << "请输入每行间隔:";
 65 
 66     cin >> JG;
 67 
 68     cout << "是否有乘除法(Y/N)?";
 69 
 70     cin >> m;
 71 
 72     cout << "是否有负数(Y/N)?";
 73 
 74     cin >> n;
 75 
 76     for (int i = 1; i <= num; i++)
 77 
 78     {
 79 
 80         //随机产生运算的数和运算符。
 81 
 82         num1 = rand() % range;
 83 
 84         num2 = rand() % range;
 85 
 86         if (m == 'Y')
 87 
 88         {
 89 
 90             operators = rand() % 4;
 91 
 92             switch (operators)
 93 
 94             {
 95 
 96             case 0:answer = num1 + num2; break;
 97 
 98             case 1:answer = num1 - num2; break;
 99 
100             case 2:answer = num1*num2; break;
101 
102             case 3:answer = num1 / num2;
103 
104             }
105 
106         }
107 
108         else if (m == 'N')
109 
110         {
111 
112             operators = rand() % 2;
113 
114             switch (operators)
115 
116             {
117 
118             case 0:answer = num1 + num2; break;
119 
120             case 1:answer = num1 - num2; break;
121 
122             }
123 
124         }
125 
126         if (answer<range)
127 
128         {
129 
130             if (n == 'Y')
131 
132             {
133 
134                 cout << num1 << get_oper(operators) << num2 << "=";
135 
136                 for (int j = 0; j <= JG; j++)
137 
138                     cout << " ";
139 
140                 cout << "\t";
141 
142                 if (i%cpl == 0)
143 
144                 {
145 
146                     cout << endl;
147 
148                 }
149 
150             }
151 
152             else if (n == 'N')
153 
154             {
155 
156                 i--;
157 
158             }
159 
160         }
161 
162         else
163 
164         {
165 
166             i--;
167 
168         }
169 
170     }
171 
172     return 0;
173 
174 }

 

posted on 2016-03-12 17:03  Sirinotsilly  阅读(170)  评论(1编辑  收藏  举报