Удалить из числа заданные цифры - C (СИ)
Формулировка задачи:
По условию необходимо удалить из числа n все 2 и 5 у меня вот что написано
Ввожу :123
Но на выводе получается :-1294965251
#include <stdio.h>
#include <stdlib.h>
#include <math.h>
#include <conio.h>
main () {
int z=0;
int x;
int i=10;
int n ;
int y ;
printf("\n chislo =");
scanf("%i",&n);
while ( n>1 ) {
z=n%10;
i=i-1;
if(z!=2||z!=5) {
y=pow(10,i);
x=x+(z*y);
}
n=n/10;
}
printf("%i\n",x);
getch();
//system("pause");
//return 0;
}Решение задачи: «Удалить из числа заданные цифры»
textual
Листинг программы
#include <stdio.h>
#include <stdlib.h>
#include <math.h>
#include <conio.h>
int main () {
int z = 0;
int x = 0; // x - задано
int i = 0; // стартуем с нуля (10^0 = 1, 10^1 = 10, ...)
int n;
int y;
printf("\n chislo =");
scanf("%i",&n);
while (n >= 1) // 1 тоже число
{
z = n % 10;
if (z!=2 && z!=5) // цифра одновременно должна быть не 2 и не 5, поэтому && (и), а не || (или)
{
y = (int)pow(10.0f, i);
x = x + z*y;
i = i + 1; // увеличиваем счётчик разряда
}
n = n / 10;
}
printf("%i\n",x);
system("pause");
return 0;
}
Объяснение кода листинга программы
- Включаем необходимые заголовочные файлы
- Объявляем переменные: z, x, i, n, y
- Задаём начальное значение x = 0 и i = 0
- Выводим приглашение для ввода числа
- Считываем число в переменную n с помощью функции scanf
- Запускаем цикл while для обработки всех цифр числа
- В каждой итерации цикла проверяем последнюю цифру числа (z) на соответствие условию (не 2 и не 5)
- Если условие выполняется, то выполняем следующие действия:
- Вычисляем значение y как степень 10 в степени i (используем функцию pow)
- Добавляем произведение z и y к x (x = x + z*y)
- Увеличиваем счётчик разряда i на 1
- Делим число n на 10 для перехода к следующей цифре
- После окончания цикла выводим значение x
- Используем функцию system(
pause) для приостановки работы программы до нажатия клавиши - Возвращаем 0 для завершения программы