【问题标题】:C++ Random Function making smiley facesC++ 随机函数制作笑脸
【发布时间】:2015-01-27 17:01:15
【问题描述】:

我正在开发一个战舰 c++ 程序。我正在测试我想如何设置船只和水。我有一个数组,我使用 for 循环为数组内的每个 int 创建一个随机数。它生成的随机数是笑脸。

#include <iostream>
#include <cstdlib>
using namespace std;

int main(int argc, char *argv[]) {
    int picks = 0;
    char arena[25] = {};
    for(int i = 0; i != 24; i++) {
        srand(time(0));
        picks = rand() % 3;
        arena[i] = picks;
    }
    for(int i = 0; i != 24; i++)
    cout << arena[i];
    cout << endl;
    for(int i = 0; i != 24; i++) {
        if(arena[i] = 1)
            cout << "~";
        else if(arena[i] = 2)
            cout << "~";
        else if(arena[i] = 3)
            cout << "#";
    }
    cout << endl;

    system("PAUSE");
}

【问题讨论】:

  • srand(time(0)) 把它放在循环开始之前
  • 程序输出arena[i]时,ascii字符1、2会显示为笑脸,1是白底黑字,2是黑底白字。 0 应该在屏幕上留下空白点。
  • 您正在将二进制代码打印为字符。将它们打印为数字:%d,你会看到你有你期望的数字。
  • 天哪,我应该已经注意到了,为 derp 感到抱歉

标签: c++ random


【解决方案1】:

您正在生成 0 到 2 之间的值,并将它们分配给 character 数组的元素,这样当它们被打印出来时,带有这些代码的字符(其中显然是笑脸)被打印出来。目前尚不清楚您真正想要什么,但如果您希望为每个 0 值打印 0,那么您可以打印 (arena[i]+'0') 代替(或者,更好的是,按照其他人的建议正确格式化输出)。

【讨论】:

  • 感谢您的帮助!我应该注意到了!
【解决方案2】:

1.将srand(time(NULL))放在循环之前。
2.picks = rand() % 3 ==> picks = rand() % 3 + 1
3.if (arena[i] = 1) ==> if (arena[i] == 1)

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2020-11-16
    • 2014-04-27
    • 1970-01-01
    • 1970-01-01
    • 2014-01-16
    • 2013-06-27
    • 2011-06-26
    • 2018-12-13
    相关资源
    最近更新 更多