一、实验目的以及项目来源:

目的:

1、帮助老师产出随机的海量四则运算符的运算题目。

2、每次题目的产出均为随机,增强同学的四则运算能力。

项目来源:

项目来源于软件开发与创新课程的结对编程,对100以内的四则运算进行计算、练习和出题。

对项目的分析:

本系统使用C++语言编程,运用Dev C++进行开发,拥有计算题目、自动出题和进行练习三个功能,可以对结果100以内的四则运

算进行灵活运用。自动出题使用随机函数可自由选择系统写出多少道拥有两个运算符的四则运算,计算题目则可计算任意个运算符

的四则运算,进行练习写出答案后系统会自动判别对错。

二、实验环境:

Windows系统

通过Dev-C++,Visual Studio进行编写

三、实验内容:

1、随机生成两个运算符的四则运算习题,节约老师时间教学备课,大大提高教学效率。

2、采用某种抽象意义上的街机闯关方式,高强度不间断实时反馈正否的训练方式。

3、学生在完成题目练习后可以加大题目数量,借此大幅提高自身的心算或笔算能力,为将来的数学学习打下坚实的运算基础。

四、编程中遇到的问题:

1、随机数计算过程中,运算符的优先级混乱输出的正确有时错误。

2、对于结果有小数点的四则运算,系统给出的答案往往是经过四舍五入的整数,结果并不精准。

五、解决方案:

1、通过对优先级代码进行优化使得优先级计算准确。

改进过后的代码:

 if (b != '*' && d != '*' && b != '/' && d != '/'){
if(b == '+') result = a+c;
if(b == '-') result = a-c; if(d == '+') result = result + e;
if(d == '-') result = result - e;
}
//2.2 d 的优先级高 else if (b == '+'){
if(d == '*'){
result = c * e; result = result + a;
}
else if(d == '/') {
if(c%e != 0) result = -1;
else{result = c / e; result = result + a;}
}
}
else if (b == '-'){
if(d == '*'){
result = c * e; result = a - result;
}
else if(d == '/') {
if(c%e != 0) result = -1;
else{result = c / e; result = a - result;}
}
} // 2.3 b 的优先级高
else if (d == '+'){
if(b == '*'){
result = a * c; result = result + e;
}
else if(b == '/') {
if(a%c != 0) result = -1;
else{result = a / c; result = result + e;}
}
}
else if (d == '-'){
if(b == '*'){
result = a * c; result = result - e;
}
else if(d == '/') {
if(c%e != 0) result = -1;
else{result = c / e; result = result - e;}
}
}

2、定义数据时将int改为double,结果输出时可以保留小数点后两位,使结果更加精准。

六、运行截图与流程:

流程:

第一步:编程序,循环进行如下的处理过程;计算机判断对错。
第二步:由计算机生成简单的四则运算题;
第三步:用户给出答案;
第四步:计算机判断对错;
第五步:计算机反馈答案是否正确,若错误则提供正确答案;
第六步:只要用户不停止程序,程序一直推出新的计算题目。

运行截图:

 1、暴躁不愿意认真做题的学生                                             2、认真学习但是效果不佳的学生

                                             

   3、认真学习且效果一流的学生

   

七、代码清单

#include<bits/stdc++.h>
using namespace std; //1. 随机生成运算符
char Create_Signal(){
char signals[4] = {'+','-','*','/'};
// 注意,除法只输出能够整除的情况
  // 注意,乘除法连续出现题目难度将严重超纲
  // 故而在运行过程中出现此类问题会将答案自动归为0

return signals[rand()%4];
} //2. 结果计算
int Result_100(int a, char b, int c, char d, int e){
int result;
//2.1 只有加减运算符,不需要考虑优先级
if (b != '*' && d != '*' && b != '/' && d != '/'){
if(b == '+') result = a+c;
if(b == '-') result = a-c; if(d == '+') result = result + e;
if(d == '-') result = result - e;
}
//2.2 d 的优先级高 else if (b == '+'){
if(d == '*'){
result = c * e; result = result + a;
}
else if(d == '/') {
if(c%e != 0) result = -1;
else{result = c / e; result = result + a;}
}
}
else if (b == '-'){
if(d == '*'){
result = c * e; result = a - result;
}
else if(d == '/') {
if(c%e != 0) result = -1;
else{result = c / e; result = a - result;}
}
} // 2.3 b 的优先级高
else if (d == '+'){
if(b == '*'){
result = a * c; result = result + e;
}
else if(b == '/') {
if(a%c != 0) result = -1;
else{result = a / c; result = result + e;}
}
}
else if (d == '-'){
if(b == '*'){
result = a * c; result = result - e;
}
else if(d == '/') {
if(c%e != 0) result = -1;
else{result = c / e; result = result - e;}
}
} return result;
} int main(){
srand(time(NULL));
int flag = 0;
while(flag < 100){
int a = rand()%100;
char b = Create_Signal();
int c = rand()%100;
char d = Create_Signal();
int e = rand()%100;
int result = Result_100(a,b,c,d,e); if(result<=100 && result>=0){
cout << a << " " << b <<" " << c << " " << d <<" " << e << " = ";
flag++;
int answer = 0;
cin >> answer;
if(answer == result) cout << "答案正确!\n\n";
else cout << "答案错误!\n" << "正确答案为:" << result << "\n\n";
} } return 0;
}

八、心得体会

  在这次结对编程的过程中我充分体会到了结对编程的优缺点,结对编程在编写代码时的效率不一定很高,但是在避免高频率的BUG上有他独到的地方,代码错误率更低,代码质量更高。

但是结对编程的局限性也不小,它的高效会受限于结对两人的熟悉度,所以两个人刚开始结对编程时需要一段时间来适应。同时与一个人编程相比较,结对编程有很多优点。比如我自己写代

码时不太注意编程规范,所以代码风格不是很优秀,再次读自己写的代码时就像看天书一样,可读性很差,但是两人结对编程的话两人可以互相商量变量命名等事宜,一个人也可以提醒代码

规范的问题。总而言之,结对编程是一个见仁见智的编程方式。

基于C语言的小学生四则运算出题器的更多相关文章

  1. EGener2四则运算出题器

    项目源码: https://git.coding.net/beijl695/EGener2.git (代码纯属原创,设计细节不同,请思量) 项目发布后,由于期间各种事情,耽搁至最后一天交付.这次的项目 ...

  2. 小学生四则运算出题软件-基于java控制台的实现

    .题目描述: 1. 使用 -n 参数控制生成题目的个数,例如 Myapp.exe -n 10 -o Exercise.txt 将生成10个题目. 2. 使用 -r 参数控制题目中数值(自然数.真分数和 ...

  3. C++四则运算出题器---有答案版

    一.实验题目 四则运算扩展----能接受答案并判断对错然后给出成绩. 二.实验思路 在每次输出算式后面输入答案,然后判断对错,对则统计. 稍微优化了一下界面. 三.代码 // 12345.cpp : ...

  4. 四则运算出题器(C++)-BUG修复

    定制题目数量这个功能测试: (1)输入题目数为负数时: 可正确处理: (2)输入题目数量为0时: 可正确处理: (3)输入题目数量为小数时: 程序运行出错: 错误分析: 因为代码中题目数量的变量Que ...

  5. 四则运算出题器(c++)

    一.设计思路 这次版本加入了一下功能: 可定制题目的数量:修改循环次数: 可以定制每行打印的题目数和行间距的大小(当前题目序号可以整除定制数时输出输入的行间距个换行符): 可以定制算式的范围(修改随机 ...

  6. paperOne基于java web的简易四则运算出题网站

    项目成员:张金生     张政 需求概要 1.运算数均为正整数 2.包含的运算符有+,-,*,/ 3.除法运算结果为整除运算 4.批量生成题目并判题 核心功能分析 1.题目生成——java后端 题目生 ...

  7. 结对编程——paperOne基于java web的简易四则运算出题网站

    项目成员:张金生     张政 需求分析: 1.要进行四则运算: 2.运算题目随机: 3.进行对错判断: 4.整数运算. 程序概要: 1.用JSP实现: 2.用户可选择题目数量: 3.答题页用表格列出 ...

  8. 小学生四则运算出题程序 无操作界面java版 简单的运用java中一些基本操作

    这是本学期java课中实验大纲里的第一个实验,这里简单做了一个无用户界面版本. import java.util.Random; import java.util.Scanner; public cl ...

  9. C语言基于GTK+Libvlc实现的简易视频播放器

    小编心语:现下,各种视频播放软件层出不穷,竞争也越演越烈,不知道大家有木有这个想法,小编有时在想能不能做一款属于自己的视频播放器呢~小编特意去实验楼,整理出了这篇关于如何实现简易视频播放器的博文.简易 ...

  10. 基于C# 语言的两个html解析器

    基于C# 语言的两个html解析器 1)Html Agility Pack http://nsoup.codeplex.com/ 代码段示例: HtmlDocument doc = new HtmlD ...

随机推荐

  1. ABC136 E - Max GCD 题解

    题面 给定一个长度为 $N$ 的整数序列:$A_1, A_2, \ldots, A_n$. 您可以执行以下操作 $0 \sim K$ 次: 选择两个整数 $i$ 和 $j$,满足 $i \ne j$ ...

  2. HTML学习笔记4----更多元素

    随笔记录方便自己和同路人查阅. #------------------------------------------------我是可耻的分割线--------------------------- ...

  3. SPI接口(续一)

    SPI接口共涉及到11个寄存器,下面就来对它们进行具体分析. 先来看SPI配置寄存器CFG,下表是它的全部位结构,其地址分别为0x40058000(SPI0),0x4005C000(SPI1). (1 ...

  4. Harbor离线安装

    一.安装docker-compose 1-1. #安装方式一 curl -SL https://github.com/docker/compose/releases/download/v2.11.2/ ...

  5. Es6中模块引入的相关内容

    注意:AMD规范和commonJS规范 1.相同点:都是为了模块化. 2.不同点:AMD规范则是非同步加载模块,允许指定回调函数.CommonJS规范加载模块是同步的,也就是说,只有加载完成,才能执行 ...

  6. GOF23种设计模式是哪些

    设计模式实践里面提供了许多经久不衰的解决方案和最佳方案.这里,GOF 设计模式主要分为三大类:创建模式.结构模式和行为模式.创建模式对于创建对象实例非常有用.结构模式通过处理类或对象的组合来作用于企业 ...

  7. html让容器居中,css让容器水平垂直居中的7种方式

    这篇文章主要为大家详细介绍了css让容器水平垂直居中的7种方式,具有一定的参考价值,感兴趣的小伙伴们可以参考一下 这种css布局平时用的比较多,也是面试题常出的一个题,网上一搜一大丢,不过还是想自己总 ...

  8. CSS3-background-image渐变

    实现效果如下: 观察发现鼠标放上去的时候出现了三个变化,渐变背景,文字位移和图片放大. 渐变背景:background-image: linear-gradient(transparent,rgba( ...

  9. Tomcat 性能监控与调优

    Tomcat 性能监控与调优 Tomcat 远程 Debug JDWP bin/startup.sh 修改最后一行(添加 jpda) exec "$PRGDIR"/"$E ...

  10. 用java读取Excel并依据模板图生成对应的图片

    package test; import java.awt.*; import java.awt.image.BufferedImage; import java.io.*; import java. ...