点击查看代码
int answers(int y,int num,int num1,int num2,int num3,char signal1,char signal2,int r)//生成答案
{
int ans,a,t,c=0;
FILE *fp;
FILE *fb;
fp=fopen("Answers.txt","a");
fb=fopen("Exercises.txt","a");
if(num==1)
{
int ans1,ans2;
switch(signal1)
{
case '+':
ans=num1+num2;
fprintf(fp,"答案%d:%d\n",y,ans);
fclose(fp);
fprintf(fb,"题目%d:%d + %d = \n",y,num1,num2);
fclose(fb);
break;
case '-':
if(num1<num2)
{
t=num1;
num1=num2;
num2=t;
}
ans=num1-num2;
fprintf(fp,"答案%d:%d\n",y,ans);
fclose(fp);
fprintf(fb,"题目%d:%d - %d = \n",y,num1,num2);
fclose(fb);
break;
case 'x':
ans=num1*num2;
fprintf(fp,"答案%d:%d\n",y,ans);
fclose(fp);
fprintf(fb,"题目%d:%d x %d = \n",y,num1,num2);
fclose(fb);
break;
case '/':
a=gcd(num1,num2);
ans1=num1/a;
ans2=num2/a;
c=0;
while(ans1>ans2)
{
ans1=ans1-ans2;
c++;
}
if(c>0)
{
fprintf(fp,"答案%d:%d'%d/%d\n",y,c,ans1,ans2);
fprintf(fb,"题目%d:%d / %d = \n",y,num1,num2);
}
if(c==0)
{
fprintf(fp,"答案%d: %d/%d\n",y,ans1,ans2);
fprintf(fb,"题目%d:%d / %d = \n",y,num1,num2);
}
fclose(fb);
fclose(fp);
break;
}
}
if(num==2)
{
if(signal2=='x'&&signal1!='/')
{
int ans1;
ans1=num2*num3;
switch(signal1)
{
case '+':
ans=num1+ans1;
fprintf(fp,"答案%d:%d\n",y,ans);
fclose(fp);
fprintf(fb,"题目%d:%d + %d x %d = \n",y,num1,num2,num3);
fclose(fb);
break;
case '-':
do{
num1=random(r);
num2=random(r);
num3=random(r);
}while(num1-num2*num3<0);
ans=num1-num2*num3;
fprintf(fp,"答案%d:%d\n",y,ans);
fclose(fp);
fprintf(fb,"题目%d:%d - %d x %d = \n",y,num1,num2,num3);
fclose(fb);
break;
case 'x':
ans=num1*ans1;
fprintf(fp,"答案%d:%d\n",y,ans);
fclose(fp);
fprintf(fb,"题目%d:%d x %d x %d = \n",y,num1,num2,num3);
fclose(fb);
break;
}
}
else
if(signal2=='/'&&signal1!='/')
{
int ans1,ans2;
c=0;
a=gcd(num2,num3);
ans1=num2/a;
ans2=num3/a;
while(ans1>ans2)
{
ans1=ans1-ans2;
c++;
}
switch(signal1)
{
case '+':
c=num1+c;
fprintf(fp,"答案%d:%d'%d/%d\n",y,c,ans1,ans2);
fprintf(fb,"题目%d:%d + %d / %d = \n",y,num1,num2,num3);
fclose(fb);
fclose(fp);
break;
case '-':
do{
num1=random(r);
num2=random(r);
num3=random(r);
}while((num1-num2/num3)<0||num3==0);
c=num1-c;
fprintf(fp,"答案%d:%d'%d/%d\n",y,c,ans1,ans2);
fclose(fp);
fprintf(fb,"题目%d:%d - %d / %d = \n",y,num1,num2,num3);
fclose(fb);
break;
case 'x':
int ans1;
c=0;
ans1=num1*num2;
a=gcd(ans1,num3);
ans1=ans1/a;
ans2=num3/a;
while(ans1>ans2)
{
ans1=ans1-ans2;
c++;
}
fprintf(fp,"答案%d:%d'%d/%d\n",y,c,ans1,ans2);
fclose(fp);
fprintf(fb,"题目%d:%d x %d / %d = \n",y,num1,num2,num3);
fclose(fb);
break;
}
}
if(signal1=='/')
{
int ans1,ans2;
c=0;
switch(signal2)
{
case '+':
a=gcd(num1,num2);
ans1=num1/a;
ans2=num2/a;
c=0;
while(ans1>ans2)
{
ans1=ans1-ans2;
c++;
}
c=c+num3;
fprintf(fp,"答案%d:%d'%d/%d\n",y,c,ans1,ans2);
fclose(fp);
fprintf(fb,"题目%d:%d %c %d %c %d = \n",y,num1,signal1,num2,signal2,num3);
fclose(fb);
break;
case '-':
a=gcd(num1,num2);
ans1=num1/a;
ans2=num2/a;
c=0;
while(ans1>ans2)
{
ans1=ans1-ans2;
c++;
}
do{
num3=random(r);
}while(c>=num3);
if(c==num3)
{
fprintf(fp,"答案%d:%d/%d\n",y,ans1,ans2);
fclose(fp);
fprintf(fb,"题目%d:%d %c %d %c %d = \n",y,num1,signal1,num2,signal2,num3);
fclose(fb);
}
else if(c>num3)
{
c=c-num3;
fprintf(fp,"答案%d:%d'%d/%d\n",y,c,ans1,ans2);
fclose(fp);
fprintf(fb,"题目%d:%d %c %d %c %d = \n",y,num1,signal1,num2,signal2,num3);
fclose(fb);
}break;
case 'x':
ans1=num1*num3;
a=gcd(ans1,num2);
ans1=ans1/a;
ans2=num2/a;
c=0;
while(ans1>ans2)
{
ans1=ans1-ans2;
c++;
}
fprintf(fp,"答案%d:%d'%d/%d\n",y,c,ans1,ans2);
fclose(fp);
fprintf(fb,"题目%d:%d %c %d %c %d = \n",y,num1,signal1,num2,signal2,num3);
fclose(fb);
break;
case '/':
ans2=num2*num3;
a=gcd(num1,ans2);
ans1=num1/a;
ans2=ans2/a;
c=0;
while(ans1>ans2)
{
ans1=ans1-ans2;
c++;
}
fprintf(fp,"答案%d:%d'%d/%d\n",y,c,ans1,ans2);
fclose(fp);
fprintf(fb,"题目%d:%d %c %d %c %d = \n",y,num1,signal1,num2,signal2,num3);
fclose(fb);
break;
}
}
else
if(signal1=='+')
{
int ans1,ans2;
c=0;
switch(signal2)
{
case '+':
ans=num1+num2+num3;
fprintf(fp,"答案%d:%d\n",y,ans);
fclose(fp);
fprintf(fb,"题目%d:%d %c %d %c %d = \n",y,num1,signal1,num2,signal2,num3);
fclose(fb);
break;
case '-':
do
{
num1=random(r);
num2=random(r);
num3=random(r);
}while(num1+num2<num3);
ans=num1+num2-num3;
fprintf(fp,"答案%d:%d\n",y,ans);
fclose(fp);
fprintf(fb,"题目%d:%d %c %d %c %d = \n",y,num1,signal1,num2,signal2,num3);
fclose(fb);
break;
}
}
else
if(signal1=='-')
{
switch(signal2)
{
case '+':
if(num1<num2)
{
t=num1;
num1=num2;
num2=t;
}
ans=num1-num2+num3;
fprintf(fp,"答案%d:%d\n",y,ans);
fclose(fp);
fprintf(fb,"题目%d:%d %c %d %c %d = \n",y,num1,signal1,num2,signal2,num3);
fclose(fb);
break;
case '-':
do
{
num1=random(r);
num2=random(r);
num3=random(r);
}while(num1<num2+num3);
ans=num1-num2-num3;
fprintf(fp,"答案%d:%d\n",y,ans);
fclose(fp);
fprintf(fb,"题目%d:%d - %d - %d = \n",y,num1,num2,num3);
fclose(fb);
break;
}
}
else
if(signal1=='x')
{
switch(signal2)
{
case '+':
ans=num1*num2+num3;
fprintf(fp,"答案%d:%d\n",y,ans);
fclose(fp);
fprintf(fb,"题目%d:%d x %d + %d = \n",y,num1,num2,num3);
fclose(fb);
break;
case '-':
do
{
num1=random(r);
num2=random(r);
num3=random(r);
}while(num1*num2<num3);
ans=num1*num2-num3;
fprintf(fp,"答案%d:%d\n",y,ans);
fclose(fp);
fprintf(fb,"题目%d:%d x %d - %d = \n",y,num1,num2,num3);
fclose(fb);
break;
}
}
}
return 0;
}