Вывести все трехзначные числа, сумма цифр которого равна А и число кратно В - C (СИ)
Формулировка задачи:
#include<stdio.h>
#include<conio.h>
#include<math.h>
main()
{int a, b, x, i=0, j=0, k=0;
clrscr();
printf("Vvedite a");
scanf("%i", &a);
printf("Vvedite b");
scanf("%i", &b);
x=100;
i=fdiv(x,1);
j=fdiv(x,10);
k=fdiv(x,100);
x+=1;
while (x<=999)
for(x=100;x<1000;x++);
{if (fmod(x,b)=0) if (a=i+j+k) printf("x=%i", x);
}
getch()
}Решение задачи: «Вывести все трехзначные числа, сумма цифр которого равна А и число кратно В»
textual
Листинг программы
#include <stdio.h>
#include <stdlib.h>
#define dec ( 10 )
#define p ( 3 )
int main() {
int m[ p ] = { 123, 456, 789 };
size_t i = 0, tmp, cnt;
while ( i < p ) {
cnt = p;
tmp = 0;
while ( cnt-- ) {
tmp += m[ i ] % dec;
m[ i ] /= dec;
}
m[ i++ ] = tmp;
}
i = 0;
while ( i < p )
printf( "%4i", m[ i++ ] );
puts("");
return 0;
}
Объяснение кода листинга программы
- Подключение необходимых библиотек для работы с файлами и математическими операциями.
- Определение двух констант: dec (10) - сумма цифр трехзначных чисел кратна 10, p (3) - количество трехзначных чисел в массиве.
- Создание массива m размером p, содержащего трехзначные числа.
- Переменная i инициализируется нулем, tmp - аккумулятором суммы цифр, cnt - счетчиком количества итераций в цикле.
- В цикле while (i < p) происходит вычисление суммы цифр текущего трехзначного числа и разделение числа на декаду (10).
- Внутренний цикл while (cnt--) выполняет перебор всех цифр текущего числа, суммируя их и уменьшая значение cnt на единицу.
- После завершения внутреннего цикла, полученная сумма цифр сохраняется в аккумулятор tmp.
- После завершения внешнего цикла, значение аккумулятора tmp заменяет текущее число в массиве m, а значение i увеличивается на единицу.
- После завершения цикла, в цикле while (i < p) происходит вывод на экран всех трехзначных чисел, сумма цифр которых кратна 10.
- В конце программы возвращается 0, сигнализируя о успешном завершении работы программы.