求加一个答题有两次机会的功能,谢谢O(∩_∩)O

C++语言 码拜 9年前 (2016-04-07) 925次浏览
练习时,系统随机出题,键入结果,正确和错误均有提示,出错时允许再输入,
加减乘除运算,练习时最多二次机会,若还不正确,给出答案。继续出题,按ESC,显示总题数,正确数和
正确率。
这是本人写的一段练习时的代码,不知怎么样做到出错时允许再输入,最多两次机会(づ。‿。)づ
求各位大大指点~~~~(>_<)~~~~

void practisesys(void)
{
     int n1,n2,result,type,input,right,wrong;
     right = 0;
     wrong = 0;
     type = typechoose();
     system("cls");
     do
     {
         do
         {
             srand((unsigned)time(NULL));  //初始化随机数
             n1 = rand()%100;
             n2 = rand()%100;
         }while(n1<n2);
label1:
         if(type == 1)
         {
              result = Addition(n1,n2);
              cout<<n1<<" + "<<n2<<"=";
			 
         }
         else if(type == 2)
         {
              result = Subtraction(n1,n2);
              cout<<n1<<" - "<<n2<<"=";
         }
         else if(type == 3)
         {
              result = Multiplication(n1,n2);
              cout<<n1<<" * "<<n2<<"=";
         }     
         else if(type == 4)
         {
              result = Division(n1,n2);
              cout<<n1<<" / "<<n2<<"=";
         }
         else if(type == 5)
         {
              srand((unsigned)time(NULL));
              type = rand()%4+1;
              goto label1;
         }
              cin>>input;
         if(input == result)
         {
                  right++;
                  cout<<"回答正确!\n";
         }
         else
         {
                  wrong++;
                  cout<<"回答错误!\n";
				  cout<<"正确答案是:"<<result<<endl;
         }
     }while(1);
     cout<<"你已经答对的题目有"<<right<<endl;
     cout<<"你总共回答题目有"<<right+wrong<<endl;
     cout<<"你的正确率为百分之"<<right/((right+wrong)*100)<<endl;
     cout<<"总分为"<<right*10<<endl;
     cout<<"谢谢使用此系统!\n";
     getch();
     return;
}
解决方案

200

试试这样:

void practisesys(void)
{
	int n1, n2, result, type, input, right, wrong;
	right = 0;
	wrong = 0;
	type = typechoose();
	system("cls");
	do
	{
		do
		{
			srand((unsigned)time(NULL));  //初始化随机数
			n1 = rand() % 100;
			n2 = rand() % 100;
		} while (n1<n2);
	label1:
		if (type == 1)
		{
			result = Addition(n1, n2);
			cout << n1 << " + " << n2 << "=";
		}
		else if (type == 2)
		{
			result = Subtraction(n1, n2);
			cout << n1 << " - " << n2 << "=";
		}
		else if (type == 3)
		{
			result = Multiplication(n1, n2);
			cout << n1 << " * " << n2 << "=";
		}
		else if (type == 4)
		{
			result = Division(n1, n2);
			cout << n1 << " / " << n2 << "=";
		}
		else if (type == 5)
		{
			srand((unsigned)time(NULL));
			type = rand() % 4 + 1;
			goto label1;
		}
		while (1)
		{
			cin >> input;
			if (input == result)
			{
				right++;
				cout << "回答正确!\n";
				break;
			}
			else
			{
				wrong++;
				cout << "回答错误!\n";
				if (wrong == 2)
				{
					cout << "正确答案是:" << result << endl;
					break;
				}
			}
		}

	} while (1);
	cout << "你已经答对的题目有" << right << endl;
	cout << "你总共回答题目有" << right + wrong << endl;
	cout << "你的正确率为百分之" << right / ((right + wrong) * 100) << endl;
	cout << "总分为" << right * 10 << endl;
	cout << "谢谢使用此系统!\n";
	getch();
	return;
}

CodeBye 版权所有丨如未注明 , 均为原创丨本网站采用BY-NC-SA协议进行授权 , 转载请注明求加一个答题有两次机会的功能,谢谢O(∩_∩)O
喜欢 (0)
[1034331897@qq.com]
分享 (0)