C/C++

Основы программирования на C. Задача. Помогите пожалуйста

Лучше так:
 #include  
int main()
{
int i, n = 0, troika[7];
unsigned long long N;
scanf("%llu", &N);
while (N)
{
troika[n] = N % 1000;
N /= 1000; n++;
}
printf("%d ", troika[n - 1]);
for (i = n - 2; i >= 0; i--)
printf("%03d ", troika[i]);
printf("\n"); getchar();
getchar(); return 0;
}
* *
* *
66 572
Лучший ответ
 #include  
// unsigned long всегда 32 битное число
// 'G MMM KKK NNN\0' - 14 байт
#define ULONG_BUF_SIZE 14
//-------------------------------------------------------------------
void show_num( unsigned long num )
{
char ulong_buf[ULONG_BUF_SIZE];
char buf[ULONG_BUF_SIZE];
unsigned long idx = 0;
unsigned long ulong_buf_idx = 0;
// В буфере buf сформируем строковое представление числа
// в обратной записи: 4123456789 => '9876543214'
while( num )
{
buf[idx] = (num % 10) + '0';
num = num / 10;
idx++;
}
//buf[idx] = '\0';
//printf("DEBUG: buf: '%s'\n", buf);
// Теперь будем формировать строку с числом
while( idx )
{
idx--;
ulong_buf[ ulong_buf_idx ] = buf[ idx ];
ulong_buf_idx++;
// Если текущий индекс без остатка делится на три,
// и он больше нуля то добавим пробел
if( idx && (idx % 3 == 0) )
{
ulong_buf[ ulong_buf_idx ] = ' ';
ulong_buf_idx++;
}
}
ulong_buf[ ulong_buf_idx ] = '\0';
printf("'%s'\n", ulong_buf );
}
//-------------------------------------------------------------------
int main( int argc, char* argv[] )
{
unsigned long num = 4123456789;
printf("Разделение числа на цифры по три: ");
show_num( num );
return 0;
}
 #include  
#include

int main() {
int n, len, i;
char str[20], triad[4];

printf("Введите положительное число: ");
scanf("%d", &n);

sprintf(str, "%d", n);
len = strlen(str);

if (len