【问题标题】:Is there a way to print the sum of randomly generated numbers in a do while loop?有没有办法在 do while 循环中打印随机生成的数字的总和?
【发布时间】:2021-01-30 20:37:02
【问题描述】:

我正在编写一个程序,使用 rand() % 11 从根本上模拟二十一点游戏。我们必须告诉玩家他们的总点数以及询问他们是否想要另一张牌(击中)。我的第一个问题是获得多个随机数,而我的第二个问题是无法将两个随机数相加。不允许使用字符串。这是我认为导致错误的代码块。我对 C++ 很陌生。我需要使用 rand() %10 +1 来添加多个变量吗?我知道 add + add 不起作用,但我想不出替代方法。

int add = rand() % 10 + 1;                                                  
bool hit = false;                                                           
int i = 0;                                                                  
       
do {                                                                                     
    cout << "Players 1 running total is " << add;                                          
    i++;                                                                        
    cout << " \n ";                                                             
    cout << "Would you like another number? (0-yes or 1-no) ";                  
    cin >> hit;                                                             
    if ( hit == 0 ) {                                                           
        cout << " You got an " << add << " \n ";                            
        cout << "You're running total is " << add + add;                                       
    }                                                                       
                                                                                   
} while ( hit == false ); 

【问题讨论】:

  • @Peter 在标题中添加语言已经有一段时间不鼓励使用适当的标签了。也就是说,OP 在问题本身中提到了 C++,并用 c++ 标记了它。
  • 你需要在 do-loop 之前定义 int sum = 0 并将 add-calculation 加上 sum += add 移动到 do-loop 中。
  • @Peter 已将其添加到标题
  • @SpencerTheDude 很抱歉造成混乱。没看过文中的语言。
  • @Peter 好吧,我加了 sum = 0,但是如果不在 cout 中,我应该把 add +=sum 放在哪里

标签: c++ loops random numbers


【解决方案1】:

我认为这是一个教育工作者的作业,否则,你根本不应该使用rand()(我不怪你,我怪老师没有跟上语言。)

您必须再次调用rand() 以获取新数字并使用另一个变量来存储总数:

旁注: 你真的应该尽可能地在第一次使用时声明你的变量,而不是在程序的顶部。

另外,变量i 没有在这个上下文中使用,所以我删除了它。


srand(time(0)); //Should be nullptr, but instructor probably doesn't know that.
int total = 0;
bool hit = false;
do {
    int add = rand() % 10 + 1;
    total += add;
    cout << "\nYou got an " << add << " \n ";
    cout << "\nPlayer 1 running total is " << total;
    cout << "\nWould you like another number? (0-yes or 1-no) ";
    cin >> hit;
} while (hit == false);
cout << "Player 1 final total is: " << total << endl;

【讨论】:

  • 非常感谢您提供了很多帮助,我不只是想把它放进去并称之为好我真的很想了解更多关于它的信息。首先 srand 是 srand(time(NULL)) 只是想我会澄清一下,你能否向我解释一下为什么 add 变量现在能够产生多个随机数而不是仅仅重复同一个?
  • 也因为您删除了 I++,这是否意味着 do/while 循环不需要预增量或后增量来运行?
  • @SpencerTheDude 正确。 whiledo-while 循环仅取决于括号内的条件表达式。但是,该变量必须存在于循环之外。 (我刚刚注意到这个错误并已修复它。)
  • @SpencerTheDude add 变量能够产生多个随机数,因为函数 rand() 在每个循环中都会被调用,然后在其构造和初始化期间存储在 add 中。
  • @TheDude 欢迎。如果此答案解决了您的问题,请单击左上角的复选标记将其标记为已接受。
猜你喜欢
  • 2023-02-06
  • 2020-12-15
  • 1970-01-01
  • 2016-08-07
  • 2018-01-25
  • 2022-08-03
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多