真心求大神解答一下这个c++题目,真的不会做啊,肿么办,求高人ToT

小学生测验,面向小学1~2年级学生,随机选择两个整数和加减法形成算式要求学生解答。要求至少具有如下功能:
(1)电脑随机出10道题,每题10分,程序结束时显示学生得分;
(2)确保算式没有超出1~2年级的水平,只允许进行50以内的加减法,不允许两数之和或之差超出0~50的范围,负数更是不允许的;
(3)每道题学生有三次机会输入答案,当学生输入错误答案时,提醒学生重新输入,如果三次机会结束则输出正确答案;
(4)对于每道题,学生第一次输入正确答案得10分,第二次输入正确答案得7分,第三次输入正确答案得5分,否则不得分;
(5)总成绩90以上显示“SMART”, 80-90显示“GOOD”, 70-80显示“OK”, 60-70显示“PASS”,60以下“TRY AGAIN”。
提示:可以利用随机数生成函数rand()。

#include <iostream>
#include <ctime>
using namespace std;
void mkelement(int& a,int& b,int& op)
{
 op=rand()%2;
 a=rand()%50;
 if(op)    b=rand()%(50-a);
 else  b=rand()%50;
 if(a<b) { int t=a;a=b;b=t; }
}
int main()
{
 srand((unsigned)time(0));
 cout<<"考试开始,每题10分,每题有三次机会:"<<endl;
 int a,b,op,result,answer;
 int score=0;
 int lvl[3]={10,7,5};
 for(int i=0;i<10;i++)
 {
  cout<<"第"<<(i+1)<<"题:";
  mkelement(a,b,op);
  if(op)
  {
   cout<<a<<"+"<<b<<"=";
   result=a+b;
  }
  else
  {
   cout<<a<<"-"<<b<<"=";
   result=a-b;
  }
  int t=0;
  while(1)
  {
   cin>>answer;
   if(cin.fail())
   {
    cin.clear();
    cin.sync();
    cout<<"输入错误!重输:";
    continue;
   }
   if(answer==result)
   {
    cout<<"回答正确+"<<lvl[t]<<"分"<<endl;
    score+=lvl[t];
    break;
   }
   else
   {    
    t++;
    if(t>=3)
    {
     cout<<"3次错误,不计分,正确答案是:"<<result<<endl;
     break;
    }
    cout<<"回答错误!!重新回答:";
   }
  }
 }
 cout<<"得分:"<<score<<endl;
 cout<<"等级:";
 switch(score/10)
 {
 case 10:
 case 9:  cout<<"SMART"<<endl; break;
 case 8: cout<<"GOOD"<<endl; break;
 case 7: cout<<"OK"<<endl; break;
 case 6:cout<<"PASS"<<endl;break;
 default:cout<<"TRY AGAIN"<<endl;
 }
 return 0;
}

温馨提示:答案为网友推荐,仅供参考
大家正在搜