用C++实现编写一定数量的四则运算数学题并检验结果

如何用C语言实现编写一定量的四则运算题,并检验结果,要求数字的范围在10~100之间?下面是一个算法。

首先,要考虑到需要调用随机生成数字的函数,在函数一开始声明。然后定义数组,存储所需要的数字。再提示输入你所需要的题目的个数,然后用随机函数生成这些数字,对于减法结果出现负数与分数出现假分数,用判断语句先判断是否出现上述的情况,如果出现,重新生成新的数。然后提示输入计算的结果,再输出真正的结果,以便于比较对错。这里定义了两种数组,一种是整形,一种是浮点型,这是为了方便最后结果的计算,最后的结果以两位小数的形式输出,程序结束。

下面是具体的C++代码:

#include <stdio.h>
#include <stdlib.h>
main()
{
int i,j,n,a[1000],b[1000],c[1000],d[1000],e[1000],f[1000];//定义6个字符数组存储数字
float answer1[1000],a1[1000],b1[1000],c1[1000],d1[1000],e1[1000],f1[1000];//定义7个双精度数组计算结果并存储结果
printf("请输入题目个数: ");
scanf("%d",&j);//输入题目个数
for(i=0;i<j;i++)
{
a[i]=rand()%90+10;//选取10~90之间的任意一个数
b[i]=rand()%90+10;
c[i]=rand()%90+10;
while((b[i]<c[i])||(b[i]==c[i]))//判断减法是否结果为负数,如果为负重新再生成一个数
{
c[i]=rand()%90+10;
}
d[i]=rand()%90+10;
e[i]=rand()%90+10;
f[i]=rand()%90+10;//继续生成剩余数字
while((a[i]>f[i])||(a[i]==f[i]))//判断分数是否为真分数,若不是,重新生成
f[i]=rand()%90+10;
}
printf("计算下列各题: ");
for(n=0;n<j;n++)
printf("%d/%d+(%d-%d)×%d÷%d ",a[n],f[n],b[n],c[n],d[n],e[n]);//输出最终的算式
printf("请输入题目答案: ");
for(i=0;i<j;i++)
scanf("%f",&answer1[i]);
for(i=0;i<j;i++)
{a1[i]=a[i];
 b1[i]=b[i];
 c1[i]=c[i];
 d1[i]=d[i];
 e1[i]=e[i];
 f1[i]=f[i];
}//提示输入你算得的结果
printf("正确答案: ");
for(i=0;i<j;i++)
{
printf("%.2f ",(float)(a1[i]/f1[i]+(b1[i]-c1[i])*d1[i]/e1[i]));//输出正确结果
}
return 0;
}

运行结果:

此程序实现了加减乘除和分数的计算,并能够正确的以两位小数的形式输出最终结果。但是此程序还有两个缺陷,它的每一道算式题的数字个数是一定的,而且运算符号的位置也是固定的,而且结果以两位小数的形式输出,不是以分数的形式输出。

原文地址:https://www.cnblogs.com/njzy123456/p/9774294.html