整体功能简介:

1.题目不重复;

2.可以定制数量;

3.可以自己选择输入范围;

4.可以选择是否添加乘除法;

5.可以选择除法结果是取整或商加余数形式表示或小数方式(默认小数点后两位)表示;

6.支持真分数计算;

7.可以判断正误,如果错误能给出正确答案;

8.最后可以给出错误和正确的个数。

不足之处:

1.题目不重复的前提是数值范围比较大而且数量相对少,相反的情况就可能出现重复了;

2.乘法结果数值偏大,除法基本没有整除的情况(不太符合小学除法的命题规则);

3.分数运算虽然默认真分数,但结果可能出现假分数,分数减法可能会出现负值(也不符合小学生出题要求);

4.只能给出两元运算。

如果要出四则运算的话推翻这个程序重写是没跑了,但是我需要先把这个程序尽我可能优化到最后,半途而废于心不忍啊。

 

************************华丽丽的分割线,下面是废话*****************************

我是用C语言编写的程序,虽然这个小程序不难,但是我却写了三个晚上,加起来有十多个小时吧,而且还有这么多缺陷,不过还好我大致编出来了,千里之行第一步迈出去了。我的这个程序没用到比较高级的知识,指针什么的我想用也用不好,数组也没用到,可能不够优化,但看到黑框框里面的东西和自己想的一样的的时候也是比较高兴地。

我把自己的思路以及编写过程中遇到的问题总结一下,再附上coding地址。

一开始的作业是随机30道小学生加减习题,随机的话就需要随机数了,前人这么聪明一定会有直接的函数的,于是百度一下rand函数就出来了,设置取值范围,根据所取第一个数的奇偶性确定符号,再来个if-else就可以随机选择加减法了;后来要进行优化,给了一个word文档,里面是作业要求。也给了一个邹欣老师的网页链接,里面也是要求。感觉我现在不一定能按照邹老师的要求写出来,我就选择了许老师的作业要求,当然后期要进行优化直到符合所有要求。我选择性的添加了许老师的扩充要求,其中添加括号,真分数假分数的分别,以及小数精确位数都没有添加上去,剩下的功能的设计思路如下:

设计的没有条理性,思路不够清晰,功能也不是在单个函数下去实现的,在设计思路下面就不粘贴源代码了。

*************************华丽丽的分割线,下面是各功能设计思路以及截图************************

题目不重复:利用系统时间来改变系统的种子值,即srand(time(NULL)),保证每次运行rand的种子值不同,能够选取不同的随机数;

定制数量:由用户自己输入数量,利用for循环来判断是否结达到用户所要求的数目;

数值范围:同样由用户自己输入范围m、n,然后进行rand()%(n-m)+m运算,达到选择数值范围的要求;

是否有乘除法:我是根据第一个随机数对2取余来判断加减法,如果需要添加乘除法的时候对4取余就可以达到要求,中间需要添加几个临时变量来进行判断;

支持分数计算:寒假的时候写过一个关于分数计算的小程序,直接拿来用了。里面需要求最大公约数,最小公倍数以及约分。最大公约数函数用到辗转相除法,递归调用自己求得结果,最小公倍数和约分调用最大公约数函数得到结果,并在约分函数进行输出;

除法结果的输出形式:默认取整,结果以商和余数的形式表示的时候分别取整取余就行了,结果含小数的时候,先定义浮点类型的变量,然后直接把随机数强制类型转换得到结果,四舍五入后得到最终结果,再与输入结果比较就行了,附上小数显示结果的代码;

 void DivDec(int a,int b)
{
double c,d; //存放输入结果和运算结果
// int temp; //临时变量
printf("%d/%d=",a,b);
scanf("%lf",&c); //结果输入
d=(float)a/b;
d*=; //四舍五入取小数余数
d+=0.5;
d=floor(d); //利用floor()函数得到最接近d数,但不大于d的整数(完成四舍五入)
d/=;
// temp=(int)d;
if((d-c)==)
printf("right!\n");
else
// printf("%f \n",c);
printf("error!the right answer is %.2f.\n",d);
}

判断正误以及给出正确错误个数:把正确运算的结果放在一个变量里,输入结果放在另一个变量里,进行比较,错误的话输出正确结果即可;定义变量表示正确个数,并随着子函数的调用进行传递返回,更新正确个数,最后用总个数减去正确的个数来显示错误的个数。

随机部分出题并判断的的截图,没有随机出来除法而且看着还有点乱- -!

给出其他几种选择形式的截图:

1.没有乘除法以及分数计算

2.不添加乘除法只添加分数

3.除法的其他两种表示结果的方式

(1)商加余数的形式

(2)结果是两位小数的形式

****************************华丽丽的分割线,下面是遇到的问题****************************************

我判断随机符号是先生成随机数再根据随机数取余来添加随机符号的,一开始数值范围为正,后来添加负数的时候总是出错,单步调试之后才知道我的判断语句里面只有0,1,2,3。根本没负数嘛。我把随机数取绝对值然后再取余就行了。

在写除法的结果用小数表示的时候定义了两个double类型的变量,输入的时候写的是%f(其实就是这里错了),然后每次判断对错的时候总是错的,即使输入的是对的,一开始以为是浮点数的比较出问题了,认为输入的浮点数小数点后面就只有输入的几位(自己都忍不住笑了),然后抓着这个问题不放了,一番苦战无果后决定又感觉是输入的数出错了(这次感觉对了)。然后又是一番苦战才找到时输入格式写错了,双精度类型的输入格式是“%lf”,我当时看错了改成“%1f”,还是错,还是苦战,最后才发现错在哪。汗!基本功不扎实真坑,太坑了!就这么一点程序整了半天。这段代码如上。

调试的时候分数减法的参数传递时又出现问题了,不过调试一下也算找到问题了,没有之前那么艰难。

其他的小问题也不少,但是没有完全记下来。程序也比较简单,就不吹嘘功能了。

估计以后的优化会很艰难,直接重写一份也是有可能的。毕竟问题太多了,到处都是不合理的地方。先大致写出来给自己点信心(这小程序我也会写的嘛),然后优化好以后和这个对比一下(自嘲当初的根本不能看嘛),让程序的不断优化见证自己的进步。

代码地址:https://coding.net/u/DreamQ/p/First/git/blob/master/AddSub.cpp

博客修改次数:6(估计最后一次了)

小学生二元四则运算(F)的更多相关文章

  1. 用C++实现简单随机二元四则运算

    让我们想看看二元四则运算都需要实现什么: (1) 定制题目数量 (2) 是否有乘除法 (3) 题目数值范围 (4) 加减有无负数 (5) 除法有无余数 (6) 是否支持分数(真分数.假分数…) (7) ...

  2. 小学生噩梦——四则运算题库(python 全功能实现)

    Github: https://github.com/holidaysss 小组:龙天尧(代码实现),林毓植(浮点转分数函数,代码审查) PSP2.1 Personal Software Proces ...

  3. 四则运算二(java web)

    最近我和我的小伙伴yaoyali结成对子,共同写网页版的四则运算.虽然现在还没弄好,但是比起上次用纯java写的四则运算有了很大改进. 一.存放四则运算题目和答案的类 package com.jaov ...

  4. 结对编程1---基于Flask的四则运算题目生成器

    项目代码地址 / WEB应用地址 / 合作伙伴iFurySt博文链接 需求分析 本次程序是基于原有的控制台四则运算器的基础上,改成WEB的形式,同时还增加了一些新的功能.同时因为交互方式的改变,代码也 ...

  5. 四则运算App--大总结(已完成)

    1. 贡献分分配(20分) 欧泽波:14分,Android的学习,代码的编写,等等 杨洁华:1分,提供学习资料,框架的设计等等 赵泽嘉:3分,提供学习资料,框架的设计等等 林扬滨:2分,提供学习资料, ...

  6. Java实现 蓝桥杯VIP 算法训练 二元函数

    问题描述 令二元函数f(x,y)=ax+by,a和b为整数,求一个表达式S的值. 只有满足以下要求的表达式才是合法的: 1.任意整数x是一个合法的表达式: 2.如果A和B都是合法的表达式,则f(A,B ...

  7. Java实现蓝桥杯VIP算法训练 二元函数

    试题 算法训练 二元函数 资源限制 时间限制:1.0s 内存限制:256.0MB 问题描述 令二元函数f(x,y)=ax+by,a和b为整数,求一个表达式S的值. 只有满足以下要求的表达式才是合法的: ...

  8. python学习之关键字

    1.assert 语句形式:assert 布尔表达式[,msg] 解释:assert是检验一个表达式是否为真.若不为真,则触发一个错误. 例如: assert False assert 1==2 as ...

  9. MATLAB如何定义函数

    自定义函数的途径:M文件函数(M file function)在线函数(Inline Function)匿名函数(Anonymous Function)1.M文件函数范例function c=myad ...

随机推荐

  1. 【转】Android Camera 相机开发详解

    在Android 5.0(SDK 21)中,Google使用Camera2替代了Camera接口.Camera2在接口和架构上做了巨大的变动, 但是基于众所周知的原因,我们还必须基于 Android ...

  2. OpenCV——直方图计算、寻早最值位置和对比匹配(判断两幅图的相似程度)

  3. jquery练习笔记

    <!DOCTYPE html> <html lang="en" xmlns="http://www.w3.org/1999/xhtml"> ...

  4. 学会如何使用Github进行托管代码和用markdown撰写心得

    这次作业是学会如何使用Github进行托管代码和用markdown撰写心得. 1.掌握使用Git进行代码版本,使用github进行代码托管.(git使用,推荐imooc公开课: 公开课 ) 登录 gi ...

  5. Swift - 给图片和按钮添加阴影边框

    最近比较忙,想要做的事情有很多,能做出来的就只有一部份,我觉得也许是我没有计划和规律造成的,我需要坚持下去,今天写了一个swift2.0给按钮或者图片添加阴影的效果,就当做笔记吧:-) Swift C ...

  6. 20155220 《网络对抗》Exp 8 Web基础

    20155220 <网络对抗>Exp 8 Web基础 基础问题回答 实践内容 1.Web前端HTML 配置环境 正常安装.启动Apache 安装:sudo apt-get install ...

  7. 20155229《网络对抗技术》Exp9:Web安全基础

    实验内容 Webgoat实践下相关实验. 实验步骤 WebGoat: Webgoat是OWASP组织研究出的一个专门进行web漏洞实验的应用品台,这个平台里包含了web中常见的各种漏洞,例如:跨站脚本 ...

  8. 赚钱的小生意,VC对你没兴趣

    创业者,赚钱的生意就不要去找VC(风险投资)了,因为人家对你的生意没有兴趣. 无论是创业者,VC,股权投资散户,都需要对一个"生意"的规模有个总体的认识. 就"生意&qu ...

  9. Luogu P1558 色板游戏

    (此题与POJ2777重题) 为了加深对线段树的记忆,然后开始搞这道题. TM的WA了一下午就是发现x可能大于y(然而题目里说的还很清楚,我TM没看见) 这道题只需要在线段树的板子上改一些地方就可以了 ...

  10. POJ 2965&&1753

    最近由于复习备考(然而考得还是很炸),很久没打题目了.现在开始刷寒假作业,不得不搞POJ 话说没有中文真的好烦啊! 先看1753 题目大意是说在一个4*4的格子中有黑白两色的棋子,你可以翻动其中的棋子 ...