我尝试了一堆垃圾来尝试正确地获取变量,但是我一直在搞砸,而且我不知道要在哪里正确放置变量。我也很难放置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;
}
最佳答案
问题1int sum1 = A + B;
/ do
循环中的while
声明了一个新的sum1
,它隐藏了int sum1 = 0;
,因此,外部sum1
始终不会从0更改。
解决方案1
更改
int sum1 = A + B;
至
sum1 = A + B;
问题2
什么都不加和
C
和D
来提供一个非零的sum2
。解决方案2
加入
sum2 = C + D;
问题3
if (sum2 > sum1)
else if (sum1 < sum2)
两者都测试相同的条件,即玩家的掷骰数小于计算机的掷骰数。
解决方案3
更改
else if (sum1 < sum2)
至
else if (sum2 < sum1)
为避免将来出现此类问题,请给变量起良好的描述性名称。与发现
sum_player
和sum_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/