Найти все числа от 0 до 200, которые нацело делятся на сумму своих цифр - C (СИ)
Формулировка задачи:
- #include <stdio.h>
- #include <stdlib.h>
- #include <stdlib.h>
- int main()
- {
- int p[200], i, *p_1, a, b, c, r, q;
- for(i=0;i<200;i++)
- *p_1=p[i];
- a=i/100;
- b=(i-a)/10;
- c=i-a-b;
- r=a+b+c;
- q=*p_1/r;
- if(q==0){
- printf("%d", q);
- getchar();
- return 0;
- }}
Решение задачи: «Найти все числа от 0 до 200, которые нацело делятся на сумму своих цифр»
- #include <stdio.h>
- #include <stdlib.h>
- int main()
- {
- int p, i, s;
- for(i=1;i<=200;i++) {
- p=i;
- for(s=0; p; p/=10) s += p%10;
- if (i%s==0) printf("%d\n", i);
- }
- getchar();
- return 0;
- }
Объяснение кода листинга программы
В этом коде используется два вложенных цикла. Цикл for(i=1;i<=200;i++) итерирует по всем числам от 1 до 200. Внутри этого цикла есть второй цикл for(s=0; p; p/=10), который вычисляет сумму цифр текущего числа. Переменная s инициализируется нулем. Затем в каждой итерации цикла значение переменной p делится на 10 и результат прибавляется к переменной s. Таким образом, в переменной s накапливается сумма цифр текущего числа. Если число нацело делится на сумму своих цифр (т.е. i%s==0), то оно выводится на экран с помощью функции printf. Код выполняется до тех пор, пока не будут выполнены два условия: 1) i не станет равным 201; 2) не будет достигнуто условие остановки внутреннего цикла, когда p станет равным нулю. Это произойдет, когда число будет иметь одну цифру.
ИИ поможет Вам:
- решить любую задачу по программированию
- объяснить код
- расставить комментарии в коде
- и т.д