有关四则运算在线答题的课后作业
关于实现四则运算在线答题的过程如下; 题目:二柱子将做好的项目交给了老师,几天后又得到了新的需求: 作业要求1、实现在线答题。 2、答题结束后,可以判断对错。 3、并将错题的结果保存起来。 设计的思路:可以更改题目数量,并且判断答案正错,可以更改行间距,可以确定最大整数值。 具体解决思路: 题目数量:单独赋值到Q1,用srand(time(NULL));来进行循环,用来选择公式。 数据范围:将Q3放在rand后面来控制范围大小。 乘除法与加减法:当为y时,则为加减乘除,为n时则为加减法。 负数:分为case1和case2进行分析,num1和num2进行加减。Y则直接加减,N则进行调换。 判断正错:则由right++和Q01-right分别进行判断。 下面是这个程序的运算代码: #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='y'; int Q5=1; char Q6='n'; char Q7='n'; double ans=0; int right=0; cout<<" 一.输入题目数量:"; cin>>Q1; Q01=floor(Q1); // cout<<"输入每行打印题目数(1-5):"; // cin>>Q2; cout<<" 二.每行间距(正整数):"; cin>>Q5; cout<<" 三.请输入算式中数值的最大值:"; cin>>Q3; while(1) { cout<<" 四.运算中需要乘除法吗?需要:y;不需要:n"; cin>>Q4; cout<<" 五.减法中需要有负数吗?需要:y;不需要:n"; cin>>Q7; cout<<"-------------------------------------------------------------------------"<<endl; cout<<"开始进行答题:"<<endl; srand(time(NULL)); if(Q4=='y') { while(1) { if(Q1<1) { cout<<"输入有误,请重新输入题目数量:"; cin>>Q1; Q01=floor(Q1); } else { for(int j=0;j<Q01;j++) { if(j!=0&&j%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<<j+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=='y') { cout<<j+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<<j+1<<":"<<" "<<num1<<"-"<<num2<<"="<<"\t"; cin>>ans; if(ans==num1-num2) { cout<<"正确"<<endl; right++; } else { cout<<"答错了!"<<endl; cout<<"正确答案是:"<<num1-num2<<endl; } } else { cout<<j+1<<":"<<" "<<num2<<"-"<<num1<<"="<<"\t"; cin>>ans; if(ans==num2-num1) { cout<<"正确"<<endl; right++; } else { cout<<"答错了!"<<endl; cout<<"正确答案是:"<<num2-num1<<endl; } } } break; case 2: cout<<j+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<<j+1<<":"<<" "<<num1<<"/"<<num2<<"="<<"\t"; cin>>ans; if(ans==num1/num2) { cout<<"正确"<<endl; right++; } else { cout<<"答错了!"<<endl; cout<<"正确答案是:"<<num1/num2<<endl; } } else { j--; } break; } } break; } } cout<<"共答对"<<right<<"道题;"<<"答错"<<Q01-right<<"道题。"; cout<<"继续努力!"<<endl; break; } if(Q4=='n') { while(1) { if(Q01<1) { cout<<"输入有误,请重新输入题目数量:"; cin>>Q1; Q01=floor(Q1); } else { for(int j=0;j<Q01;j++) { if(j!=0&&j%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<<j+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=='y') { cout<<j+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<<j+1<<":"<<" "<<num1<<"-"<<num2<<"="<<"\t"; cin>>ans; if(ans==num1-num2) { cout<<"正确"<<endl; right++; } else { cout<<"答错了!"<<endl; cout<<"正确答案是:"<<num1-num2<<endl; } break; } else { cout<<j+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<<"还需要继续出题还是退出?(y:继续出题;n:退出)"; cin>>Q6; if(Q6=='y') { goto Again; } if(Q6=='n') { goto Exit; } else { cout<<"输入有误,请重新输入:"; } } Exit: return 0; }
运行结果如下
个人总结合作完成,收货很大