c语言编程数学游戏
#包含?& ltstdlib.h & gt
#包含?& lttime.h & gt
#包含?& ltmalloc.h & gt
#定义?z_Size?3?//随机数?整数的最大位数可以自由修改,但总位数不能超过变量类型。
#定义?x_Size?3?//随机数?最大十进制数字
#定义?tmN?10?//默认情况下,生成的主题数为10。
typedef?enum?{?真=1,?false=0}?布尔型;
typedef?struct?蒂姆
{
int?id;?//题号增加。
双倍?num 1;//操作数1
双倍?num2//2号操作
夏尔?f;//运算符
双倍?n;//操作结果
布尔?旗帜;//真:正确答案?;回答错误。
} TM
双倍?power10(int?M)//计算10的幂?支持负面力量
{
int?我;
双倍?sum = 1;
如果(m==0)
回归?总和;
for(I = 0;我& ltABS(m);i++)
sum = sum * 10;
如果(m & gt0)
回归?总和;
如果(m & lt0)
回归?1/sum;
回归?-1;
}
int?主()
{
srand(time(NULL));
int?zSize,xSize,I,fn,false _ count = 0;
双倍?xPow10,ansr
TM?TMS[tmN];
for(I = 0;我& lttmNi++)
{
zSize = rand()% z _ Size;
xSize = rand()% x _ Size;
xpow 10 = power 10(xSize);
tms[i]。id = I+1;
TMS[I]. num 1 = rand()%(int)power 10(zSize)+(double)(rand()%(int)xpow 10)/xpow 10;
TMS[I]. num 2 = rand()%(int)power 10(zSize)+(double)(rand()%(int)xpow 10)/xpow 10;
fn = rand()% 3;//随机运算符
If(fn==0)//加法
{
tms[i]。f = '+';
tms[i]。n = TMS[I]. num 1+TMS[I]. num 2;
}
If(fn==1)//加法
{
tms[i]。f = '-';
tms[i]。n = TMS[I]. num 1-TMS[I]. num 2;
}
If(fn==2)//加法
{
tms[i]。f = ' *
tms[i]。n = TMS[I]. num 1 * TMS[I]. num 2;
}
If(fn==3)//加法
{
tms[i]。f = '/';
tms[i]。n = TMS[I]. num 1/TMS[I]. num 2;
}
Printf ("Title %d,请计算:%lf%c%lf=?\ n回答: ",TMS [I]。ID,TMS [I]。编号1,TMS [I]。f,TMS [I]。num 2);
scanf("%lf ",& ampansr);
if(abs(tms[i].n-ansr)& lt;(1/power10(zSize)))
tms[i]。flag = true
其他
tms[i]。flag = false
}
printf(" \ n-\ n ");
for(I = 0;我& lttmNi++)
{
if(tms[i]。flag==false)
{
false _ count++;
Printf("问题%d的答案错误,答案应该是:%lf\n ",tms[i]。id,tms[i]。n);
}
}
Printf ("%d个正确答案和%d个错误\ n ",TMN-错误计数,错误计数);
回归?0;
}