c语言编程数学游戏

#包含?& ltstdio.h & gt

#包含?& 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;

}