整体功能简介:

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. Articulate Presenter文字乱码的排除

    Articulate Presenter乱码的问题如何设置? 字体乱码的设置: 1.首先如果ppt中有中文内容,肯定需要将Articulate Presenter的Character Set设置为No ...

  2. loli的搜索测试-我真不知道是第多少次了

    搜索测试 又到了....并不激动人心的搜索测试时间. 今天和以前还是有一点不一样的,新高二的学长们也参加了(也就是说我们又要被吊打了) 话不多说,看题: fz:填一个5*5的质数方阵,要求每行,每列, ...

  3. nginx中server的匹配顺序

    在开始处理一个http请求时,nginx会取出header头中的host,与nginx.conf中每个server的server_name进行匹配,以此决定到底由哪一个server块来处理这个请求. ...

  4. Android 将若干张图片拼接在一起形成一个全新的图片

    目的:使用Android技术将若干张图片拼接成为一张图片. 最开始的两张图如下所示: 拼接后的图片如下图所示: 这样就把两张图片拼接成为一张了. 拼接步骤: 1.使用Bitmap创建一个空的Bitma ...

  5. gdb中信号

    信号(Signals) 信号是一种软中断,是一种处理异步事件的方法.一般来说,操作系统都支持许多信号.尤其是UNIX,比较重要应用程序一般都会处理信号.UNIX定义了许 多信号,比如SIGINT表示中 ...

  6. OutputFormat输出过程的学习

    花了大约1周的时间,最终把MapReduce的5大阶段的源代码学习结束掉了.收获不少.就算本人对Hadoop学习的一个里程碑式的纪念吧.今天花了一点点的时间,把MapReduce的最后一个阶段.输出O ...

  7. 2017-2018-2 20155224『网络对抗技术』Exp5:MSF基础应用

    基础问题回答 用自己的话解释什么是exploit,payload,encode? exploit就相当于是载具,将真正要负责攻击的代码传送到靶机中,我觉得老师上课举的火箭和卫星的例子非常形象,火箭只是 ...

  8. 20155226 《网络对抗》exp6信息搜集与漏洞扫描

    20155226 <网络对抗>exp6信息搜集与漏洞扫描 实验后回答问题 哪些组织负责DNS,IP的管理? 目前域名机构主要包括ICANN理事会和CNNIC. Internet 域名与地址 ...

  9. WPF编程,通过DoubleAnimation控制图片的透明度,将重叠的图片依次显示。

    原文:WPF编程,通过DoubleAnimation控制图片的透明度,将重叠的图片依次显示. 版权声明:我不生产代码,我只是代码的搬运工. https://blog.csdn.net/qq_43307 ...

  10. 总结 : C#事件理解

    要理解事件,首先必须理解委托!! 1.如果说委托是一个类型,那么事件就是一个对象! 2.事件的创建必须是借助某个委托类型来完成的! 3.也就是说,委托是事件的类型,事件本身是个对象!! 4.所以,事件 ...