Найти все трехзначные числа, сумма цифр которых равна данному целому числу - C (СИ)
Формулировка задачи:
Найти все трехзначные числа, сумма цифр которых равна данному целому числу.
Помогите , пожалуйста, решить. Желательно , чем проще, тем лучше=) Решение задачи: «Найти все трехзначные числа, сумма цифр которых равна данному целому числу»
textual
Листинг программы
- #include <stdio.h>
- int sum_digits(int n)
- {
- int sum = 0;
- while( n != 0 ) {
- sum += n % 10;
- n /= 10;
- }
- return sum;
- }
- int main(void)
- {
- while( 1 ) {
- int n;
- do {
- puts("Input number:");
- } while( scanf("%d", &n) != 1 );
- if( n <= 0 || n > 27 ) { break; }
- int i;
- for( i = 100; i < 1000; ++i ) {
- if( sum_digits(i) == n ) {
- printf("%d\n", i);
- }
- }
- }
- return 0;
- }
Объяснение кода листинга программы
В этом коде:
- Создана функция
sum_digits
, которая принимает целое число и возвращает сумму его цифр. Для этого используется циклwhile
, который выполняется до тех пор, пока число не станет равным нулю. В каждой итерации цикла к сумме прибавляется последняя цифра числа, затем число делится на 10. - В функции
main
создается бесконечный цикл, который продолжается до тех пор, пока пользователь не введет число, меньшее или равное нулю или больше 27. - Внутри цикла пользователю предлагается ввести число.
- Если число удовлетворяет условиям, то в основной цикл программы вводится переменная
i
и инициализируется значением 100, а затем с помощью циклаfor
перебираются все трехзначные числа от 100 до 999. - Для каждого числа вычисляется сумма его цифр с помощью функции
sum_digits
. Если сумма равна введенному числу, то число выводится на экран. - Если во время выполнения программы пользователь вводит ноль или отрицательное число, программа завершается.
ИИ поможет Вам:
- решить любую задачу по программированию
- объяснить код
- расставить комментарии в коде
- и т.д