为什么记录不了加减乘除的次数和是对的次数,看了半天,实在是找不到问题的所在,求大佬看看
#include <stdlib.h>#include <stdin.h>
#include <time.h>
//姓名;陈光星
//学号;2016130152
int RandN1N2(int rN1 ,int rN2);
int randoper(void);
int randLmt100();
int addLmt100(int num1,int num2);
int subLmt100(int num1,int num2);
int mulLmt100(int num1,int num2);
int divLmt100(int num1,int num2);
int main() //主函数部分
{
int proNum[4]={0},ansNum[4]={0}; //定义两个数组,分别用于记录加减乘除出现的次数和加减乘除算对的次数
int (*funt)(int,int); //指针函数,用于实现随机出现加减乘除的运算
char s;
int i1,i2,i3,i4; //变量用于记录
loop:
srand((unsigned)time(NULL)) ;
int a=rand()%4+1;
if(a==1)
{
funt=addLmt100;
proNum[0]=proNum[0]+1;
}
else if(a==2)
{
funt=subLmt100;
proNum[1]=proNum[1]+1;
}
else if(a==3)
{
funt=mulLmt100;
proNum[2]=proNum[2]+1;
}
else if(a==4)
{
funt=divLmt100;
proNum[3]=proNum[3]+1;
}
int i,j;
i=randLmt100();
j=randLmt100();
funt(i,j);
if(proNum[0]=proNum[0]+1)
{
i1=funt(i,j);
ansNum[0]=ansNum[0]+i1;
}
else if(proNum[1]=proNum[1]+1)
{
i2=funt(i,j);
ansNum[1]=ansNum[1]+i2;
}
else if(proNum[2]=proNum[2]+1)
{
i3=funt(i,j);
ansNum[2]=ansNum[2]+i3;
}
else if(proNum[3]=proNum[3]+1)
{
i4=funt(i,j);
ansNum[3]=ansNum[3]+i4;
}
printf("还想继续做吗?如果想的话就按Y键继续\n");
printf("如果不想玩的话就按任意键退出\n");
fflush(stdin); //清除键盘的缓冲区
scanf("%c",&s); //判断是否要继续
fflush(stdin);
if(s=='Y')
{
goto loop;
}
else
{
goto loop1;
}
loop1:
printf("出现加减乘除的次数分别是%d %d %d %d\n",proNum[0],proNum[1],proNum[2],proNum[3]);
printf("加减乘除答对的次数分别为%d %d %d %d\n",ansNum[0],ansNum[1],ansNum[2],ansNum[3]);
return 0;
}
//下面是函数的定义
int RandN1N2(int rN1,int rN2) //生成一个值在rN1和RN2之间的随机数的函数RandN1N2
{
int i;
i=rand()%(rN2-rN1+1)+rN1;
return i;
}
int randoper(void) //调用RandN1N2函数生成一个在1到4之间的随机数
{
int i;
i=RandN1N2(1,4);
return i;
}
int randLmt100() //调用RandN1N2函数生成一个值在0到99之间的随机数
{
int i;
i=RandN1N2(0,99);
return i;
}
int addLmt100(int num1,int num2) //加法运算
{
int answer,A;
printf("%d+%d=",num1,num2);
A=num1+num2;
scanf("%d",&answer);
fflush(stdin);
if(A==answer)
{
printf("哇!答对了,你太棒了。\n");
return 1; //算对的话就返回1,用于计算算对的次数
}
else
{
printf("没关系,下次再来。正确答案是:%d\n",A);
return 0; //算错的话就返回0,同样用于计算算对的次数
}
}
subLmt100(int num1,int num2) //减法运算
{
int numM1,numM2,A,answer;
if((num1-num2)>0) //先判断两个数的大小,把大的数赋给numM1,把小的覆盖numM2
{
numM1=num1;
numM2=num2;
}
else
{
numM1=num2;
numM2=num1;
}
A=numM1-numM2;
printf("%d-%d=",numM1,numM2);
scanf("%d",&answer);
fflush(stdin);
if(A==answer)
{
printf("哇!答对了,你太棒了。\n");
return 1; //算错就返回1
}
else
{
printf("没关系,下次再来。正确答案是:%d\n",A);
return 0; //算对就返回0
}
}
mulLmt100(int num1,int num2) //乘法运算
{
int A,answer;
A=num1*num2;
printf("%d*%d=:",num1,num2);
scanf("%d",&answer);
fflush(stdin);
if(A==answer)
{
printf("哇!答对了,你太棒了。\n");
return 1; //返回值为1
}
else
{
printf("没关系,下次再来。正确答案是%d:\n",A);
return 0; //返回值为0
}
}
divLmt100(int num1,int num2) // 除法运算
{
int i,j,A,answer,numM1,numM2; //先判断两个数能不能整除
loop:
{
num1=randLmt100();
num2=randLmt100();
if((num1-num2)>0)
{
numM1=num1;
numM2=num2;
}
else
{
numM1=num2;
numM2=num1;
}
}
while(numM1%numM2!=0)
{
num1=randLmt100();
num2=randLmt100();
goto loop; //运用goto语句循环
}
A=numM1/numM2;
printf("%d/%d=",numM1,numM2);
scanf("%d",&answer);
fflush(stdin);
if(A==answer)
{
printf("哇!答对了,你太棒了。\n");
return 1; //返回值为1
}
else
{
printf("没关系,下次再来。正确答案是%d\n",A);
return 0; //返回值为0
}
}