Найти произведение всех цифр числа - C (СИ)

Узнай цену своей работы

Формулировка задачи:

Помогите пожалуйста доделать эту программу с помощью указателей)
 int a;
 int m = 1;
 scanf_s("%d", &a);
   for (int i = a % 10; a > 0; a /= 10, i = a % 10 )
{
        printf_s("%d", i);
        m *= i;
}
    printf_n("\n %d\n", m);

Решение задачи: «Найти произведение всех цифр числа»

textual
Листинг программы
#include <stdio.h>
#include <stdlib.h>
 
int main (void)
{
    int a, b, i, n, m;
    printf("a = "); scanf("%d", &a);    // получаем число с клавиатуры
    b = (a<0)? -a : a;                  // если отрицательное
 
    /* узнаем количество чисел */
    for (n=0; b>0; n++)
        b /= 10;
    
    /* создаем массив */
    int * arr;
    if ((arr = (int *) malloc(n * sizeof(int))) == NULL) return -1;
 
    /* разбиваем число на винтики */
    b = (a<0)? -a : a;
    for (i=0; i<n; i++)
    {
        *(arr+i) = b%10;
        b /= 10;
    }
 
    /* находим произведение */
    for (i=0, m=1; i<n; i++)
    {
        m *= *(arr+i);
    }
 
    printf("\nm = %d\n", m);    // результат на экран
    free(arr);                  // освобождаем память
    return 0;
}

Объяснение кода листинга программы

  1. Подключение необходимых библиотек для работы с файлами и математическими операциями
  2. Определение переменной типа int для хранения числа, введенного пользователем
  3. Считывание числа с клавиатуры в переменную a с помощью функции scanf
  4. Приведение числа к положительному значению с помощью операции деления на 0 (если число отрицательное)
  5. Определение переменной типа int для хранения количества чисел в числе
  6. Инициализация переменной n значением 0 и установка условия для цикла while
  7. В цикле while разбиваем число на отдельные цифры, считывая остаток от деления на 10 в переменную b и делится на 10 само число
  8. Создаем динамический массив типа int с помощью оператора new, получая указатель на первый элемент массива
  9. В цикле while считываем каждую цифру числа в отдельный элемент массива
  10. Вычисляем произведение всех элементов массива в цикле for, начиная с i=0 и используя оператор умножения *=
  11. Выводим произведение на экран с помощью функции printf
  12. Освобождаем память, выделенную под массив, с помощью функции free
  13. Завершаем программу с возвращаемым значением 0, что означает успешное выполнение

ИИ поможет Вам:


  • решить любую задачу по программированию
  • объяснить код
  • расставить комментарии в коде
  • и т.д
Попробуйте бесплатно

Оцени полезность:

6   голосов , оценка 3.667 из 5
Похожие ответы