四则运算生成器

代码用c语言编写支持 分数加减,小学加减乘除的计算。

需求分析:小学生需要练习加减乘数以及分数的计算 包括判断答案的对错与否并且在错误的时候给予正确的答案。

 

采用随机生成数的方式自动生成随机的加减乘除,用if条件判断语句来确定答案是否正确。

 

分数的加减用itoa()函数将整型转换为字符型在进行分数的大小的比较。

题目需求:

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

 

源代码如下:

int GYS(int g,int h)//最大公约数
{
int tmp;

if(g==h)
return g;
if(g<h)
{
tmp=g;
g=h;
h=tmp;
}
while(g%h!=0)
{
tmp=g;
g=h;
h=tmp%h;
}
return h;
}
int Fnum(int n,int m,int j,int k,char ys)
{
int z;
int FM,FZ; //分母和分子

z=GYS(m,k); //求最大公约数

FM=m*k/z;
if(ys=='+')
FZ=n*(FM/m)+j*(FM/k);
else
FZ=n*(FM/m)-j*(FM/k);

if(FZ!=0)
{
z=GYS(FZ,FM);
FZ=FZ/z;
FM=FM/z;
printf("%d/%d\n",FZ,FM);
}
else
printf("0\n");
return 0;
}

if(q==1)
{
for(i=0;i<x;i++)
{
n=rand()%10+1;
m=rand()%10+1;
printf("%d+%d=",n,m);
scanf("%d",&a);
if(a==n+m)printf("true");
else printf("false");
printf("\n");
}}
if(q==2)
{
for(i=0;i<x;i++)
{
n=rand()%10+1;
m=rand()%10+1;
while(n<m)
{
n=rand()%10+1;
m=rand()%10+1;
}
printf("%d-%d=",n,m);
scanf("%d",&b);
if(b==n-m)printf("true");
else printf("false");
printf("\n");
}
}
if(q==3)
{
for(i=0;i<x;i++)
{
n=rand()%10+1;
m=rand()%10+1;
printf("%d*%d=",n,m);
scanf("%d",&c);
if(c==n*m)printf("true");
else printf("false");
printf("\n");

}
}
if(q==4)
{

for(i=0;i<x;i++)
{
n=rand()%10+1;
m=rand()%10+1;
while(m==0)
{
m=rand()%10+1;
}
printf("%d/%d=",n,m);
scanf("%f",&d);
if(d==n/m)printf("true");
else printf("false");
printf("\n");

}
}

if(q==5)
{
char a[20];
char b[9];
char c[9];


char ys;
for(i=0;i<x;i++)
{
n=rand()%10+1;
m=rand()%10+1;
j=rand()%10+1;
k=rand()%10+1;

while(m==0||k==0)
{
m=rand()%10+1;
k=rand()%10+1;
}
t=rand()%2+1;
if(t==1)ys='+';
else ys='-';
printf("%d/%d%c%d/%d=",n,m,ys,j,k);
scanf("%s",&a);
Fnum(n,m,j,k,ys);

itoa(FZ,b,10);
itoa(FM,c,10);
strcat(b,"/");
strcat(b,c);
if(strcmp(b,a)==0)printf("true\n");
else printf("false\n");
}
}

return 0;
}

以下是运行原图

PSP2.1

Personal Software Process Stages

Time (%) Senior Student

Time (%)

Planning

计划

1h

2h

· Estimate

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

2day

3day

· Analysis

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

6h

6h

· Design Review

设计复审

30min

20min

· Coding Standard

代码规范

30min

15min

· Design

具体设计

2h

1.5h

· Coding

具体编码

1day

2day

· Code Review

代码复审

3h

3h

posted @ 2017-03-03 16:02  栗海辉  阅读(542)  评论(1编辑  收藏  举报