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