我尝试了一堆垃圾来尝试正确地获取变量,但是我一直在搞砸,而且我不知道要在哪里正确放置变量。我也很难放置if和else if语句。

#include <iostream>
#include <stdlib.h>
#include <ctime>
#include <cstdlib>
using namespace std;

int main()
{
  int iseed = time(NULL);
  srand(iseed);
  int min = 1;
  int max = 6;
  int sum1 = 0;
  int sum2 = 0;
  int A = 0;
  int B = 0;

  int C = min + rand() % (max - min +1);
  int D = min + rand() % (max - min +1);


  char repeat2;
  char repeat1;

  cout << "Beat the computer!\n";

  do {
        int A = min + rand() % (max - min +1);
        int B = min + rand() % (max - min +1);
        int sum1 = A + B;

        cout << "you rolled a " << A << " and a " << B << endl;
        cout << "Total roll = " << sum1 << endl;
        cout << "Would you like to keep this roll? Y or N: ";
        cin >> repeat1;

     } while (repeat1 == 'N');

        cout << "The computer rolled a " << C << " and a " << D << endl;
        cout << "Total roll = " << sum2 << endl;


        if (sum2 > sum1) {cout << "You lose! D= YOU ROLLED " << sum1 << "HE ROLLED " << sum2 << ".";}
        else if (sum1 < sum2) {cout << "You win! =D ";}
        else if (sum1 = sum2) {cout << "It's a tie /= ";}
        cout << "Would you like to play again?: ";
        cin >> repeat2;

}

最佳答案

问题1
int sum1 = A + B; / do循环中的while声明了一个新的sum1,它隐藏了int sum1 = 0;,因此,外部sum1始终不会从0更改。

解决方案1

更改

int sum1 = A + B;


sum1 = A + B;

问题2

什么都不加和CD来提供一个非零的sum2

解决方案2

加入
sum2 = C + D;

问题3
if (sum2 > sum1)
else if (sum1 < sum2)

两者都测试相同的条件,即玩家的掷骰数小于计算机的掷骰数。

解决方案3

更改
else if (sum1 < sum2)


else if (sum2 < sum1)

为避免将来出现此类问题,请给变量起良好的描述性名称。与发现sum_playersum_computer已被交换相比,发现sum1意外地与sum2交换要容易得多。

问题4
else if (sum1 = sum2)

不是比较。这是一个赋值,然后进行测试,以测试sum1的新值不为0(它将为0)。

解决方案4

使用
else if (sum1 == sum2)

代替。

关于c++ - 该程序应该触发底部的 'if'语句,但它不会照常进行。我该如何工作?,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/60678057/

10-09 13:35