jta*_*523 2 c++ arrays random for-loop if-statement
我目前一直困在一个C++问题大约一个半小时.这是问题:
编写一个程序,生成0到9之间的100个随机整数,并显示每个数字的计数.(提示:使用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;
}
Run Code Online (Sandbox Code Playgroud)
您有未定义的行为,因为您将其SIZE
用作数组的索引而不是index
:
for (index = 0; index < SIZE; index++)
{
integers[SIZE] = rand() % 10;
cout << integers[SIZE] << " ";
}
Run Code Online (Sandbox Code Playgroud)
这将访问数组的边界之外(因为范围是从)0
到SIZE-1
.在循环体内,SIZE
改为index
.
但是,我认为它会帮助您重新阅读您的问题陈述.特别:
例如,使用十个整数的数组
counts
来存储0s,1s,...,9s的计数
而是使用数组来存储随机数.这根本不是必需的.您无需跟踪生成的数字.您只需要在适当的计数中加1,然后您就可以简单地丢弃随机数.
你应该简单地用所谓的阵列counts
,其中counts[0]
门店数量0
这么远,counts[1]
门店数量1
,S等等,那么你不需要这些可怕的变量叫zero
,one
,two
,等等.如果您发现自己定义了类似的变量名称(其中数字越来越多),那么您应该使用数组代替.
归档时间: |
|
查看次数: |
834 次 |
最近记录: |