随机生成的数字结果与用户输入不匹配

时间:2017-04-15 18:18:28

标签: c++

  1. 我遇到的问题是随机生成的数字结果与用户输入不匹配,如果用户猜错了,它只输出第一个语句而不是掉到else。

    #include <iostream>
    #include <ctime>
    #include <cstdlib>
    #include <string>
    
    using namespace std;
    
    
    int main()
    {
    
        int bank = 10;
        int heads = 0;
        int tails = 1;
        char response;
        string headsTails;
        int coinToss = rand() % 2;
        srand(static_cast<int>(time(0)));
    
    
        cout << "Welcome to the coin flip game. It cost a dollar to play. " <<  endl;
        cout << "If you guess correctly you will win $2.00 dollars " << endl;
        cout << "Do you want to play? (Y/N) " << endl;
        cin >> response;
    
    
        while (toupper(response) == 'Y')
        {
            cout << "Your bank is $" << bank << " dollars." << endl;
            cout << "Enter head or tails (H/T)" << endl;
            cin >> response;
    
            coinToss = rand() % 2;
            headsTails = coinToss ? "Heads" : "Tails";
    
            if (coinToss == heads || coinToss == tails)
            {
                cout << "Winner! The coin flip came up " << headsTails << endl;
                cout << "Would you like to play again? (Y/N) " << endl;
                cin >> response;
                bank += 2;
            }
            else
            {
                cout << "Sorry, you lose. The coin flip came up " << headsTails << 
    endl;
                cout << "Would you like to play again? (Y/N) " << endl;
                cin >> response;
                bank -= 1;
            }
    
        }
        cout << "Thanks for playing! Your bank is " << bank << endl;
        cout << "Please come again! " << endl;
        return 0;
    }
    

1 个答案:

答案 0 :(得分:0)

if (coinToss == heads || coinToss == tails)

这种情况是错误的,因为你自己将coinToss设置为0或1,它总是会评估为真。

您必须使用您向用户提出的response变量,例如:

int guess = response == 'T' ? 1 : 0; // convert the user input to the same values used throughout the program.
if(guess == coinToss)
//won..
else
//lost..