#include<iostream> #include<stdarg.h> #include<stdlib.h> #include<time.h> #include<math.h> using namespace std; int main() { cout<<endl; cout<<"在线答题"<<endl; cout<<endl; cout<<endl; Again: double Q1=1; int Q01; int Q2=1; int Q3=100; char Q4='x'; int Q5=1; char Q6='y'; char Q7='n'; double ans=0; int right=0; cout<<" 输入题目数量:"; cin>>Q1; Q01=floor(Q1); cout<<" 每行间距(正整数):"; cin>>Q5; cout<<" 请输入算式中数值的最大值:"; cin>>Q3; while(1) { cout<<"运算中需要乘除法吗?需要:x;不需要:y"; cin>>Q4; cout<<" 减法中需要有负数吗?需要:x;不需要:y"; cin>>Q7; cout<<"-------------------------------------------------------------------------"<<endl; cout<<"开始进行答题:"<<endl; srand(time(NULL)); if(Q4=='x') { while(1) { if(Q1<1) { cout<<"输入有误,请重新输入题目数量:"; cin>>Q1; Q01=floor(Q1); } else { for(int k=0;k<Q01;k++) { if(k!=0&&k%Q2==0) { for(int i=0;i<Q5;i++) { cout<<endl; } } int num1=rand()%Q3; int num2=rand()%Q3; int sign=rand()%4; switch(sign) { case 0: cout<<k+1<<":"<<" "<<num1<<"+"<<num2<<"="<<"\t"; cin>>ans; if(ans==num1+num2) { cout<<"正确"<<endl; right++; } else { cout<<"错误!"<<endl; cout<<"正确答案:"<<num1+num2<<endl; } break; case 1: if(Q7=='x') { cout<<k+1<<":"<<" "<<num1<<"-"<<num2<<"="<<"\t"; cin>>ans; if(ans==num1-num2) { cout<<"正确"<<endl; right++; } else { cout<<"错误!"<<endl; cout<<"正确答案是:"<<num1-num2<<endl; } } else { if(num1>num2) { cout<<k+1<<":"<<" "<<num1<<"-"<<num2<<"="<<"\t"; cin>>ans; if(ans==num1-num2) { cout<<"正确"<<endl; right++; } else { cout<<"错误!"<<endl; cout<<"正确答案是:"<<num1-num2<<endl; } } else { cout<<k+1<<":"<<" "<<num2<<"-"<<num1<<"="<<"\t"; cin>>ans; if(ans==num2-num1) { cout<<"正确"<<endl; right++; } else { cout<<"错误!"<<endl; cout<<"正确答案是:"<<num2-num1<<endl; } } } break; case 2: cout<<k+1<<":"<<" "<<num1<<"*"<<num2<<"="<<"\t"; cin>>ans; if(ans==num1*num2) { cout<<"正确"<<endl; right++; } else { cout<<"错误!"<<endl; cout<<"正确答案是:"<<num1*num2<<endl; } break; case 3: if(num2!=0) { cout<<k+1<<":"<<" "<<num1<<"/"<<num2<<"="<<"\t"; cin>>ans; if(ans==num1/num2) { cout<<"正确"<<endl; right++; } else { cout<<"错误!"<<endl; cout<<"正确答案是:"<<num1/num2<<endl; } } else { k--; } break; } } break; } } cout<<"共答对"<<right<<"道题;"<<"答错"<<Q01-right<<"道题。"; cout<<"继续努力!"<<endl; break; } if(Q4=='y') { while(1) { if(Q01<1) { cout<<"输入有误,请重新输入题目数量:"; cin>>Q1; Q01=floor(Q1); } else { for(int k=0;k<Q01;k++) { if(k!=0&&k%Q2==0) { for(int i=0;i<=Q5;i++) { cout<<endl; } } int num1=rand()%Q3; int num2=rand()%Q3; int sign=rand()%2; switch(sign) { case 0: cout<<k+1<<":"<<" "<<num1<<"+"<<num2<<"="<<"\t"; cin>>ans; if(ans==num1+num2) { cout<<"正确"<<endl; right++; } else { cout<<"错误!"<<endl; cout<<"正确答案是:"<<num1+num2<<endl; } break; case 1: if(Q7=='x') { cout<<k+1<<":"<<" "<<num1<<"-"<<num2<<"="<<"\t"; cin>>ans; if(ans==num1-num2) { cout<<"正确"<<endl; right++; } else { cout<<"错误!"<<endl; cout<<"正确答案是:"<<num1-num2<<endl; } break; } else { if(num1>num2) { cout<<k+1<<":"<<" "<<num1<<"-"<<num2<<"="<<"\t"; cin>>ans; if(ans==num1-num2) { cout<<"正确"<<endl; right++; } else { cout<<"错误!"<<endl; cout<<"正确答案是:"<<num1-num2<<endl; } break; } else { cout<<k+1<<":"<<" "<<num2<<"-"<<num1<<"="<<"\t"; cin>>ans; if(ans==num2-num1) { cout<<"正确"; } else { cout<<"错误!"<<endl; cout<<"正确答案是:"<<num2-num1<<endl; } break; } } break; } } } break; } cout<<"共答对"<<right<<"道题;"<<"答错"<<Q01-right<<"道题。"<<endl; cout<<"继续努力!"<<endl; break; } else { cout<<"输入有误,请按要求输入!"<<endl; } } cout<<endl; while(1) { cout<<"还需要继续出题还是退出?(x:继续出题;y:退出)"; cin>>Q6; if(Q6=='x') { goto Again; } if(Q6=='y') { goto Exit; } else { cout<<"输入有误,请重新输入:"; } } Exit: return 0; }
说明:
1. 首先输入你想要答题的数量 按回车键结束;
2. 确定你想要的每道题之间的间隔距离,按回车键结束;
3. 确定你想要的计算题中数的取值范围,按回车键结束;
4. 确定你想要的计算题中是否有乘除法,按x表示有,按y表示没有;
5. 确定 计算题中是否有负数,按x表示有,按y表示没有;
6. 然后开始答题,直接输入你计算的结果,按回车键结束,程序会自动判断对错,冰并自动跳转到下一道计算题;
7. 完成所有计算题后,可选择是否继续生成计算题,x表示是,y表示否。
成员: 候志龙 李杰 代码编写: 候志龙 代码测试与审核: 李杰