Заменить в числе каждое вхождение цифры a на цифру b - C (СИ)
Формулировка задачи:
Проблема с такой задачей.
Дано число N, а также цифры A и B. Заменить в этом числе каждое вхождение цифры A на цифру B.
Технические условия
Входные данные
Программе даны числа N, A, B (1 ≤ N ≤ 109).
Выходные данные
Вывести полученное число.
Программа выглядит так, только прошла лишь на 88 процентов.
Подскажите, что я не учёл?
#include <stdio.h> #include <string.h> int main() { int N, a[14], c, d; int i = 0, j; scanf("%d %d %d", &N, &c, &d); if(N < 0) { N = -N; } while(N > 0) { a[i] = N % 10; N = N / 10; i++; } for(j = 0; j < i; j++) { if(a[j] == c) { a[j] = d; } } for(j = i - 1; j > 0; j--) { printf("%d", a[j]); } printf("%d\n", a[0]); return 0; }
Решение задачи: «Заменить в числе каждое вхождение цифры a на цифру b»
textual
Листинг программы
#include <stdio.h> #include <conio.h> #include <string.h> int main() { int N,c, d,i=0; char a[14]; scanf("%d %d %d", &N, &c, &d); if(N < 0)N = -N; if(c>9)c=9; if(c<0)c=0; if(d>9)d=9; if(d<0)d=0; while(N > 0) { a[i] = (N % 10); if(a[i] == c)a[i] = d; a[i]+='0';// превратили в букву N = N / 10; i++; } a[i]=0;// конец строки strrev(a); // перевернули строку sscanf(a,"%d",&N);// превратили в число printf("%d",N); getch(); return 0; }
Объяснение кода листинга программы
В этом коде выполняется следующая последовательность действий:
- Ввод исходного числа N, за которым вводятся два числа c и d. Если c или d некорректны (больше 9 или меньше 0), то они заменяются на 0.
- Инициализируется массив a размером 14 для хранения результата.
- Число N приводится к положительному значению, используя операцию модуля (N % 10).
- В цикле while происходит деление числа N на 10 и сохранение остатка в массиве a.
- Если остаток в массиве a равен c, то он заменяется на d.
- Каждое значение в массиве a приводится к числу, добавляя символ '0'.
- После окончания цикла, в массиве a остается одно значение, которое является результатом.
- Строка в массиве a переворачивается с помощью функции strrev.
- Результат в массиве a преобразуется обратно в число с помощью функции sscanf.
- Результат выводится на экран с помощью функции printf.
- Программа ожидает нажатия клавиши с помощью функции getch.
- Программа завершается с кодом 0.
ИИ поможет Вам:
- решить любую задачу по программированию
- объяснить код
- расставить комментарии в коде
- и т.д