作业二
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了作业二相关的知识,希望对你有一定的参考价值。
自动生成四则运算题目
主要功能有:设计打的这款程序能自动生成小学四则运算题目,除了整数以外,还能支持真分数的四则运算。
参考链接:www.cnbolgs.com/jiel/p/4810756.html
设计思想:
算数表达式: e:= n | e1 + e2 | e1 − e2 | e1 × e2 | e1 ÷ e2 | (e) , 其中e, e1和e2为表达式,n为自然数或真分数
- 设计思路
- 可将算式等价于 e = [num1 (a) num2] (b) [num3 (c) num4]
- 其中 num1, num2, num3, num4 为运算数,随机取整数或真分数; a, b, c 为运算符号
- 等式的body大小主要取决于a, b, c 的值,用数组定义运算符取值如下:
-
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语言不熟悉,所以还是很不熟练,而且深深的感觉到了自己的基础知识不牢固,其实是很简单的一个小程序,听起来看起来都非常简单,但是自己上手才发现苦难重重,以后一定不能眼高手低,多实践,无论难易。
以上是关于作业二的主要内容,如果未能解决你的问题,请参考以下文章