You could always go with brute force.
Code:
#include <stdio.h>
#define SIZE 10
static void clear(unsigned *counter, int from)
{
int i;
for (i = from; i < SIZE; i++)
counter[i] = 0x0;
}
static void print(unsigned *counter)
{
int i;
for (i = 0; i < SIZE; i++)
printf("%x|", counter[i]);
fflush(stdout);
printf("\r");
}
int main(void)
{
unsigned counter[SIZE] = {0};
int i;
while (1)
{
counter[SIZE - 1]++;
for (i = SIZE - 1; i > 0; i--)
{
if (counter[i] == 0x10)
{
counter[i - 1]++;
clear(counter, i);
}
}
if (counter[0] == 0x10)
break;
print(counter);
}
printf("\n");
return 0;
}