Если вы хотите только подсчитать все элементы: предполагаемый массив может содержать только ограниченный диапазон целых чисел, объявить другой массив длины максимальной записью в первом массиве. Итерации через первый массив и увеличение местоположения во втором индексе массива первым массивом, а затем распечатать второй массив.
псевдокод:
int nums[] = {1,2,2,2,3};
int counts[10]; // assume entries in nums are in range 0..9
for(i = 0; i < length of nums; ++i)
{
num = nums[i];
if(num < 0 or num >= length of counts)
handle this somehow
++counts[num];
}
for(i = 0; i < length of counts; ++i)
{
printf("%d occurs %d times\n", i, counts[i]);
}
Если вы хотите посчитать конкретное значение:
int count_in_array(int value, int* array, int length)
{
int count = 0;
int i;
for(i = 0; i < length; ++i)
{
if(array[i] == value)
++count;
}
return count;
}
...
int nums[] = {1,2,2,2,3};
printf("%d occurs %d times\n", 2, count_in_array(2, nums, 5));
http://rapidpurple.com/blog/tutorials/c-tutorials/programming-in-c -arrays-and-loops/ –
Вам следует попробовать опубликовать код или псевдокод или мысли или что-нибудь о вашей попытке. Мое предложение - написать, как бы вы сделали это самостоятельно (если бы вы были машиной) на бумаге. Затем посмотрите, можете ли вы перевести это на код. Вы обязательно достигнете икоты в переводе, но тогда у вас есть гораздо меньше и более конкретные вопросы, о которых нужно подумать. – rliu
Существуют ли ограничения на диапазон значений, которые могут возникать в массиве? Если это только положительные значения менее 1000, скажем, тогда это тривиально - просто у вас есть второй массив для подсчетов. Если может возникнуть какое-либо возможное значение, это не так просто. – Bull