代码用c语言编写支持 分数加减,小学加减乘除的计算。
需求分析:小学生需要练习加减乘数以及分数的计算 包括判断答案的对错与否并且在错误的时候给予正确的答案。
采用随机生成数的方式自动生成随机的加减乘除,用if条件判断语句来确定答案是否正确。
分数的加减用itoa()函数将整型转换为字符型在进行分数的大小的比较。
题目需求:
-
- 除了整数以外,还要支持真分数的四则运算,真分数的运算,例如:1/6 + 1/8 = 7/24
- 运算符为 +, −, ×, ÷
- 并且要求能处理用户的输入,并判断对错。
- 要求能处理用户输入的真分数, 如 1/2, 5/12 等
- 使用 -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 |