我需要循环遍历一个数组并查找数组中数字的出现次数,然后将出现的次数输出到新数组中。
void create_hist(double input[], int num_of_inputs, int output[])
{
int num_to_check = input[0];
int counter = 0;
for (int i = 0; i < num_of_inputs; i++)
{
if (input[i] == num_to_check)
{
counter++; /* it was found */
}
output[i] = counter;
}
return;
}
考虑输入由 input[3] ={0, 0 ,0}
组成。输出应为 output[3] = {3, 0, 0}
。
当前输出是output[3] = {1, 2, 3}
——我是否需要创建另一个数组来保存每个循环的值,然后将其输出。我只是迷失了这一点。
最佳答案
看到这里的问题是你的输入数组是 {0,0,0}
,所以在开始时你已经将 num_to_check
初始化为 0 ,所以当你迭代时for 循环第一次 if 条件成立,计数器增加 1,在下一次迭代中,if 语句再次为 true,因为 input[1]
和 num_to_check
是 0 ,所以现在计数器再次增加 1 ,并且在最后一次迭代中发生同样的情况,这就是您获得输出为 {1,2,3}
的原因。您不需要创建另一个数组,代替 output[i]
下标中的 i
,使用其他变量 j
并适当递增它。
关于检查数组的出现次数并输出到新数组。 C,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/51832022/