Определить, делится ли введённое число на сумму своих цифр - C (СИ)

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

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

написала программу, но в ней есть ошибки, я начинающий.. и не понимаю где и почему, так же, почему выводит на экран оба printf...
#include <stdio.h> 
#include <conio.h>
int main() 
{ 
    int a, s=0, z; 
    printf ("vvedite a \n"); 
    scanf ("%d", &a); 
    
    while (a!=0 ) 
    { 
        z = a % 10; 
        a = a / 10; 
        s = s + z; 
    } 
    //printf("sum tsifr = %d\n",s);
 
{if ((a<9) || (a>99)) {printf("error!\n4islo ne 2-h zna4noe\n");} 
if (a%s==0) {printf("2-h zna4noe 4islo delitsea na summu svoih tsifr\n");}
}

getch(); 
}

Решение задачи: «Определить, делится ли введённое число на сумму своих цифр»

textual
Листинг программы
#include <stdio.h>
 
unsigned sum(unsigned n) {
    return ( n ) ? n % 10 + sum(n / 10) : 0;
}
 
int main(void) {
    unsigned n;
    
    while ( printf("Number: ") && scanf("%u", &n) == 1 )
        printf("%s\n", ( n % sum(n) ) ? "No" : "Yes");
    
    return 0;
}

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

  1. Подключение стандартной библиотеки файла для работы с вводом/выводом данных
  2. Определение функции sum, которая принимает целое число и возвращает сумму его цифр
  3. Если число не равно 0, то функция возвращает сумму чисел: число % 10 (остаток от деления на 10) + функция sum(число / 10) (число делится на 10 и функция рекурсивно вызывается для результата деления)
  4. Если число равно 0, то функция возвращает 0
  5. Ввод/вывод данных в функции main. Пользователю предлагается ввести число, а затем выводится сообщение Number: для приглашения к вводу.
  6. С помощью функции scanf вводится число и сохраняется в переменной n.
  7. С помощью цикла while продолжается запрос на ввод числа до тех пор, пока пользователь не введет ноль.
  8. Внутри цикла вычисляется значение функции sum для введенного числа и сохраняется в переменной result.
  9. С помощью условного оператора if выводится сообщение No, если результат функции sum не равен нулю, иначе выводится сообщение Yes.
  10. Возврат 0 в основной функции main означает успешный конец работы программы.

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


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

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

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