Подсчитать количество оставшихся чисел в изображенном числе - C (СИ)
Формулировка задачи:
Дано натуральное число n. Удалить из записи числа все нули и единицы. Подсчитать количество оставшихся чисел в изображенном числе.
В переменную С у меня записывается количество оставшихся чисел после удаления это работает правильно а вот в S у меня записывается преобразованное число и туда как раз оно пишется не верно, а точно если ввести небольшое число то оно запишется задом на перед а если ввести большое число то оно тоже запишется задом наперед и еще появятся лишние цифры при этом переменная C будет показывать правильное значение.
#include "stdio.h"
int main()
{
int c,s=0,n;
printf("Введите натуральное число=");
scanf("%d",&n);
if(n<=0)
return 1;
else
for(c=0;n>0;n/=10)
{if(n%10>1)
{
c++;
s*=10;
s+=n%10;
}
}
printf("Новое число=%d\nКоличество новых чисел=%d\n",c,s);
return 0;
}Решение задачи: «Подсчитать количество оставшихся чисел в изображенном числе»
textual
Листинг программы
#include "stdio.h"
int main()
{
long long c,s=0,n, z, d;
printf("Введите натуральное число: ");
scanf("%Ld",&n);
if(n<=0) return 1;
for(c=0,z=1; n>0; n/=10) {
if((d=n%10)>1) {
c++;
s+=d*z;
z*= 10;
}
}
printf("Новое число= %Ld\nКоличество новых чисел= %d\n",s, c);
return 0;
}
Объяснение кода листинга программы
В этом коде:
- Объявляются переменные
c,s,n,z,d. - Пользователю предлагается ввести натуральное число.
- Если число введено некорректно (меньше или равно нулю), программа завершается.
- Инициализируются счетчики
cиzи устанавливаются в 0 и 1 соответственно. - Начинается цикл, который будет выполняться до тех пор, пока число
nбольше нуля. - Внутри цикла выполняется проверка: если последняя цифра числа
nбольше 1, то она добавляется кc, а произведение этой цифры иzдобавляется кs. Затемzумножается на 10. - После выполнения цикла выводится новое число (
s) и количество новых чисел (c). - Программа завершается.