【问题标题】:I work at a program that generate random numbers and I want to store the numbers in an array我在一个生成随机数的程序中工作,我想将这些数字存储在一个数组中
【发布时间】:2019-09-02 20:08:25
【问题描述】:

我昨天开始学习 C++,现在我尝试创建一个程序来生成应该存储在数组中的随机数。问题是它只存储最后生成的数字。这是我的代码(对不起,如果它看起来很糟糕 - 可能真的很糟糕):

int num = 0;
int i = 0;
int generatedNumbers[10];

int main()
{
    srand(time(NULL));
    num = rand() % 10; 
    generatedNumbers[i] = num; 
    if (num != 0) {
        cout << num << endl;
        return choice();
    } else {
    main();
    }
}

int choice() {
   [.....USELESS STUFF....]
                cout << generatedNumbers[i] << endl;
}

假设程序生成数字:3、1、8、9。如果我想查看存储在 generatedNumbers 中的数字,唯一出现的数字是最后一个(在本例中为 9),它显示为 4次(在这种特殊情况下)。我很确定很容易解决这个问题,但老实说我有点失去耐心。 非常感谢!

【问题讨论】:

  • 打开你的 C++ 书中解释如何使用for 循环的章节并阅读它。以这种方式调用main() 是完全错误的。阅读您的 C++ 书籍,并使用 for 循环。
  • 你在学习什么资源?你不能调用main,你不应该使用全局变量,可能rand也应该被&lt;random&gt;设施替换。
  • 谢谢你们!在另一个函数中调用main 并使用全局变量时,我会更加小心。我没有书可以学习,我只是读了一些基础理论,我对自己说,解决一些问题应该很有趣。就是这样。
  • @Andrew 你应该以结构化的方式学习 C++。它有很多你需要遵循的怪癖和规则,如果你破坏它们,编译器不会警告你。见stackoverflow.com/questions/388242/…

标签: c++ arrays random numbers


【解决方案1】:

替换

num = rand() % 10; 
generatedNumbers[i] = num;

while (i<10) {
    num = rand() % 10; 
    generatedNumbers[i] = num;
    i = i + 1;
}

并在调试器下逐步运行您的程序以了解发生了什么。

【讨论】:

  • 推荐一个for循环来代替while (i&lt;10)i = i + 1;
  • 视情况而定。在基本层面上,使用while 更容易理解执行顺序。 for 是更复杂的指令。
猜你喜欢
  • 2021-08-23
  • 1970-01-01
  • 2020-08-31
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2021-02-15
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多