Определить, делится ли введённое число на сумму своих цифр - 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; }
Объяснение кода листинга программы
- Подключение стандартной библиотеки файла
для работы с вводом/выводом данных - Определение функции sum, которая принимает целое число и возвращает сумму его цифр
- Если число не равно 0, то функция возвращает сумму чисел: число % 10 (остаток от деления на 10) + функция sum(число / 10) (число делится на 10 и функция рекурсивно вызывается для результата деления)
- Если число равно 0, то функция возвращает 0
- Ввод/вывод данных в функции main. Пользователю предлагается ввести число, а затем выводится сообщение
Number:
для приглашения к вводу. - С помощью функции scanf вводится число и сохраняется в переменной n.
- С помощью цикла while продолжается запрос на ввод числа до тех пор, пока пользователь не введет ноль.
- Внутри цикла вычисляется значение функции sum для введенного числа и сохраняется в переменной result.
- С помощью условного оператора if выводится сообщение
No
, если результат функции sum не равен нулю, иначе выводится сообщениеYes
. - Возврат 0 в основной функции main означает успешный конец работы программы.
ИИ поможет Вам:
- решить любую задачу по программированию
- объяснить код
- расставить комментарии в коде
- и т.д