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