Удалить из натурального числа все нечетные цифры (цикл for) - C (СИ)
Формулировка задачи:
Дано натуральное число. Удалить из него все нечетные цифры.
Вот код:
Какое бы число не вводил, на выходе "-14", что не так ? Никак не пойму
#include <stdio.h> #include <conio.h> #include <math.h> main() { unsigned long int n,res,i; int step; printf ("VVEDI NATURAL'NOE CHISLO \n"); scanf ("%d",&n); res=0; for (i=n; n>1; i/10) { if (((i%10)%2==0)) { step=1; res=res+(i%10)*pow(10,step); step++; } else { res=res+i/10; } } printf ("ZNACHENIE %d \n", &n); getch(); return 0; }
Решение задачи: «Удалить из натурального числа все нечетные цифры (цикл for)»
textual
Листинг программы
#include <stdio.h> #include <conio.h> #include <math.h> main() { int n,res,i; int ost,osst; printf ("VVEDI NATURAL'NOE CHISLO \n"); scanf ("%d",&n); res=0; for (i=1; n>=10; n/10) { ost=n%10; osst=ost%2; if (osst==0) { res=res+ost*i; i=i*10; } else { res=res*i; i=i*10; } } printf ("ZNACHENIE %d \n", &res); getch(); return 0; }
Объяснение кода листинга программы
Вывод на экран просьбы ввести натуральное число.
- Ввод числа и его сохранение в переменной
n
. - Инициализация переменной
res
значением 0. - Начинается цикл
for
, который выполняется до тех пор, покаn
больше или равно 10. - В каждой итерации цикла из
n
извлекается последняя цифра (остаток от деления на 10), сохраняется в переменнойost
. - Затем из
ost
извлекается остаток от деления на 2, сохраняется в переменнойosst
. - Если
osst
равно 0, то последняя цифра числа умножается на текущее значениеi
(которое начинается с 1 и увеличивается на 10 в каждой итерации) и добавляется кres
. - Если
osst
не равно 0, то текущее значениеres
умножается на текущее значениеi
и в цикле не происходит изменений. - После окончания цикла выводится на экран значение
res
. - Программа ожидает нажатия клавиши и завершает работу.
ИИ поможет Вам:
- решить любую задачу по программированию
- объяснить код
- расставить комментарии в коде
- и т.д