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

时间:2020-12-22 21:56:07

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

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

需求分析:
1.能随机生成整数和真分数四则运算。
2.要能判断用户答案的对错,对做错了的题目给出正确答案,并统计算出正确率。
3.能用参数控制生成题目个数。

设计实现:
1.通过两个函数分别实现整数和真分数运算。
2.采用随机生成12来选择调用哪个函数。
3.通过累加的方法计算正确体术,进而算出正确率。

部分代码

随机选取运算符

  

for(int m=0;m<n;m++){

int x=(int)rand()%2+1;

if(x==1){

ZSYS();

}

else if(x==2){

FSYS();

}

 

辗转相除法求最大公约数函数

int maxGYS(int a,int b){

return a%b==0?b:maxGYS(b,a%b);

}

int minGBS(int a,int b)

{

int min, max;

int r;

max
=a>b?a:b;

min
=a<b?a:b;

if(max%min==0)

return max;

while(max%min!=0)

{

r
=max%min;

max
=min;

min
=r;

}

return a*b/min;

}

 

整数运算

void integer()        

{

int g;

int x,y;

char op;

srand(time(
0));

x
=rand()%100+1;

y
=rand()%100+1;

op
=Operator();

cout
<<x<<op<<y<<"="<<endl;

cout
<<"请输入运算结果:";

if(op=='+') //整数“+”运算

{

cin
>>g;

if(g==x+y)

{

cout
<<"恭喜你答对了!"<<endl<<endl;

correct
++;

}

else

{

cout
<<"很遗憾你答错了,正确答案是:"<<x+y<<endl<<endl;

mistake
++;

}

}

else

if(op=='-') //整数“-”运算

{

cin
>>g;

if(g==x-y)

{

cout
<<"恭喜你答对了!"<<endl<<endl;

correct
++;

}

else

{

cout
<<"很遗憾你答错了,正确答案是:"<<x-y<<endl<<endl;

mistake
++;

}

}

else

if(op=='*') //整数“*”运算

{

cin
>>g;

if(g==x*y)

{

cout
<<"恭喜你答对了!"<<endl<<endl;

correct
++;

}

else

{

cout
<<"很遗憾你答错了,正确答案是:"<<x*y<<endl<<endl;

mistake
++;

}

}

else

if(op=='/') //整数“/”运算

{

cin
>>result;

element
=x;

denominator
=y;

maxNum
=maxNumber(element,denominator);

element
=element/maxNum;

denominator
=denominator/maxNum;

if(denominator!=1)

{



sprintf_s(answer,
"%d/%d",element ,denominator);

if (strcmp(answer, result) == 0)

{

cout
<<"恭喜你答对了!"<<endl<<endl;

correct
++;

}

else

{

cout
<<"很遗憾你答错了,正确答案是:"<<answer<<endl<<endl;

mistake
++;

}

}

else

{

sprintf_s(answer,
"%d",element);

if (strcmp(answer, result) == 0)

{

cout
<<"恭喜你答对了!"<<endl<<endl;

correct
++;

}

else

{

cout
<<"很遗憾你答错了,正确答案是:"<<answer<<endl<<endl;

mistake
++;

}

}

}

}

 

测试运行:

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

 

 

 

PSP2.1

Personal Software Process Stages

Time (%) Senior Student(/hour)

Time (%)(/hour)

· Planning

计划

3

4

· Estimate

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

45

60

· Analysis

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

6

6

· Coding Standard

代码规范

0.5

0.5

· Design

具体设计

1.5

3

· Coding

具体编码

30

35

· Test

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

2

2.5

Reporting

报告

1

1

总结:
1.通过测试基本能实现题目的需求,但仍有一些问题没有注意到,界面也很一般,仅能实现自动生成两个数字间的四则运算。

2.在进行代码调试时,总是犯了些小错误,浪费了很多时间。

3.用户需求分析还不到位