Этот код:
#include <stdio.h>
int main(void)
{
int array[] = { 0, 0, 0, 0, 4, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 3, };
int a_size = sizeof(array)/sizeof(array[0]);
int i = 0;
while (i < a_size)
{
if (array[i] == 0)
{
int j;
for (j = i; j < a_size; j++)
if (array[j] != 0)
break;
printf("%d\n", j - i);
i = j;
}
else
i++;
}
return 0;
}
производит этот выход:
4
1
12
Если это то, что вы хотите, это примерно то, что вам нужно. Если это не то, что вы хотите, вам нужно более четко объяснить, что именно вы хотите.
Пересмотренный код пересмотренного ожидаемого результата:
#include <stdio.h>
int main(void)
{
int array[] = { 0, 0, 0, 0, 4, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 3, };
int a_size = sizeof(array)/sizeof(array[0]);
int i = 0;
while (i < a_size)
{
if (array[i] == 0)
{
int j;
for (j = i; j < a_size; j++)
if (array[j] != 0)
break;
int k = j - i;
while (k > 0)
printf(" %d", k--);
i = j;
}
else
{
printf(" '");
i++;
}
}
putchar('\n');
return 0;
}
Пересмотренный выход:
4 3 2 1 ' 1 ' 12 11 10 9 8 7 6 5 4 3 2 1 '
Пожалуйста, объясните больше! я не понимаю ... – MeNa
В основном я хочу отобразить обратный отсчет, который требуется до следующего ненулевого номера , для первого случая ... пока он не достигнет числа «4», покажите обратный отсчет от первого 0 до этого 4 так 4,3,2,1 «фактическое число». Тогда из этого 4 до 1 будет только 1 ноль so: 1, «фактическое число» и т. Д. –
Ну, вам разрешено читать массив несколько раз? Какова цель вашей программы? –