Найти все трехзначные числа, сумма цифр которых равна данному целому числу - 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. Если сумма равна введенному числу, то число выводится на экран. - Если во время выполнения программы пользователь вводит ноль или отрицательное число, программа завершается.