首页 > 技术文章 > 作业二(1)

ccxx 2016-03-17 01:19 原文

自动生成四则运算题目

主要功能有:设计打的这款程序能自动生成小学四则运算题目,除了整数以外,还能支持真分数的四则运算。

参考链接:www.cnbolgs.com/jiel/p/4810756.html

设计思想:

算数表达式: e:= n | e1 + e2 | e1 − e2 | e1 × e2 | e1 ÷ e2 | (e) , 其中e, e1和e2为表达式,n为自然数或真分数

  • 设计思路      
  1. 可将算式等价于   e = [num1 (a) num2] (b) [num3 (c) num4]
  2. 其中 num1, num2, num3, num4 为运算数,随机取整数或真分数; a, b, c 为运算符号
  3. 等式的body大小主要取决于a, b, c 的值,用数组定义运算符取值如下:
  4. char ysf[5] = {'+', '-', '*', '%', NULL };

    当 b 取NULL时,算式变换为  e = [num1 (a) num2] (c) num4

    当 c  取NULL时,算式变换为  e = [num1 (a) num2] (b) num3

    以此类推,但要求 a  不能为NULL。

  4. 形成初期代码:

 1 #include <stdio.h>
 2 #include<stdlib.h> 
 3 #include<time.h>
 4 #include<iostream>
 5 #define random(x) (rand()%(x))  
 6 using namespace std;
 7 int main()
 8 {
 9     int num1 = 0, num2 = 0, num3 = 0, num4 = 0;
10     int a = 0, b = 0, c = 0;
11     char ysf[5] = {'+', '-', '*', '%', NULL };
12     time_t t;
13     srand((unsigned)time(&t));   //重置随机数种子
14     int n;
15     cin >> n ;
16     for (int i = 1; i <= n; i++)   // 生成n道题
17     {
18         do   // a运算符不为NULL
19         {
20             a = random(5);
21         } while (a == 4);
22 
23         b = random(5);
24         c = random(5);
25 
26         if (b == 4 && c != 4 )
27         {
28             cout << "(" << num1 << ' ' << ysf[a] << ' ' << num2 << ")" << ' ' << ysf[c] << ' ' << num4<< ' ' << '='<< ' ' << endl;
29         }
30         else if (b != 4 && c == 4)
31         {
32             cout << "(" << num1 << ' ' << ysf[a] << ' ' << num2 << ")" << ' ' << ysf[b] << ' ' << num3 << ' ' << '=' << ' ' << endl;
33         }
34         else if (b != 4 && c != 4)
35         {
36             cout << "(" << num1 << ' ' << ysf[a] << ' ' << num2 << ")" << ' ' << ysf[b] << ' ' << "(" << num3 << ' ' << ysf[c] << ' ' << num4 << ")" << ' ' << '=' << ' ' << endl;
37         }
38         else
39         {
40             cout <<num1 << ' ' << ysf[a] << ' ' << num2 << ' ' << '=' << ' ' << endl;
41         }
42 
43     }
44     return 0;
45 }

总结:本次作业由于以前C语言不熟悉,所以还是很不熟练,而且深深的感觉到了自己的基础知识不牢固,其实是很简单的一个小程序,听起来看起来都非常简单,但是自己上手才发现苦难重重,以后一定不能眼高手低,多实践,无论难易。

推荐阅读