四则运算题目生成程序——基于控制台

题目描述

从《构建之法》第一章的 “程序” 例子出发,像阿超那样,花二十分钟写一个能自动生成小学四则运算题目的命令行 “软件”,满足以下需求:

除了整数以外,还要支持真分数的四则运算,真分数的运算,例如:1/6 + 1/8 = 7/24
运算符为 +,-,×,÷
并且要求能处理用户的输入,并判断对错,打分统计正确率。
要求能处理用户输入的真分数, 如 1/2, 5/12 等
使用 -n 参数控制生成题目的个数,例如执行下面命令将生成10个题目Myapp.exe -n 10
需求分析:

能够实现生成整数和分数的式子并实现计算;
能够控制生成式子的个数;
能够实现判断对错并计算正确率;

PSP2.1Personal Software Process StagesTime (%) Senior Student(/hour)Time (%)(/hour)
· Planning计划21.5
· Estimate估计这个任务需要多少时间4865
· Analysis需求分析 (包括学习新技术)610
· Coding Standard代码规范0.50.5
· Design具体设计1.53
· Coding具体编码3648
· Test测试(自我测试,修改代码,提交修改)11
Reporting报告12

代码:

{
while(s2==0)
s2=random();
cout<<s1<<"/"<<s2<<"=";
if(s1%s2==0)
{cin>>s5;
if(s5==s1/s2)
{
cout<<"right!"<<endl;right++;
}
else
{
cout<<"wrong!"<<endl;wrong++;
}
}
else
{
cin>>s5;cout<<"/"<<endl;cin>>s6;
a=s1;
b=s2;
for(c=a;c>=1&&c<=a;c--)
{
d=a%c;
e=b%c;
if(d==0&&e==0)
{
f=a/c;
g=b/c;
}
}
if((f==s5)&&(g==s6))
{
cout<<"right!"<<endl;right++;
}
else
{
cout<<"wrong!"<<endl;wrong++;
}
break;
}
}...//这是整数相除的情况

{
cout<<"("<<s1<<"/"<<s2<<")"<<"/"<<"("<<s3<<"/"<<s4<<")"<<"=";
cin>>s5;cout<<"/"<<endl;cin>>s6;
a=s1*s4;
b=s2*s3;
if(a>b)
{
for(c=b;c>=1&&c<=b;c--)
{
d=a%c;
e=b%c;
if(d==0&&e==0)
{
f=a/c;
g=b/c;
}
}
}
else
{
for(c=a;c>=1&&c<=a;c--)
{
d=a%c;
e=b%c;
if(d==0&&e==0)
{
f=a/c;
g=b/c;
}
}
}
if((f==s5)&&(g==s6))
{
cout<<"right!"<<endl;right++;
}
else
{
cout<<"wrong!"<<endl;wrong++;
}
break;
}
}
}
}
}//这是分数相除的情况。因为涉及分数的算法会比较复杂所以选择分开进行。

1113658-20170306221019125-1727739118.png

总结:因为自己平时对代码的接触不多,再这样的时间限制下要我独立完成这样一个有难度的作业真的是太吃力了,刚开始的时候是毫无头绪,之后通过百度参考代码以及在同学的帮助下,对一些已完成的项目代码进行了理解,知道了他们的项目进行的思路和实现方法,也学习到了很多以前不知道的头文件和算法。然后参照着,自己动手打代码,选择了一种很笨的方式,但也是比较容易接受和理解的思路。

代码地址:https://git.coding.net/sm201421123102/WYQ.git

转载于:https://www.cnblogs.com/yuzhouwudimeishaonv7/p/6512292.html

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值