我已经尝试了很多垃圾操作来尝试正确地获取变量,但是我一直在搞砸,而且我不知道要在哪里正确放置变量。我也很难放置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;
}
int sum1 = A + B;
/ do
循环中的[while
声明了一个新的sum1
,该结果隐藏了int sum1 = 0;
,因此没有将外部sum1
的值从0更改。
更改
int sum1 = A + B;
到
sum1 = A + B;
没有C
和D
的总和以提供非零的sum2
。
添加到
sum2 = C + D;
if (sum2 > sum1)
else if (sum1 < sum2)
都测试相同的条件,即玩家的掷骰数小于计算机的掷骰数。
更改
else if (sum1 < sum2)
to
else if (sum2 < sum1)
[为避免将来出现此类问题,请给变量起良好的描述性名称。与发现sum_player
和sum_computer
已被交换相比,sum1
被意外地替换为sum2
要容易得多。
else if (sum1 = sum2)
不是比较。这是一项赋值,然后进行测试,以确认sum1
的新值不为0(它将为0)。
使用
else if (sum1 == sum2)
代替。