简单的四则运算题目生成及求值小程序 
程序发布至 https://github.com/zxt555/

1、实验目的与要求

(1)掌握软件项目个人开发流程。

(2)掌握Github上发布软件项目的操作方法。

2、实验内容和步骤
尝试按照《构建之法》第2章中2.3所述PSP流程,使用JAVA编程语言,独立完成一个包含3到5个数字的四则运算练习的命令行软件开发。题目参考:http://www.cnblogs.com/xinz/p/7417960.html
软件基本功能要求如下:
  • 程序可接收一个输入参数n,然后随机产生n道加减乘除练习题,每个数字在 0 和 100 之间,运算符在3个到5个之间。
  • 为了让小学生得到充分锻炼,每个练习题至少要包含2种运算符。同时,由于小学生没有分数与负数的概念,你所出的练习题在运算过程中不得出现负数与非整数,比如不能出 3/5+2=2.6,2-5+10=7等算式。
  • 练习题生成好后,将你的学号与生成的n道练习题及其对应的正确答案输出到文件“result.txt”中,不要输出额外信息,文件目录与程序目录一致。
  • 当程序接收的参数为4时,以下为输出文件示例。

题目要求
运算符为 +, −, ×, ÷
并且要求能处理用户的输入,并判断对错,打分统计正确率。
使用 -n 参数控制生成题目的个数,例如执行下面命令将生成10个题目
Myapp.exe -n 10

需求分析
•通过-n参数控制题目个数,通过-s参数执行对错检验输出正确率
•生成max=10以内的随机的整数,随机的 +, −, ×, ÷符号,组合成四则运算运算题目,输出到文本文件
•读入文本文件,解析表达式求值,对比用户的答案,统计正确率
•学习新技术 
◦栈
◦文件的读写
◦markdown
◦string流,string与int的相互转换
设计文档
用户输入命令行,程序根据命令行执行相应功能,Myapp.exe -n 10生成10道随机四则运算题目并输出到文本,Myapp.exe -s读入文本统计正确率并输出到控制台。

具体定义:

•运算符号只包含+, −, ×, ÷,=。没有括号。
•题目类型:[整数][符号][整数][符号][整数] 
操作数+运算符+操作数

程序架构:

•解析用户输入的命令行。Myapp.exe -n 10,Myapp.exe -s
•Myapp.exe -n 10 ,返回题目个数
•循环生成题目直到满足题目数n
•随机生成整数或真分数,运算符,组成一道题目string
•一道题目加上 ’=’ 一行,输出到文本文件
•Myapp.exe -s ,表达式求值并统计正确率
•从文本中逐行读入题目和答案string
•bool result(string one) 将string中算术表达式部分压入optr和opnd栈中计算出结果res,最后从string中解析出答案ans,比对答案,正确返回true,错误返回false。
-函数返回true则tc+1,false则fc+1。
•统计结果tc/(tc+fc)并输出到控制台
代码规范
-随机生成low到high之间的数字的函数int random(int low ,int high)
-表达式比对并进行答案比对bool result(string one)


  设计思路:  我做这个四则运算的思路是这样的:首先进入程序,在主函数里直接用一个while循环,循环里面判断并输出用户在10题的练习里做对了几题,当用户做完了10道题就给用户作出是否继续练习或者退出的选择;还有直接进入调用函数,调用函数首先是随机产生0~10的两个整数,四个符号(+ - *  /)用一个变量随机产生1~4的整数。每个数对应一个符号,用case语句实现。然后加入两个个判断:

1.防止“不够减”的语句,当选择减法且num1小于num2时不够减不够减的时候,用临时变量交换两个操作数;

2.防止“除数为0”的程序漏洞,当num2被随机取值到0时,就将num2强制置为1,做除法时,将num1的值强制赋值给num1*num2,防止不能整除;

然后电脑计算正确的结果提示用户输入答案并且电脑计算正确的结果。最后是判断用户是否答对了,答对了就返回1,不对则返回0(用来计算做对的题数)。以此循环!

这个程序的缺陷是,当用户输入答案时,若用户输入了一个非整型字符,系统会崩溃;还有只是0~10之间的简单的运算,把范围局限了,但可以改进。还有是不能进行小数的运算

代码说明:

include <stdio.h>

#include <stdlib.h>

void main() {

int n=0,count=0;  printf("\n欢迎使用小学生四则运算练习软件\n");

int ch=0;
 printf("\n欢迎使用小学生四则运算练习软件\n\n");
 while(1)
 {
  if(count==10)
  {
   printf("恭喜你在10道练习里做对了%d题! \n",n);
   printf("\t1.继续练习\n\t2.退出");
   scanf("%d",&ch);
   if(ch==2)
   {
   break;
   }
  }

n+=yusuan();  count++;

}

}

int yusuan()

{

int ranswer=0;   //正确答案

int uanswer=0;   //用户输入的答案

int t=0,n=0;    //临时变量

char op;       //运算类别

int num1=0;    //操作数1

int num2=0;    //操作数2

srand(time(NULL));  //初始化随机数

num1=rand()%10;   //取0—9之间的随机数

num2=rand()%10;

n=rand()%4+1;  switch(n)

{   case 1:    op='+';    break;

case 2:    op='-';    break;

case 3:    op='*';    break;

case 4:    op='/';    break;

}

//加入一条防止“不够减”的语句,当选择减法且num1小于num2时不够减

//不够减的时候,用临时变量交换两个操作数

if((op=='-') && (num1<num2))

{   t=num1;

num1=num2;

num2=t;

}

//防止“除数为0”的程序漏洞

//当num2被随机取值到0时,就将num2强制置为1

//做除法时,将num1的值强制赋值给num1*num2,防止不能整除

if(op=='/')

{

if(num2==0)

{    num2=1;   }

num1=num1*num2;

//防止num1不能被num2整除的语句  }

//输出测试题本身、提示用户输入

printf("   %d%c%d= ",num1,op,num2);

scanf("%d",&uanswer);

//程序计算正确结果

switch(op)

{   case '+':   ranswer=num1+num2;   break;

case '-':   ranswer=num1-num2;   break;

case '*':   ranswer=num1*num2;   break;

case '/':   ranswer=num1/num2;   break;

}

//评判,做对返回1,做错返回0

if(uanswer==ranswer)

{   printf("\t做对了!\n");

return 1;

}  else

{   printf("\t做错了!\n");

return 0;  }

}

运行结果:

PSP环节:

总结
•前期需求分析及设计文档 做的越详细越正确后期写代码就会越轻松。因为程序架构与流程有了,写代码时只需特定的地方写详细就好。如果一开始就写代码,没有架构后期调试就会很麻烦且代码臃肿。当然写好架构的前提是先学好一门语言。
•学习看和查英文帮助文档。毕竟网上的大多个人博客写不是很详细(写这个小程序就有这种感觉了)。
•认真学习C++一门。在各门语言之间转来转去实在混乱,通晓一门足以知晓其他语言的大体情况了。

转载于:https://www.cnblogs.com/zxt555/p/8612873.html

小学生四则运算练习的编程 软件工程相关推荐

  1. 四则运算java_小学生四则运算JAVA

    组员:黄浩格,何坤 一.项目说明 1题目:实现一个自动生成小学四则运算题目的命令行程序. 2说明: 自然数:0, 1, 2, -. • 真分数:1/2, 1/3, 2/3, 1/4, 1'1/2, - ...

  2. 201571030301/201571030302《小学生四则运算练习软件》结对项目报告

    Github地址 :https://github.com/Ahmatjan-IT/sizeyunsuanGUI 队友博客地址:http://www.cnblogs.com/dyh666/p/87191 ...

  3. 练习:Python 的字符串处理, 一个朴实无华的四则运算计算器,批量计算小学生四则运算表达式

    Python 官网:https://www.python.org/ Free:大咖免费"圣经"教程< python 完全自学教程>,不仅仅是基础那么简单-- My CS ...

  4. 基于JavaGUI的小学生四则运算练习软件

    资源下载地址:https://download.csdn.net/download/sheziqiong/85638970 一.需求分析 本次实验采用结对编程方式,设计开发一个小学生四则运算练习软件, ...

  5. 8岁上海小学生B站教编程惊动苹果CEO,库克亲送生日祝福

    点击上方"深度学习技术前沿",选择"星标"公众号 资源干货,第一时间送达 乾明 发自 凹非寺 量子位 出品 | 公众号 QbitAI 什么样的关系才能让库克亲自 ...

  6. 小学生 计算机编程 教程,面向小学生的C ++有趣编程(第一卷)配置教学资源课件完整版...

    难度适中,易学易教的"面向小学生的C ++趣味编程"教科书是小学信息学教学的重要组成部分. 选择80多个接近小学生学习生活的例子,结合小学生的认知规律,激发孩子的兴趣,关注程序,适 ...

  7. 小学生能学计算机编程是什么,小学生为什么要学编程?小学生学习编程怎么样?...

    日前,越来越多的家长开始让自己的孩子去学习编程,而孩子们经过一段时间的学习,也能在老师的指导下完成一个APP或一款游戏.如今,编程真的就像写作一样重要正逐渐成为现实!过去,你离不开写作,未来,孩子们也 ...

  8. 南京 学计算机的学校,南京小学生暑假学计算机编程去哪家学校好

    南京小学生暑假学计算机编程去哪家学校好 南京小学生暑假学计算机编程去哪家学校好,推荐 南京童程童美专注于中国6-18岁青少儿编程教育的品牌.依托集团16年积累的互联网教育经验和百余名IT教研团队优势, ...

  9. 小学生四则运算考试系统Java

    作为大一的新生,突然出现一个实训课程,让原本平静的生活变得很充实,学校要求写一个小学生四则运算考试系统的项目,包括自动出题.自动判断对错并给出得分.自动给出正确答案,同时还有倒计时,在经过几天的努力之 ...

最新文章

  1. WIN7下黑苹果懒人版硬盘安装not a HFS partition注意问题
  2. linux c 崩溃调试方法
  3. python九九乘法口诀表-python打出九九乘法口诀表
  4. java 使用.aar_java - 使用grad解析aar库的传递依赖性
  5. qt checkbox 选中事件_丽声事件 | 十堰市第五届全国青少儿播音主持等级考试圆满落幕...
  6. Searchsploit
  7. 使用sqlserver日期函数获取当前日期
  8. 如何理解HTTP协议的 “无连接,无状态” 特点?
  9. 天津计算机专业排名2015,2015年南开大学计算机类专业最低分是多少?
  10. js获取数组最大值的索引_数组中最大值的返回索引
  11. 语义分割模型架构演进与相关论文阅读
  12. unity3d android自动打包,Unity自动化打包(二)
  13. 抖音短视频矩阵系统源代码开发
  14. 怎么彻底关闭wps热点 wps热点弹窗怎么永久关闭
  15. Python爬虫教程入门(附源码)
  16. Haproxy服务监控
  17. 使用Domain-Driven创建Hypermedia API
  18. html全屏显示两个显示器,google-chrome – 跨多个显示器的Windows / Chrome / ATI /浏览器全屏...
  19. 前车之鉴:从被回绝的系列原因出发,解读应聘阿里的注意事项
  20. shader篇-阴影

热门文章

  1. Codeforces 553D Nudist Beach(图论,贪心)
  2. YOLOv8+tracking与YOLOv5+tracking performance score对比
  3. 【c语言】虚数的输出
  4. 外企到底要招聘什么样的人
  5. DHC插件的下载与安装
  6. PMP每日一练 | 考试不迷路-4.28
  7. 1995-2018,20余年技术老兵经历的沧海桑田
  8. Disk Drill — Mac 数据恢复软件试用 教程 恢复删除文
  9. 微信小程序学习笔记( 自定义组件 )
  10. 锂电池健康状态估算方法综述