Удалить из натурального числа все нечетные цифры (цикл 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. - Программа ожидает нажатия клавиши и завершает работу.