四则运算生成程序(基于控制台)
题目链接:http://www.cnblogs.com/HQL0301/p/7502315.htm
源码连接:https://gitee.com/jm-wmj/operation/tree/master
(我是用c++实现的)
一.需求分析
⦁可以根据输入的题数和数值范围自动生成四则运算表达式。
⦁表达式包括“+ - * /”这四种运算符。
⦁可以进行分数的运算,如果题目中出现假分数,则转换成真分数。
⦁对题目答案进行批改对错,给出正确率。
二.功能设计
(1)基本功能
1.输入参数n,程序生成 n道四则运算题目.
2.用参数来控制生成的四则运算的数值范围.
3.用户可以对相应的题目进行做答.
4.对用户的答案进行判断对错,并给出正确率.
(2)扩展功能
1.查重复,不出现重复的题目(没有实现)
2.对假分数转换成带分数表示
(3)高级功能
1.用户回答正确可以获得相应的积分,错误会扣除相应的积分,积分可以兑换一定的礼品。(后续完善的时候再实现)
三.设计实现
(由于是由C++实现的,所以都是函数,没有类)
1.transformation函数:对题目的答案进行保留小数点后两位的操作(四舍五入)。
2.operation函数:根据题目给的数值范围和题数进行随机出题。题目中如果出现假分数,就将分子分母对调,变成真分数。进行题目的计算,并进行答案的批改。
3.main函数:调用operation函数,计算结束后,提示是否继续。
四.代码说明
写答案的时候以小数的形式表示,保留小数点后两位(四舍五入)
float transformation(float w)
{float b;b = floor(w * 100 + 0.5) / 100;//用floor函数对运算结果保留小数点后两位 return b;
}
整体的思想:用四个整数以两个分数的形式来构成两个操作数,当分子为一的时候,就变成整数了。
int first_num,second_num,third_num,fourth_num;//用四个整数以分数的形式来构成两个操作数 cout<<"需要列出多少道四则运算?"<<endl; cin>>n; cout<<"生成题目数值的范围" <<endl; cin>>m; cout<<"————————————————"<<endl; for(int i=0;i<n;i++) { z=rand()%4; first_num=rand()%m; second_num=rand()%m; third_num=rand()%m; fourth_num=rand()%m; if (second_num==1) { x=(float)first_num;//如果第一个分数的分母为1,则第一个操作数 就等于分子 } else if(first_num>second_num)//第一个分数为假分数 ,则对调分子与分母,变成真分数 { t=first_num; first_num=second_num; second_num=t; } x=(float)first_num/second_num; if (fourth_num==1)//如果第二个分数的分母为1,则第二个操作数 就等于分子 { y=(float)third_num; } else if(third_num>fourth_num)//第二个分数为假分数 ,则对调分子与分母,变成真分数 { t=third_num; third_num=fourth_num; fourth_num=t; } y=(float)third_num/fourth_num;
随机生成四种运算符,当second_num==1和fourth_num==1时,表达式可以变成整数。(没有全部展示出来)
z=rand()%4;switch(z){case 0://运行加法 if(second_num==1 & fourth_num!=1){cout<<i+1<<"、 "<<first_num<<" + "<<third_num<<"/"<<fourth_num<<"="<<" ";} else if(fourth_num==1 & second_num!=1){cout<<i+1<<"、 "<<first_num<<"/"<<second_num<<" + "<<third_num<<"="<<" ";}else if(second_num==1 & fourth_num==1){cout<<i+1<<"、 "<<first_num<<" + "<<third_num<<"="<<" ";} else{cout<<i+1<<"、 "<<first_num<<"/"<<second_num<<" + "<<third_num<<"/"<<fourth_num<<"="<<" ";}w=x+y;answer[i+1]=transformation(w);break;case 1:if(second_num==1 & fourth_num!=1){cout<<i+1<<"、 "<<first_num<<" - "<<third_num<<"/"<<fourth_num<<"="<<" ";} else if(fourth_num==1 & second_num!=1){cout<<i+1<<"、 "<<first_num<<"/"<<second_num<<" - "<<third_num<<"="<<" ";} else if(second_num==1 & fourth_num==1){cout<<i+1<<"、 "<<first_num<<" - "<<third_num<<"="<<" ";} else{cout<<i+1<<"、 "<<first_num<<"/"<<second_num<<" - "<<third_num<<"/"<<fourth_num<<"="<<" ";}w=x-y; answer[i+1]=transformation(w); break;
对结果进行判断对错,并给出正确率。
for(int i=1;i<=n;i++){cout<<"请作答:"<<endl;cout<<i<<"、";cin>>d;if(d==answer[i]){cout<<"恭喜您,回答正确!"<<endl;cout<<endl;right=right+1;}else{cout<<"回答错误,正确答案为:"<<setprecision(2)<<answer[i]<<endl;cout<<endl;error=error+1;}}k=(float)right/n;cout<<"回答正确的数量为:"<<" "<<right<<"个"<<endl;cout<<"回答错误的数量为:"<<" "<<error<<"个"<<endl;cout<<"正确率为:"<<" "<<k*100<<"%"<<endl;
五.测试运行
1.输入参数
2.进行做答
3.得出正确率
六.PSP展示:
七.小结
本次作业采用的是C++,对C++的使用掌握的还是挺灵活的,但是用C++实现有几个缺陷:语言比较赘述;实现高级的功能有些吃力(可能是我掌握的不够);要定义的东西实在太多了。
而且这次的查重并没有实现,在网上找了很多资料,但就是看不懂。另外,好多人都是用java实现的,但我对java有点恐惧,觉得用java写不出来,还是要继续努力学习。
转载于:https://www.cnblogs.com/jm-wmj/p/8681844.html
四则运算生成程序(基于控制台)相关推荐
- java实现四则运算应用(基于控制台)
项目地址:https://gitee.com/wxrqforever/object_oriented_exp1.git 一.需求分析: 一个基于控制台的四则运算系统,要能实现生成并计算含有真,假分数, ...
- 四则运算题目生成程序(基于控制台)
基于控制台的四则运算 代码地址 a.需求分析 运算符为 +, −, ×, ÷ 除了整数以外,还要支持真分数的四则运算,真分数的运算,例如:1/6 + 1/8 = 7/24 要求能处理用户输入的真分数, ...
- 如何用python写四则运算程序中_四则运算生成程序(python版)
四则运算题目生成-基于控制台 项目托管在码云:飞机票 需求分析 根据控制台提示信息,输入题目生成相关配置参数 题目生成数量 数字范围 式子中是否有分数 .... 程序支持 10000 题目生成 题目与 ...
- 购买流程图java_Java实现基于控制台的购书系统基本操作
Java开发基于控制台的购书系统 题目 开发基于控制台的购书系统.具体要求如下: (1)输出所有图书的信息:包括每本图书的图书编号.图书名称.图书单价和库存数量. (2)顾客购买图书:根据提示输入图书 ...
- 吃豆豆游戏的C语言程序码,C++实现基于控制台界面的吃豆子游戏
本文实例讲述了C++实现基于控制台界面的吃豆子游戏.分享给大家供大家参考.具体分析如下: 程序运行界面如下所示: ESC键可退出游戏. main.cpp源文件如下: #include "li ...
- c语言五子棋代码_基于控制台的C语言贪吃蛇
相信对很多人来说,学完C语言以后,都会找一些小程序来练练手.例如贪吃蛇.五子棋.俄罗斯方块等等. 今天给大家分享一个基于控制台的C语言贪吃蛇小程序. 基础知识要求:C语言基础. 知识点补充 这里写一些 ...
- node.js当中net模块的简单应用(基于控制台的点对点通信)
我们可以使用node.js当中内置的net模块来创建socket服务端和socket客户端,实现一个简单的基于控制台的点对点通信. 一.利用net模块建立socket客户端 1.引包 const ne ...
- “简易四则运算生成程序——第一次改进后的单元测试”链接
项目成员:张金生 张政 <正文随笔发布在张金生博客中> 简易四则运算生成程序--第一次改进后的单元测试 转载于:https://www.cnblogs.com/regretless ...
- 基于控制台的五子棋小游戏(简易)
基于控制台的五子棋小游戏(简易) 展示 源码: 使用: GoBang类: 展示 话不多说上代码 Don't talk much, say the code! 源码: 使用: new完直接运行 publ ...
- 任务3-1 基于控制台的购书系统
目录 题目 伴随互联网的蓬勃发展,网络购书系统作为电子商务的一种形式,正以其高效.低成本的优势逐步成为新兴的经营模式,人们已经不再满足互联网的用途仅仅局限于信息的浏览和发布,更渴望着能够充分享受互联网 ...
最新文章
- 千万QPS毫秒响应:快手数据中台建设实践
- git 配置多个SSH-Key
- 娃哈哈信息部李钒助阵FBS2017 共探食品饮料信息化之路
- ios学习笔记-数据持久化
- 英语写作-Introduction
- 想做大牛,Java开发的必备技术点你了解了吗?
- 敏捷开发 我的经验(一)基本概念
- supermicro board bios 升级 超微主板刷 bios
- 搜狗 语音输入法 linux,搜狗输入法Linux1.0企业版发布 全面提升用户输入体验
- Dubbo Failover机制
- 【ybt高效进阶4-4-3】【luogu P4513】公园遛狗 / 小白逛公园
- 七天搞定Node.js微信公众号
- 【ELM预测】基于粒子群算法PSO优化极限学习机预测含Matlab源码
- 当 input 属性为 number,设置maxlength属性不生效的坑
- 3D激光SLAM:ALOAM---gazebo仿真测试场景搭建
- 信息处理技术员知识点总结(错题记录)——考试通过,完结撒花
- idea svn回退版本_版本控制 -- idea 整合 SVN
- 华为T2000网管软件使用之安装过程
- 开源共享 · 融金服产 — 2021 中关村论坛开源创新发展论坛在京举办
- [年度极品 普7风暴]《中关村GHOST WIN7纯净自选旗舰年度珍藏版2010V12》