四则运算题生成程序

  1 /**
  2 *程序功能:没有实现中文或英文或日文的选择。
  3 *            倒计时功能(这个功能我百度了一下  需要windows编程 和 多线程技术支持*实力不够 做不出来  我把它改成了一个记录答题时间)
  4 *程序功能:实现了 判断对错 累计分数 记录答题时间(秒为单位)
  5 *         支持多个运算符 支持括号
  6 *         具体生成算数 是采用的switch分支结构
  7 *
  8 */
  9 #include<windows.h>
 10 #include <algorithm> 
 11 #include<iostream>
 12 #include<cstdlib>
 13 #include<ctime>
 14 using namespace std;
 15 float Practice();
 16 float Addtion();
 17 float Subtract();
 18 float Multiply();
 19 float Modulo();
 20 void menu();
 21 int main()
 22 {
 23     int count = 0;
 24     int right = 0;
 25     int wrong = 0;
 26     cout.setf(ios::fixed);
 27     cout.precision(2);
 28     srand((unsigned)time(NULL));
 29     float answer,write=0.00;
 30     int check = 1;
 31  
 32     while (check)
 33     {    
 34         //    声明DWORD变量 记录时间
 35         DWORD dwStart;
 36         DWORD dwEnd;
 37         DWORD useTime;
 38         int choice;
 39         menu();
 40         cin >> choice;
 41         switch (choice)
 42         {
 43         case 1:
 44             answer = Addtion();
 45             break;
 46         case 2:
 47             answer = Subtract();
 48             break;
 49         case 3:
 50             answer = Multiply();
 51             break;
 52         case 4:
 53             answer = Modulo();
 54             break;
 55         case 5:        
 56             answer = Practice();
 57             break;
 58         default:
 59             break;
 60         }
 61         //    使用GetTickCount()来获取时间
 62         dwStart = GetTickCount();
 63         cin >> write;
 64         dwEnd = GetTickCount();        
 65         useTime = dwEnd - dwStart;
 66         cout << "答题时间为:"<< useTime/1000 <<"s"<< endl;
 67         if (write == answer)
 68             {
 69                 right++;
 70                 cout << "回答正确。" <<endl
 71                     <<"回答问题总分为 "<<++count<<" 回答正确分数为 "<<
 72                     right<<" 错误分数为 "<<wrong<< endl;                                
 73             }
 74         else
 75             {
 76             wrong++;
 77                 cout << "回答错误。" << endl
 78                     << "回答问题总分为 " << ++count << " 回答正确分数为 " <<
 79                     right << " 错误分数为 " << wrong << endl;
 80                 cout << "正确答案为:"<<answer<<endl;
 81             }    
 82             
 83         cout << "继续做题请按1, 退出请按0"<<endl;
 84         cin >> check;
 85     }
 86     system("pause");
 87     return 0;
 88 }
 89 float Practice()
 90 {
 91     int range;
 92     cout << "请输入多少数以内的四则运算:";
 93     cin >> range;
 94     cout << endl;
 95     int a[4] = { 0 };
 96     srand((unsigned)time(NULL));//    根据系统时间生成随机数
 97     for (int i = 0; i < 4; i++)
 98         a[i] = (rand() % range) + 1;
 99     sort(a,a+4);    //    将数组进行升序排列
100     cout << "请输入答案。(小数精确到后2位!)" << endl;
101     switch ((rand() % 16) + 1)
102     {
103     case 1:
104         cout << a[0]<< "*"<< a[1] <<"=" ;
105         return a[0] * a[1];
106     case 2:
107         cout << a[0] << "+" << a[1] << "=";
108         return a[0] + a[1];
109     case 3:
110         cout << a[0] << "-" << a[1] << "=";
111         return a[0] - a[1];
112     case 4:
113         cout << a[0] << "/" << a[1] << "=";
114         return (a[0] / (a[1]*1.0));
115     case 5:
116         cout << "(" << a[0] << "/" << a[1] << "+" << a[2] << ")" << "*" << a[3] << "=";
117         return (a[0] / (a[1] * 1.0) + a[2]) * a[3];
118     case 6:
119         cout << "(" << a[0] << "-" << a[1] << "+" << a[2] << ")" << "/" << a[3] << "=";
120         return (a[0] - a[1] + a[2]) /a[3];
121     case 7:
122         cout << a[0] << "/" << a[1] << "+" << a[2] << "*" << a[3] << "=";
123         return a[0] / (a[1] * 1.0) + a[2] * a[3];
124     case 8:
125         cout << a[0] << "+" << a[1] << "+" << a[2] << "*" << a[3] << "=";
126         return a[0] + a[1] + a[2] * a[3];
127     case 9:
128         cout << a[2] << "-" << a[1] << "+" << a[2] << "*" << a[3] << "=";
129         return a[2] - a[1] + a[2] * a[3];
130     case 10:
131         cout << a[0] << "+" << a[1] << "-" << a[2] << "=";
132         return a[0] + a[1] - a[2];
133     case 11:
134         cout << a[0] << "*" << a[1] << "-" << a[2] << "=";
135         return a[0] * a[1] - a[2];
136     case 12:
137         cout << a[0] << "*" << a[1] << "/" << a[2] << "=";
138         return a[0] * a[1] / (a[2]*1.0);
139     case 13:
140         cout << a[0] << "*" << a[1] << "*" << a[2] << "=";
141         return a[0] * a[1] * a[2];
142     case 14:
143         cout << "(" << a[0] << "-" << a[1] << ")" << "*" << " (" << a[2] << "/" << a[3] << ")" << "=";
144         return (a[0] - a[1]) * (a[2] / (a[3]*1.0));
145     case 15:
146         cout << a[0] << " /" << a[1] << "+" << a[2] << "/" << a[3] << "=";
147         return a[0] / (a[1]*1.0) + a[2] / (a[3]*1.0);
148     case 16:
149         cout << "(" << a[0] << " /" << a[1] << "+" << a[2] << ")" << "/" << a[3] << "=";
150         return (a[0] / (a[1] * 1.0) + a[2]) / (a[3] * 1.0);
151     default:
152         cout << a[0] << "+" << a[1] << "=";
153         return a[0] + a[1];
154  
155     }
156 }
157 float Addtion()
158 {
159     int range;
160     cout << "请输入多少数以内的四则运算:";
161     cin >> range;
162     cout << endl;
163     int a[4] = { 0 };
164     srand((unsigned)time(NULL));//    根据系统时间生成随机数
165     for (int i = 0; i < 4; i++)
166         a[i] = (rand() % range) + 1;
167     sort(a, a + 4);    //    将数组进行升序排列
168     cout << "请输入答案。(小数精确到后2位!)" << endl;
169     switch ((rand() % 9) + 1)
170     {
171     case 1:
172         cout << a[0] << "+" << a[1] << "=";
173         return a[0] + a[1];
174     case 2:
175         cout << a[3] << "+" << a[1] <<"+"<<a[2]<< "=";
176         return a[3] + a[1]+a[2];
177     case 3:
178         cout << a[3] << "+" << a[1] << "=";
179         return a[3] + a[1];
180     case 4:
181         cout << a[4] << "+" << a[1] << "+"<<a[2]<<"+"<<a[3]<<"=";
182         return a[4]+a[3]+a[2]+a[1];
183     case 5:
184         cout << a[0] << "+" << a[1] << "+" << a[2] << "+" << a[3] << "=";
185         return a[0] + a[1] + a[2] + a[3];
186     case 6:
187         cout << a[3] << "+" << a[1] << "+" << a[2] << "+"<< a[2] << "=";
188         return a[3] + a[1] + a[2] + a[2];
189     case 7:
190         cout << a[0] << "+" << a[1] << "+" << a[3]<<"/"<<a[3] << "+" << a[3] << "=";
191         return a[0] + a[1] + a[3]/a[3] + a[3];
192     case 8:
193         cout << a[0] << "+" << a[1] << "+" << a[2] << "+" << a[3] << "=";
194         return a[0] + a[1] + a[2] + a[3];
195     case 9:
196         cout << a[2] << "+" << a[1]<<"/"<<a[3] << "+" << a[2] << "+" << a[3] << "=";
197         return a[2] + a[1]/a[3] + a[2] + a[3];
198     default:
199         cout << a[0]<<"/"<<a[3] << "+" << a[1] << "=";
200         return a[0]/a[3] + a[1];
201  
202     }
203 }
204 float Subtract()
205 {
206     int range;
207     cout << "请输入多少数以内的四则运算:";
208     cin >> range;
209     cout << endl;
210     int a[4] = { 0 };
211     srand((unsigned)time(NULL));//    根据系统时间生成随机数
212     for (int i = 0; i < 4; i++)
213         a[i] = (rand() % range) + 1;
214     sort(a, a + 4);    //    将数组进行升序排列
215     cout << "请输入答案。(小数精确到后2位!)" << endl;
216     switch ((rand() % 9) + 1)
217     {
218     case 1:
219         cout << a[0] << "-" << a[1] << "=";
220         return a[0] - a[1];
221     case 2:
222         cout << a[3] << "-" << a[1] << "-" << a[2] << "=";
223         return a[3] - a[1] - a[2];
224     case 3:
225         cout << a[3] << "-" << a[1] << "=";
226         return a[3] - a[1];
227     case 4:
228         cout << a[4] << "-" << a[1] << "-" << a[2] << "-" << a[3] << "=";
229         return a[4] - a[3] - a[2] - a[1];
230     case 5:
231         cout << a[0] << "-" << a[1] << "-" << a[2] << "-" << a[3] << "=";
232         return a[0] - a[1] - a[2] - a[3];
233     case 6:
234         cout << a[3] << "-" << a[1] << "-" << a[2] << "-" << a[2] << "=";
235         return a[3] - a[1] - a[2] - a[2];
236     case 7:
237         cout << a[0] << "-" << a[1] << "-" << a[3] << "/" << a[3] << "-" << a[3] << "=";
238         return a[0] - a[1] - a[3] / a[3] - a[3];
239     case 8:
240         cout << a[0] << "-" << a[1] << "-" << a[2] << "-" << a[3] << "=";
241         return a[0] - a[1] - a[2] - a[3];
242     case 9:
243         cout << a[2] << "-" << a[1] << "/" << a[3] << "-" << a[2] << "-" << a[3] << "=";
244         return a[2] - a[1] / a[3] - a[2] - a[3];
245     default:
246         cout << a[0] << "/" << a[3] << "-" << a[1] << "=";
247         return a[0] / a[3] - a[1];
248  
249     }
250 }
251 float Modulo()
252 {
253     int range;
254     cout << "请输入多少数以内的四则运算:";
255     cin >> range;
256     cout << endl;
257     int a[4] = { 0 };
258     srand((unsigned)time(NULL));//    根据系统时间生成随机数
259     for (int i = 0; i < 4; i++)
260         a[i] = (rand() % range) + 1;
261     sort(a, a + 4);    //    将数组进行升序排列
262     cout << "请输入答案。(小数精确到后2位!)" << endl;
263     switch ((rand() % 4) + 1)
264     {
265     case 1:
266         cout << "(" << a[0] << "/" << a[1] << ")" << "+" << "(" << a[2] << "/" << a[3] << ")" << "=" << endl;
267         return (a[0] / (a[1]*1.0)) + (a[2] / (a[3]*1.0));
268     case 2:
269         cout << "(" << a[0] << "/" << a[0] << ")" << "+" << "(" << a[2] << "/" << a[3] << ")" << "=" << endl;
270         return (a[0] / a[0]) + (a[2] / (a[3]*1.0));
271     case 3:
272         cout << "(" << a[1] << "/" << a[1] << ")" << "+" << "(" << a[0] << "/" << a[3] << ")" << "=" << endl;
273         return (a[1] / (a[1]*1.0)) + (a[0] / (a[3]*1.0));
274     case 4:
275         cout << "(" << a[0] / a[2] << ")" << "-" << a[2] << "/" << a[3] << "=" << endl;
276         return a[0] / (a[2]*1.0) + a[2] / (a[3]*1.0);
277     default:
278         cout << "(" << a[1] << "/" << a[1] << ")" << "+" << "(" << a[0] << "/" << a[3] << ")" <<"="<< endl;
279         return (a[1] / (a[1]*1.0)) + (a[0] / (a[3]*1.0));
280  
281     }
282 }
283 float Multiply()
284 {
285     int range;
286     cout << "请输入多少数以内的四则运算:";
287     cin >> range;
288     cout << endl;
289     int a[4] = { 0 };
290     srand((unsigned)time(NULL));//    根据系统时间生成随机数
291     for (int i = 0; i < 4; i++)
292         a[i] = (rand() % range) + 1;
293     sort(a, a + 4);    //    将数组进行升序排列
294     cout << "请输入答案。(小数精确到后2位!)" << endl;
295     switch ((rand() % 9) + 1)
296     {
297     case 1:
298         cout << a[2] << "*" << a[1] << "=";
299         return a[2] * a[1];
300     case 2:
301         cout << a[3] << "*" << a[1] << "*" << a[2] << "=";
302         return a[3] * a[1] * a[2];
303     case 3:
304         cout << a[3] << "*" << a[1] << "=";
305         return a[3] * a[1];
306     case 4:
307         cout << a[4] << "*" << a[1] << "*" << a[2] << "*" << a[3] << "=";
308         return a[4] * a[3] * a[2] * a[1];
309     case 5:
310         cout << a[0] << "*" << "(" << a[1] << "/" << a[3] << ")" << "*" << a[2] << "*" << a[3] << "=";
311         return a[0] * (a[1] / (a[3]*1.0)) * a[2] * a[3];
312     case 6:
313         cout << "(" << a[2] << "/" << a[3] << ")" << "*" << "(" << a[1] << "/" << a[2] << ")" << "*" << a[2] << "=";
314         return (a[2] / (a[3]*1.0)) * (a[1] / (a[2]*1.0)) * a[2];
315     case 7:
316         cout << a[0] << "*" << a[1] << "*" << "(" << a[3] << "/" << a[3] << ")" << "*" << a[3] << "=";
317         return a[0] * a[1] * (a[3] / (a[3]*1.0)) * a[3];
318     case 8:
319         cout << a[2] << "*" << a[1] << "*" << a[2] << "*" << a[3] << "=";
320         return a[2] * a[1] * a[2] * a[3];
321     case 9:
322         cout << a[2] << "*" << "(" << a[1] << "/" << a[3] << ")" << "*" << a[2] << "*" << a[3] << "=";
323         return a[2] * (a[1] / (a[3]*1.0)) * a[2] * a[3];
324     default:
325         cout << a[0] << "*" << a[3] << "*" << a[1] << "=";
326         return a[0] * a[3] * a[1];
327  
328     }
329 }
330 void menu()
331 {
332     cout << "1 加法运算 " << " 2 减法运算 " << " 3 乘法运算 " << " 4 除法运算 " << " 5 混合运算"<<endl;
333     cout << "请输入你要做的题目类型:";
334 }

 

转载于:https://www.cnblogs.com/cool125/p/7531334.html

好的,以下是一个基于 Python 的自动生成四则运算题目程序实现方案: ```python import random # 定义运算符 operators = ['+', '-', '*', '/'] # 定义数字范围 min_num = 1 max_num = 100 # 定义生成表达式的函数 def generate_expression(): # 随机生成两个数字 num1 = random.randint(min_num, max_num) num2 = random.randint(min_num, max_num) # 随机选择一个运算符 op = random.choice(operators) # 生成表达式字符串 expression = "{} {} {}".format(num1, op, num2) # 返回表达式字符串和答案 if op == '+': answer = num1 + num2 elif op == '-': answer = num1 - num2 elif op == '*': answer = num1 * num2 else: answer = num1 / num2 return expression, answer # 定义生成表达式列表的函数 def generate_expressions(num): expressions = [] answers = [] for i in range(num): expression, answer = generate_expression() expressions.append(expression) answers.append(answer) return expressions, answers # 定义检查答案的函数 def check_answer(expression, answer, user_answer): if answer == user_answer: print("{} = {},回答正确!".format(expression, user_answer)) return 1 else: print("{} = {},回答错误!正确答案为 {}。".format(expression, user_answer, answer)) return 0 # 定义运行测试的函数 def run_test(): # 用户输入条件 num = int(input("请输入题目数量:")) operators_str = input("请输入要使用的运算符(+,-,*,/中的任意组合,例如'+-'表示使用加法和减法):") nums_range_str = input("请输入数字范围(用空格分隔,例如'1 100'表示使用1-100之间的数字):") # 解析用户输入条件 operators_to_use = [] for op in operators_str: if op in operators: operators_to_use.append(op) if not operators_to_use: operators_to_use = operators nums_range = nums_range_str.split() if len(nums_range) == 2: min_num = int(nums_range[0]) max_num = int(nums_range[1]) else: min_num = 1 max_num = 100 # 生成题目 expressions, answers = generate_expressions(num) # 等待用户输入答案并检查 score = 0 for i in range(num): print("第{}:{}".format(i + 1, expressions[i])) user_answer = int(input("请输入答案:")) score += check_answer(expressions[i], answers[i], user_answer) # 计算得分并输出测试结果 print("测试结束,得分:{}/{}。".format(score, num)) # 运行测试程序 run_test() ``` 以上代码中,我们通过定义多个函数实现了生成四则运算表达式、生成指定数量的四则运算表达式、计算表达式答案、检查用户输入答案是否正确等功能,并通过一个 `run_test` 函数将这些功能组合起来,实现了一个简单的四则运算题目自动生成程序。您可以根据自己的需求和实际情况进行修改和扩展。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值