随机整数/出现(c++)问题

Random integer / occurrences (C++) issues

本文关键字:c++ 问题 出现 整数 随机      更新时间:2023-10-16

我最近被一个c++问题困了大约一个半小时。问题是:

编写程序,生成100个0到9之间的随机整数,并显示每个数字的计数。(提示:使用rand()% 10生成0到9之间的随机整数。使用一个包含十个整数的数组,比如计数,用来存储O、l、…的计数。9。)

这是我目前得到的。我想我已经很接近了,但是对于每个随机整数的出现次数(或计数),我总是得到"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;
}

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

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

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

但是,我认为重读你的问题陈述会对你有帮助。具体来说:

使用一个包含十个整数的数组,例如counts,来存储0、1、…的计数。9 s

你使用一个数组来存储你的随机数。这完全没有必要。您不需要跟踪生成的数字。您只需要在适当的计数上加上1,然后就可以简单地丢弃随机数。

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