需要C++帮助,分数保持代码无法正常工作

Need C++ assistance, Score Keeping Code Not Working Properly

本文关键字:常工作 工作 代码 帮助 C++ 需要      更新时间:2023-10-16

对于我的中期项目,我正在创建一个随机生成数字的程序,系统会提示用户减去数字并在代码中输入答案,我想跟踪他们的当前分数,但由于某些原因,分数没有更新,所有的代码都在哪里

#include <iostream>
#include <ctime>
#include <cstdlib>
using namespace std;
int main()
{
A:
srand(time(0));
int number1 = rand() % 10;
int number2 = rand() % 10;
int answer;
int correctAnswer;
int score = 0;
if (number1 < number2)
{
    int temp = 0;
    temp = number2;
    number2 = number1;
    number1 = temp;
}

system("CLS");
cout << "Current Score: " << score << endl;
cout << "----------------------------------------------------" << endl;
cout << "What is " << number1 << " - " << number2 << " = ";
cin >> answer;
correctAnswer = number1 - number2;
if (answer == correctAnswer)
{
    cout << "Good Job!" << endl;
    score = score + 1;
    system("Pause");
    goto A;
} 
else 
{
    cout << "Incorrect. The Correct Answer is " << correctAnswer <<endl; 
    cout << "Try Again" << endl;
    score = (score * 0);
    goto A;
}

system("PAUSE");
return 0;
}

你的GOTO语句将你送到程序的顶部,在那里你设置了score=0…这就是为什么你没有看到分数增加的原因。

移动以下行:

int score = 0;

在你的"A:"标签上方。

首先:不要使用goto。它通常不被认为是好的实践,并且可能使代码不可维护。其次,您正在goto中初始化您的变量,因此每次通过都会在打印之前将其设置为0

#include <iostream>
#include <ctime>
#include <cstdlib>
using namespace std;
int main()
{
int score = 0;
A:
srand(time(0));
int number1 = rand() % 10;
int number2 = rand() % 10;
int answer;
int correctAnswer;

if (number1 < number2)
{
    int temp = 0;
    temp = number2;
    number2 = number1;
    number1 = temp;
}

system("CLS");
cout << "Current Score: " << score << endl;
cout << "----------------------------------------------------" << endl;
cout << "What is " << number1 << " - " << number2 << " = ";
cin >> answer;
correctAnswer = number1 - number2;
if (answer == correctAnswer)
{
    cout << "Good Job!" << endl;
    score = score + 1;
    system("Pause");
    goto A;
} 
else 
{
    cout << "Incorrect. The Correct Answer is " << correctAnswer <<endl; 
    cout << "Try Again" << endl;
    score = (score * 0);
    goto A;
}

system("PAUSE");
return 0;
}