#include?<stdlib.h>
#include?<time.h>
#include?<math.h>
#define?NUM 50
int?main()
{
int?n[NUM]; //?第壹個數
int?m[NUM]; //?第二個數
char?o[NUM]; //?運算符
int?result[NUM]; //?結果
int?count?=?0; //?產生的題目計數
int?i; //?臨時循環變量
int?op; //?操作符號
int?temp; //?臨時交換用變量
int?div; //?判斷除數是否為零
int?ditto; //?判斷是否否重復
FILE?*fp;
fp?=?fopen("data.txt",?"w"); //?打開文件
srand(time(NULL)); //?使用隨機數種子
while?(count?!=?NUM)
{
n[count]?=?abs(rand()?%?500); //?這裏寫?500?以內的話,?妳要求結果也是?500?以內,?基本上產生不了乘法除法的運算式子,?建議寫?30
m[count]?=?abs(rand()?%?500);
op?=?abs(rand()?%?4); //?隨機的運算符
result[count]?=?0;
div?=?1; //?默認每次進入除數不為零
ditto?=?0; //?默認每次進入為不重復?
switch?(op)
{
case?0:
result[count]?=?n[count]?+?m[count];
o[count]?=?'+';
break;
case?1:
if?(n[count]?<?m[count])
{
temp?=?n[count];
n[count]?=?m[count];
m[count]?=?temp;
}
o[count]?=?'-';
result[count]?=?n[count]?-?m[count];
break;
case?2:
o[count]?=?'x';
result[count]?=?n[count]?*?m[count];
break;
case?3:
if?(m[count]?!=?0)
{
o[count]?=?'/';
result[count]?=?n[count]?/?m[count];
}
else
{
div?=?0;
}
break;
default:
break;
}
if?(div?==?0)
{
continue;
}
if?(n[count]?<=?500?&&?m[count]?<=?500?&&?result[count]?<=?500) //?基本條件
{
if?(op?==?3)
{
if?(result[count]?*?m[count]?!=?n[count]) //?判斷除法可能除不盡,?有余數的情況
{
continue;
}
}
for?(i?=?0;?i?<?count;?i++) //?檢查此題目是否重復
{
if?(n[i]?==?n[count]?&&?m[i]?==?m[count]?&&?result[i]?==?result[count]?&&?o[i]?==?o[count])//?判斷第壹個數,?第二個數,?操作符號,?結果是否都相同,?相同表示此題目已有
{
ditto?=?1;//?標記為重復
break;
}
}
}
else
{
continue;
}
if?(ditto?==?1) //?重復數據處理,?重新生成數據
{
continue;
}
count++;//?計數
}
for?(i?=?0;?i?<?NUM;?i++) //?將符合的數據寫入文件
{
fprintf(fp,?"%d:?%d?%c?%d?=?%d\n",?i?+?1,?n[i],?o[i],?m[i],?result[i]);
}
fclose(fp); //?關閉文件
return?0;
}