程序输出小学四则运算表达式,支持真分数四则运算
2016-03-06 15:40
399 查看
程序设计思路:
1.运算式的输出格式可以为 数字 运算符 数字,也可以为 数字 运算符 数字 运算符 数字,还可以是更复杂的式子,在此只实现了2-3个数字的运算式。
2.将式子分为两类,第一类为20个,第二类为10个,分别用FOR循环控制输出。
3.第一类式子稍简单,只需通过随机函数将两个数字赋值,中间运算符通过数组下标的随机赋值实现随机性,再通过格式输出即可
4.此时还要考虑运算符为 ‘/’,并且除数为0的情况,这时用if语句设置条件排除即可
5.计算第一类式子结果可以参考计算器的功能代码,用switch语句实现判断运算并存储结果。
6.第二类式子参考第一类式子的输出方式,结果需要考虑 运算符优先级,运算计算顺序,因时间关系,计算结果暂未实现,以后再添加。
附上代码:
1.运算式的输出格式可以为 数字 运算符 数字,也可以为 数字 运算符 数字 运算符 数字,还可以是更复杂的式子,在此只实现了2-3个数字的运算式。
2.将式子分为两类,第一类为20个,第二类为10个,分别用FOR循环控制输出。
3.第一类式子稍简单,只需通过随机函数将两个数字赋值,中间运算符通过数组下标的随机赋值实现随机性,再通过格式输出即可
4.此时还要考虑运算符为 ‘/’,并且除数为0的情况,这时用if语句设置条件排除即可
5.计算第一类式子结果可以参考计算器的功能代码,用switch语句实现判断运算并存储结果。
6.第二类式子参考第一类式子的输出方式,结果需要考虑 运算符优先级,运算计算顺序,因时间关系,计算结果暂未实现,以后再添加。
附上代码:
//练习一,要求实现输出小学四则运算表达式,能支持一个真分数的四则运算 //赵承圣 2016.3.5 #include<iostream> #include<ctime> using namespace std; void exchange(int &a, int &b) //定义一个交换函数 { int temp = a; a = b; b = temp; } void main() { srand((int)time(NULL)); //每次执行种子不同,生成不同的随机数 int num1, num2,num3,snum,snum1; //定义变量通过随机函数来获得随机数字num1,num2,num3和随机符号snum,snum1 double result; //用result保存计算结果 char symbol[4]; //随机计算符号数组 symbol[0] = '+'; symbol[1] = '-'; symbol[2] = '*'; symbol[3] = '/'; for (int sexp=0; sexp < 20;sexp++) //控制简单表达式的个数为20个 { num1 = rand() % 100; num2 = rand() % 100; snum = rand() % 4; if (num2 == 0 && snum == 3) //除数为0的结果排除 break; switch (snum) { case 0:result = num1 + num2; break; case 1:result = num1 - num2; break; case 2:result = num1 * num2; break; case 3:double dnum1 = (int)num1; double dnum2 = (int)num2; result = dnum1 / dnum2; break; //将除的结果显示为double型 } cout << num1 << symbol[snum] << num2 << "="<<result<<endl; } for (int fexp = 0; fexp < 10; fexp++) //控制表达式的个数为10个 { num1 = rand() % 100; num2 = rand() % 100; num3 = rand() % 100; snum = rand() % 4; snum1 = rand() % 4; if ((num2 == 0 && snum == 3)||(num3==0&&snum1==3)) //除数为0的结果排除 continue; if (snum == 3 && num1 > num2) //如为假分数,则分子分母交换,调用exchange函数 exchange(num1,num2); if (snum1 == 3 && num2 > num3) exchange(num2, num3); cout << num1 << symbol[snum] << num2 <<symbol[snum1]<<num3<< "="<< endl; } system("pause"); }
相关文章推荐
- android学习之EditText需要点击两次触发onclick问题解决
- kaggle-浮游生物分类比赛一等奖---译文(第一部分)
- 字符串加解密
- 数据库的隔离机制
- 机房重构——透过变量和存储过程看结账
- 项目3:小试循环---(3)求1到m的倒数和
- Quartz2D - 基本图形绘制(线2)
- Masonry + Ajax 实现无限刷新瀑布流
- 算法类思考累积(一)
- Latex实现批注功能一(与word批注相同,带有侧边栏)
- 使用sklearn进行数据预处理 —— 归一化/标准化/正则化
- Java Security 总纲
- 主键与唯一性索引
- 四则运算
- 第二周上机实践项目——项目1-宣告“主权”
- 详解Java继承中属性、方法和对象的关系
- Android之路-学习-手机卫士
- Eclipse创建Maven项目提示缺少maven-resources-plugin:2.6
- CSS3animation动画 + 动画如何切换
- POJ 2318 叉积判断点与直线位置