四则运算生成程序(基于控制台)
题目链接:
⦁可以根据输入的题数和数值范围自动生成四则运算表达式。
⦁表达式包括“+ - * /”这四种运算符。
⦁可以进行分数的运算,如果题目中出现假分数,则转换成真分数。
⦁对题目答案进行批改对错,给出正确率。
float transformation(float w) { float b; b = floor(w * 100 + 0.5) / 100;//用floor函数对运算结果保留小数点后两位 return b; }
整体的思想:用四个整数以两个分数的形式来构成两个操作数,当分子为一的时候,就变成整数了。
int first_num,second_num,third_num,fourth_num;//用四个整数以分数的形式来构成两个操作数
cout<<"需要列出多少道四则运算?"<<endl;
cin>>n;
cout<<"生成题目数值的范围" <<endl;
cin>>m;
cout<<"————————————————"<<endl;
for(int i=0;i<n;i++)
{
z=rand()%4;
first_num=rand()%m;
second_num=rand()%m;
third_num=rand()%m;
fourth_num=rand()%m;
if (second_num==1)
{
x=(float)first_num;//如果第一个分数的分母为1,则第一个操作数 就等于分子
}
else if(first_num>second_num)//第一个分数为假分数 ,则对调分子与分母,变成真分数
{
t=first_num;
first_num=second_num;
second_num=t;
}
x=(float)first_num/second_num;
if (fourth_num==1)//如果第二个分数的分母为1,则第二个操作数 就等于分子
{
y=(float)third_num;
}
else if(third_num>fourth_num)//第二个分数为假分数 ,则对调分子与分母,变成真分数
{
t=third_num;
third_num=fourth_num;
fourth_num=t;
}
y=(float)third_num/fourth_num;
随机生成四种运算符,当second_num==1和fourth_num==1时,表达式可以变成整数。(没有全部展示出来)
z=rand()%4; switch(z) { case 0://运行加法 if(second_num==1 & fourth_num!=1) { cout<<i+1<<"、 "<<first_num<<" + "<<third_num<<"/"<<fourth_num<<"="<<" "; } else if(fourth_num==1 & second_num!=1) { cout<<i+1<<"、 "<<first_num<<"/"<<second_num<<" + "<<third_num<<"="<<" "; } else if(second_num==1 & fourth_num==1) { cout<<i+1<<"、 "<<first_num<<" + "<<third_num<<"="<<" "; } else { cout<<i+1<<"、 "<<first_num<<"/"<<second_num<<" + "<<third_num<<"/"<<fourth_num<<"="<<" "; } w=x+y; answer[i+1]=transformation(w); break; case 1: if(second_num==1 & fourth_num!=1) { cout<<i+1<<"、 "<<first_num<<" - "<<third_num<<"/"<<fourth_num<<"="<<" "; } else if(fourth_num==1 & second_num!=1) { cout<<i+1<<"、 "<<first_num<<"/"<<second_num<<" - "<<third_num<<"="<<" "; } else if(second_num==1 & fourth_num==1) { cout<<i+1<<"、 "<<first_num<<" - "<<third_num<<"="<<" "; } else { cout<<i+1<<"、 "<<first_num<<"/"<<second_num<<" - "<<third_num<<"/"<<fourth_num<<"="<<" "; } w=x-y; answer[i+1]=transformation(w); break;
对结果进行判断对错,并给出正确率。
for(int i=1;i<=n;i++) { cout<<"请作答:"<<endl; cout<<i<<"、"; cin>>d; if(d==answer[i]) { cout<<"恭喜您,回答正确!"<<endl; cout<<endl; right=right+1; } else { cout<<"回答错误,正确答案为:"<<setprecision(2)<<answer[i]<<endl; cout<<endl; error=error+1; } } k=(float)right/n; cout<<"回答正确的数量为:"<<" "<<right<<"个"<<endl; cout<<"回答错误的数量为:"<<" "<<error<<"个"<<endl; cout<<"正确率为:"<<" "<<k*100<<"%"<<endl;
五
2.进行做答
3.得出正确率
六.PSP展示:
七