#include <iostream>
#include <string>
#include <ctime>
#include <cstdlib>
#define random(x) rand()%(x)
using namespace std;
int mode,algo,x,y,xy,answer,ans,judge=0,randnum;
string question;
void addition(int a,int b){
answer=xy=a+b;
question=to_string(a)+"+"+to_string(b)+"=";
}
void subtraction(int a,int b){
answer=xy=a-b;
question=to_string(a)+"-"+to_string(b)+"=";
}
void multiplication(int a,int b){
answer=xy=a*b;
question=to_string(a)+"×"+to_string(b)+"=";
}
void division(int a,int b){
xy=a*b;
answer=a;
question=to_string(xy)+"÷"+to_string(b)+"=";
}
int randjudge(int a){
if(a==judge) return randjudge(random(randnum));
else{
judge=a;
return a;
};
}
int main(){
srand((int)time(0));
cout<<"模式选择:\n1.10000以内加减法心算\n2.1000以内四则运算\n";
cin>>mode;
if(mode==1){
randnum=10000;
while(1){
algo=random(3);
x=randjudge(random(randnum));
y=random(randnum);
switch(algo){
case 1: addition(x,y);break;
case 2: subtraction(x,y);break;
}
cout<<question;
while(1){
cin>>ans;
if(ans==answer) break;
else cout<<"答案错误\n"<<question;
}
}
}
else if(mode==2){
randnum=1000;
while(1){
algo=random(5);
x=randjudge(random(randnum));
y=random(randnum);
switch(algo){
case 1: addition(x,y);break;
case 2: subtraction(x,y);break;
case 3: multiplication(x,y);break;
case 4: division(x,y);break;
}
cout<<question;
while(1){
cin>>ans;
if(ans==answer) break;
else cout<<"答案错误\n"<<question;
}
}
}
}
求助dalao,为什么这个口算题卡的程序会经常连续多次输出同一道问题(randjudge函数是后加的,但是没有任何作用),有时候还没办法正常的输出问题?