第三次作业:个人项目-小学四则运算 “软件”

本次作业要求来自:https://edu.cnblogs.com/campus/gzcc/GZCC-16SE1/homework/2166

我的github远程仓库的地址:https://github.com/879539613/IT-apk

第一部分:要求

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

第二部分:设计

1.需求分析

    1.实现以正整数组成的3个运算符的四则等式
    2.结果必须大于0,结果精确到小数点后一位。
    3.可以随用户输入具体的题目数
      4.可判断用户输入值的对错,并给出用户的正确题目数和准确率
      5.要求能出和真分数 (二分之一, 十二分之五,等)相关的练习题
2.功能设计
      1.给定一个参数,由用户自定义,进行循环输出随机四则运算
      2.判断用户输入值对错
      3.计算用户的正确题目数和准确率
 

第三部分:实现

      运算方法:四则运算的的优先级,即确定优先*,/,后+,-
                       同时,还要判断用户输入对错,若对则Y++(计算正确条数+1)
      运算符和运算操作方法:
                       为了让运算符为1-4,即+,-,*,/,
                       同时定义两参数,根据运算符的不同进行运算操作
示例:
 
一.在主函数中,定义参数n,由用户输入,while(counter<n)时停止,运用jisuan()函数来判断优先级
void main()
{
int counter=0,n,Y=0,Z;
float last;
printf("请输入四则运算题目数:");
scanf("%d",&n);
do{
Z=jisuan();
counter++;/*对计算条数的加一*/
if(Z==1)
{
Y++;
}
}while(counter<n);
last=(float)Y/(float)n*100;
printf("你答对的题目条数为:%d。\n准确值:%.1f%。\n",Y,last);//对最后结果的输出
system("pause");
}

 

二.在jisuan()函数中,通过用if()优先判断①是否*,/ ,再判断②是否*,/,即可优先运算

if(c>2){//先判断第一个运算符是否乘,除}

else
    {
    if(f>2)//再判断第二个运算符是否乘,除

else{}

}

 

在逻辑思考中,我认为如果四则运算中有(),可利用switch()方法,用case罗列更简单些,目前需求中不需要括号,就不用了

在判断用户输入对错时,用if(fabs(e-d)>0.1)结果比较精确一位即可。

三.由于程序比较简单,代码亦有注释,就不多说了

 

第四部分:解决

问题1:当exe文件脱离c++环境而单独打开时,往往在最后运行时直接关闭

解决:在main函数末尾加 system("pause"); 使得程序执行完毕之后可以停留。

问题2:结果的值与用户输入值的对比,精确度不高

解决:为保持结果除法时的正确性用了绝对值fabs(),使结果精确到小数点后一位

问题3:运算符优先级逻辑思维不一样,导致本来的代码更冗长一些

解决:初始想法,2个运算符有4种情况,即以switch(),case方法

① +,- ②+,-

① +,- ②*,/

①*,/   ② +,-

①*,/   ②*,/

后改成

用if()优先判断①是否*,/ ,再判断②是否*,/,这样的话,代码尽可能少一些。

问题4:容错率低,如果用脸滚键盘的话,肯定报错

解决:由于只是初步设计,需要不断更新才能进一步优化,需要以后改进。。。

 

附图:统计表

PSP2.1

Personal Software Process Stages

Time Senior Student(h)

Time(h)

Planning

计划

0.5

0.5

· Estimate

估计这个任务需要多少时间

5

6

Development

开发

1

1.5

· Analysis

需求分析 (包括学习新技术)

0.01

0.01

· Design Spec

生成设计文档

0.5

0.5

· Design Review

设计复审

0.1

0.1

· Coding Standard

代码规范

0.1

0.1

· Design

具体设计

0.5

0.3

· Coding

具体编码

3

3.5

· Code Review

代码复审

0.1

0.3

· Test

测试(自我测试,修改代码,提交修改)

0.1

0.1

Reporting

报告

0.5

0.6

Test Report

测试报告

0

0

·workload

计算工作量

0

0.3

·correction

并提出过程改进计划

0

0

posted @ 2018-10-08 01:36  代码搬运小生  阅读(274)  评论(6编辑  收藏  举报