Разместить между первым и последующими цифрами числа ноль

Дано натуральное число N. Разместить между первой и последующими цифрами ноль. Через цикл.

#include <iostream>
using namespace std;

int main() {
  int n, d;
  setlocale(LC_ALL, "Russian");
   
  cout << "Введите натуральное число: ";
  cin >> n;
  
  while(n <= 0){ 
    cout << "Введите натуральное число: ";
    cin >> n;
   }
   
   for (n; n != 0; n /= 10){
     d = n % 10;
     cout << d * 10;
   }
   
}

Ответы (3 шт):

Автор решения: Harry

Так сойдет?

unsigned int add0(unsigned int n)
{
    unsigned int d = 1;
    while( n/d > 9) d*= 10;
    return (n/d)*10*d + n%d;
}

Через for...

while(условие) действие;

эквивалентно

for(; условие; ) действие;

или даже

for(; условие; действие);

Так что

while( n/d > 9) d*= 10; 

эквивалентно

for(; n/d > 9 ; d*= 10); 
→ Ссылка
Автор решения: n1tr0xs

Вот так можно, если я все верно понял:

#include <iostream>
using namespace std;

int main(){
    setlocale(LC_ALL, "Russian");
    int n, d=1;

    do{
        cout << "Введите натуральное число: ";
        cin >> n;
    } while(n<=0);

    while(n/d > 1) d *= 10;
    for( ; d>1; n%=d, d/=10)
        cout << n/d << 0;
    cout << n;

    return 0;
}

→ Ссылка
Автор решения: Mikhailo

Судя по принятому ответу, надо получить не число, как у Harry, а просто вывод на экран? тогда это делается куда проще:

int N;
cin >> N;
string s = to_string(N);
cout << s.substr(0,1) << "0" << s.substr(1) << endl;

И не надо всех этих расчетов.

Для wololo: ничуть не сложнее

string s = to_string(N);
for(int i = 0; i < s.size(); ++i)
    cout << s[i] << (i == s.size()-1 ? "" : "0");
→ Ссылка