此程序应该在底部触发'if'语句,但不会原样。如何使它正常工作?

问题描述 投票:1回答:1

我已经尝试了很多垃圾操作来尝试正确地获取变量,但是我一直在搞砸,而且我不知道要在哪里正确放置变量。我也很难放置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;

}
c++
1个回答
6
投票

问题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)

to

else if (sum2 < sum1)

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

问题4
else if (sum1 = sum2)

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

解决方案4

使用

else if (sum1 == sum2)

代替。

© www.soinside.com 2019 - 2024. All rights reserved.