Подсчитать количество оставшихся чисел в изображенном числе - 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
). - Программа завершается.
ИИ поможет Вам:
- решить любую задачу по программированию
- объяснить код
- расставить комментарии в коде
- и т.д