题目链接: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

四则运算生成程序(基于控制台)相关推荐

  1. java实现四则运算应用(基于控制台)

    项目地址:https://gitee.com/wxrqforever/object_oriented_exp1.git 一.需求分析: 一个基于控制台的四则运算系统,要能实现生成并计算含有真,假分数, ...

  2. 四则运算题目生成程序(基于控制台)

    基于控制台的四则运算 代码地址 a.需求分析 运算符为 +, −, ×, ÷ 除了整数以外,还要支持真分数的四则运算,真分数的运算,例如:1/6 + 1/8 = 7/24 要求能处理用户输入的真分数, ...

  3. 如何用python写四则运算程序中_四则运算生成程序(python版)

    四则运算题目生成-基于控制台 项目托管在码云:飞机票 需求分析 根据控制台提示信息,输入题目生成相关配置参数 题目生成数量 数字范围 式子中是否有分数 .... 程序支持 10000 题目生成 题目与 ...

  4. 购买流程图java_Java实现基于控制台的购书系统基本操作

    Java开发基于控制台的购书系统 题目 开发基于控制台的购书系统.具体要求如下: (1)输出所有图书的信息:包括每本图书的图书编号.图书名称.图书单价和库存数量. (2)顾客购买图书:根据提示输入图书 ...

  5. 吃豆豆游戏的C语言程序码,C++实现基于控制台界面的吃豆子游戏

    本文实例讲述了C++实现基于控制台界面的吃豆子游戏.分享给大家供大家参考.具体分析如下: 程序运行界面如下所示: ESC键可退出游戏. main.cpp源文件如下: #include "li ...

  6. c语言五子棋代码_基于控制台的C语言贪吃蛇

    相信对很多人来说,学完C语言以后,都会找一些小程序来练练手.例如贪吃蛇.五子棋.俄罗斯方块等等. 今天给大家分享一个基于控制台的C语言贪吃蛇小程序. 基础知识要求:C语言基础. 知识点补充 这里写一些 ...

  7. node.js当中net模块的简单应用(基于控制台的点对点通信)

    我们可以使用node.js当中内置的net模块来创建socket服务端和socket客户端,实现一个简单的基于控制台的点对点通信. 一.利用net模块建立socket客户端 1.引包 const ne ...

  8. “简易四则运算生成程序——第一次改进后的单元测试”链接

    项目成员:张金生     张政 <正文随笔发布在张金生博客中> 简易四则运算生成程序--第一次改进后的单元测试 转载于:https://www.cnblogs.com/regretless ...

  9. 基于控制台的五子棋小游戏(简易)

    基于控制台的五子棋小游戏(简易) 展示 源码: 使用: GoBang类: 展示 话不多说上代码 Don't talk much, say the code! 源码: 使用: new完直接运行 publ ...

  10. 任务3-1 基于控制台的购书系统

    目录 题目 伴随互联网的蓬勃发展,网络购书系统作为电子商务的一种形式,正以其高效.低成本的优势逐步成为新兴的经营模式,人们已经不再满足互联网的用途仅仅局限于信息的浏览和发布,更渴望着能够充分享受互联网 ...

最新文章

  1. 千万QPS毫秒响应:快手数据中台建设实践
  2. git 配置多个SSH-Key
  3. 娃哈哈信息部李钒助阵FBS2017 共探食品饮料信息化之路
  4. ios学习笔记-数据持久化
  5. 英语写作-Introduction
  6. 想做大牛,Java开发的必备技术点你了解了吗?
  7. 敏捷开发 我的经验(一)基本概念
  8. supermicro board bios 升级 超微主板刷 bios
  9. 搜狗 语音输入法 linux,搜狗输入法Linux1.0企业版发布 全面提升用户输入体验
  10. Dubbo Failover机制
  11. 【ybt高效进阶4-4-3】【luogu P4513】公园遛狗 / 小白逛公园
  12. 七天搞定Node.js微信公众号
  13. 【ELM预测】基于粒子群算法PSO优化极限学习机预测含Matlab源码
  14. 当 input 属性为 number,设置maxlength属性不生效的坑
  15. 3D激光SLAM:ALOAM---gazebo仿真测试场景搭建
  16. 信息处理技术员知识点总结(错题记录)——考试通过,完结撒花
  17. idea svn回退版本_版本控制 -- idea 整合 SVN
  18. 华为T2000网管软件使用之安装过程
  19. 开源共享 · 融金服产 — 2021 中关村论坛开源创新发展论坛在京举办
  20. [年度极品 普7风暴]《中关村GHOST WIN7纯净自选旗舰年度珍藏版2010V12》

热门文章

  1. matlab 更换坐标轴_matlab导入数据生成曲线,并更改坐标轴刻度
  2. html脚注如何设置,脚注怎么加(如何设置脚注格式)
  3. 贾琏欲执事(JDBC连接数据库)
  4. Qt 如何获取本机ip地址
  5. 计算机公式算乘法,excel表格乘法计算公式的用法
  6. oracle imp 版本错误,解决imp导入数据报IMP-00098错误
  7. 步进电机、伺服电机、舵机的区别与控制(角度、转速)
  8. 华为笔记本触摸板使用技巧
  9. Linux搭建测试环境
  10. 使用ps抠图_ps扣圆形_ps扣椭圆