【问题标题】:Random integer / occurrences (C++) issues随机整数/出现次数 (C++) 问题
【发布时间】:2013-04-28 10:54:31
【问题描述】:

我目前被一个 C++ 问题困扰了大约一个半小时。问题来了:

编写一个程序,生成 100 个 0 到 9 之间的随机整数并显示每个数字的计数。 (提示:使用 rand() % 10 生成0到9之间的随机整数。使用十个整数的数组, 说计数,以存储 O's、l's 的数量的计数。 .. , 9's.)

这就是我目前所拥有的。我想我已经很接近了,但是对于每个随机整数的出现(或计数),我不断得到“0”。任何帮助将不胜感激。

const int SIZE = 100;

int main()
{
int integers[SIZE];
int index;
int zero = 0;
int one = 0;
int two = 0;
int three = 0;
int four = 0;
int five = 0;
int six = 0;
int seven = 0;
int eight = 0;
int nine = 0;

cout << "The following 100 integers are random:" << endl;
cout << endl;

srand(time(0));

for (index = 0; index < SIZE; index++)
{
    integers[SIZE] = rand() % 10;
    cout << integers[SIZE] << " ";
}

cout << endl;

for (index = 0; index < SIZE; index++)
{
    if (integers[index] == 0)
    {
        zero += 1;
    }
}

for (index = 0; index < SIZE; index++)
{
    if (integers[index] == 1)
    {
        one += 1;
    }
}

for (index = 0; index < SIZE; index++)
{
    if (integers[index] == 2)
    {
        two += 1;
    }
}

for (index = 0; index < SIZE; index++)
{
    if (integers[index] == 3)
    {
        three += 1;
    }
}

for (index = 0; index < SIZE; index++)
{
    if (integers[index] == 4)
    {
        four += 1;
    }
}

for (index = 0; index < SIZE; index++)
{
    if (integers[index] == 5)
    {
        five += 1;
    }
}

for (index = 0; index < SIZE; index++)
{
    if (integers[index] == 6)
    {
        six += 1;
    }
}

for (index = 0; index < SIZE; index++)
{
    if (integers[index] == 7)
    {
        seven += 1;
    }
}

for (index = 0; index < SIZE; index++)
{
    if (integers[index] == 8)
    {
        eight += 1;
    }
}

for (index = 0; index < SIZE; index++)
{
    if (integers[index] == 9)
    {
        nine += 1;
    }
}

cout << "The number of zeros in the random list are " << zero << endl;
cout << "The number of ones in the random list are " << one << endl;
cout << "The number of twos in the random list are " << two << endl;
cout << "The number of threes in the random list are " << three << endl;
cout << "The number of fours in the random list are " << four << endl;
cout << "The number of fives in the random list are " << five << endl;
cout << "The number of sixes in the random list are " << six << endl;
cout << "The number of sevens in the random list are " << seven << endl;
cout << "The number of eights in the random list are " << eight << endl;
cout << "The number of nines in the random list are " << nine << endl;

getch();

return 0;

}

【问题讨论】:

    标签: c++ arrays if-statement random for-loop


    【解决方案1】:

    您有未定义的行为,因为您使用 SIZE 作为数组的索引,而不是 index

    for (index = 0; index < SIZE; index++)
    {
        integers[SIZE] = rand() % 10;
        cout << integers[SIZE] << " ";
    }
    

    这将访问数组边界之外(因为范围是从0SIZE-1)。在循环体内,将SIZE 更改为index

    但是,我认为它会帮助您重新阅读您的问题陈述。具体来说:

    使用一个由十个整数组成的数组,比如counts,来存储 0、1、...、9 的数量

    您改为使用数组来存储随机数。这根本没有必要。您不需要跟踪生成的数字。您只需将 1 添加到适当的计数,然后您可以简单地丢弃随机数。

    你应该有一个名为counts的数组,其中counts[0]存储0s到目前为止的数量,counts[1]存储1s的数量,等等。然后你不需要这些可怕的变量称为zeroonetwo 等等。如果您发现自己定义了这样的变量名称(其中的数字越来越多),那么您可能应该改用数组。

    【讨论】:

    • 谢谢,帮了大忙
    • @jtarr523 请记住,每当您开始一遍又一遍地复制相同的代码时,您可能应该重新考虑自己在做什么。
    猜你喜欢
    • 1970-01-01
    • 2011-08-02
    • 1970-01-01
    • 2010-11-25
    • 1970-01-01
    • 2012-04-13
    • 2011-05-21
    • 1970-01-01
    • 2018-08-10
    相关资源
    最近更新 更多