博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
作业四:个人项目---小学四则运算
阅读量:6278 次
发布时间:2019-06-22

本文共 2990 字,大约阅读时间需要 9 分钟。

本次作业要求来自:

我的github远程仓库的地址:https://github.com/Ingramm/lxc

一、题目要求

像《构建之法》的人物阿超那样,写一个能自动生成小学四则运算题目的命令行 “软件”。

具体要求:任何编程语言都可以,命令行程序接受一个数字输入,然后输出相应数目的四则运算题目和答案。例如输入数字是 30, 那就输出 30 道题目和答案。 运算式子必须至少有两个运算符,运算数字是在 100 之内的正整数,答案不能是负数。 如:23 - 3 * 4 = 11。

扩展要求:

1) 要求能出和真分数 (二分之一, 十二分之五,等)相关的练习题。

2) 并且要求能处理用户的输入,并判断对错,打分统计。 要求能处理用户输入的真分数, 如 1/2, 5/12 等。

二、设计思路

开发工具:Code::Blocks

编程语言:C语言

代码主要函数:

main()函数、randomNumber(int n)函数、add(int m,int n)函数、jianfa(int m,int n)函数、chengfa(int m,int n)函数、chufa(int m,int n)函数。

代码实现思路:

用结构体定义运算式子,包含运算式子的属性。在main()函数中,用户输入式子数量后,调用randomNumber(int n)函数随机产生式子,并存入结构体变量中,然后通过switch语句来判断式子符号优先级,计算式子结果,并存入结构体变量中。最后判断用户输入的答案是否正确并给出本次做题总分。

三、主要代码

main()函数主要代码:

for(i=0;i
= 2 && formula[i].n <2) { switch(formula[i].m) { case 2: sum1[i] = chengfa(formula[i].firstNumber,formula[i].secondNumber); break; case 3: sum1[i] = chufa(formula[i].firstNumber,formula[i].secondNumber); break; } switch(formula[i].n) { case 0: formula[i].sum = add(sum1[i],formula[i].thirdNumber); break; case 1: formula[i].sum = jianfa(sum1[i],formula[i].thirdNumber); break; } } else if(formula[i].n >= 2 && formula[i].m <2) { switch(formula[i].n) { case 2: sum1[i] = chengfa(formula[i].secondNumber,formula[i].thirdNumber); break; case 3: sum1[i] = chufa(formula[i].secondNumber,formula[i].thirdNumber); break; } switch(formula[i].m) { case 0: formula[i].sum = add(formula[i].firstNumber,sum1[i]); break; case 1: formula[i].sum = jianfa(formula[i].firstNumber,sum1[i]); break; } }

randomNumber(int n)函数的主要代码:

void randomNumber(int n){    int i;    srand(time(NULL));    for(i=0;i

运算函数代码:

int add(int m,int n){    int sum = 0;    sum = m + n;    return sum;}int jianfa(int m,int n){    int sum = 0;    sum = m - n;    return sum;}int chengfa(int m,int n){    int sum = 0;    sum = m * n;    return sum;}int chufa(int m,int n){    int sum = 0;    sum = m / n;    return sum;}

四、运行结果

五、主要问题

主要问题:本次作业主要是用结构体来实现的,用结构体来对运算式子进行保存。但做完作业后,发现其实用结构体是有弊端的,在内存资源上,结构体数组要固定给它分配内存空间,如果用不完,就会出现内存浪费的情况,而用指针来对式子进行保存,就不用预留内存空间,就比结构体要好。不过,由于本次作业做好了,只能课后再进行更改。

六、时间估计

PSP2.1 Personal Software Process Stages Time Senior Student Time
Planning 计划 8 6
· Estimate 估计这个任务需要多少时间 12 10
Development 开发 85 80
· Analysis 需求分析 (包括学习新技术) 8 10
· Design Spec 生成设计文档 0 0
· Design Review 设计复审 3 5
· Coding Standard 代码规范 4 3
· Design 具体设计 10 15
· Coding 具体编码 30 30
· Code Review 代码复审 10 10
· Test 测试(自我测试,修改代码,提交修改) 15 30
Reporting 报告 9 6
· 测试报告 5 9
· 计算工作量 5 2
· 并提出过程改进计划 0

转载于:https://www.cnblogs.com/lxcbk/p/9790355.html

你可能感兴趣的文章
ItelliJ IDEA开发工具使用—创建一个web项目
查看>>
solr-4.10.4部署到tomcat6
查看>>
切片键(Shard Keys)
查看>>
淘宝API-类目
查看>>
virtualbox 笔记
查看>>
Git 常用命令
查看>>
驰骋工作流引擎三种项目集成开发模式
查看>>
SUSE11修改主机名方法
查看>>
jdk6.0 + Tomcat6.0的简单jsp,Servlet,javabean的调试
查看>>
Android:apk签名
查看>>
2(2).选择排序_冒泡(双向循环链表)
查看>>
MySQL 索引 BST树、B树、B+树、B*树
查看>>
微信支付
查看>>
CodeBlocks中的OpenGL
查看>>
短址(short URL)
查看>>
第十三章 RememberMe——《跟我学Shiro》
查看>>
mysql 时间函数 时间戳转为日期
查看>>
索引失效 ORA-01502
查看>>
Oracle取月份,不带前面的0
查看>>
Linux Network Device Name issue
查看>>