随机整数/出现(c++)问题
Random integer / occurrences (C++) issues
我最近被一个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] << " ";
}
这将访问数组的边界之外(因为范围是从0
到SIZE-1
)。在循环体内,将SIZE
更改为index
。
但是,我认为重读你的问题陈述会对你有帮助。具体来说:
使用一个包含十个整数的数组,例如
counts
,来存储0、1、…的计数。9 s
你使用一个数组来存储你的随机数。这完全没有必要。您不需要跟踪生成的数字。您只需要在适当的计数上加上1,然后就可以简单地丢弃随机数。
你应该有一个名为counts
的数组,其中counts[0]
存储到目前为止0
s的数量,counts[1]
存储1
s的数量,等等。然后,您就不需要zero
、one
、two
等这些可怕的变量了。如果您发现自己像这样定义变量名(其中的数字越来越多),那么您可能应该使用数组来代替。
相关文章:
- 警告处理为错误这里有什么问题
- 最小硬币更换问题(自上而下方法)
- 为"adjacent"变量赋值时出现问题
- 我的神经网络不起作用 [XOR 问题]
- 在Ubuntu 16.04上安装Cilk时出现问题
- C++我的数学有什么问题,为什么我的代码不能正确循环
- 编译包含字符串的代码时遇到问题
- Project Euler问题4的错误解决方案
- 问题:什么是QAbstractItemView::NoEditTriggers的反面
- 在编译C++代码(具有dlib和opencv)到WASM时面临问题
- 在进程中对同一管道进行读取和写入时C++管道出现问题
- 静态数据成员的问题-修复链接错误会导致编译器错误
- C++ 雷神库 - 使用资源加载器类时出现问题(不命名类型)
- 一个关于在C++中重载布尔运算符的问题
- 首要问题的答案让值班员搞错了
- setlocale的C++土耳其字符串问题
- 如何重构类层次结构以避免菱形问题
- 基于boost的程序的静态链接——zlib问题
- C++格式化输出问题
- 使用mongocxx驱动程序时包含头文件问题