Вывести на экран только те трёхзначные числа у которых все цифры различны - C (СИ)
Формулировка задачи:
вывести на экран только те трёхзначные числа у которых все цифры различны
Решение задачи: «Вывести на экран только те трёхзначные числа у которых все цифры различны»
textual
Листинг программы
#include <stdbool.h>
#include <stdio.h>
bool diff_digits(long n) {
static bool digits[10];
long i;
for (i = 0; i < 10; i++) { digits[i] = false; }
while (n != 0) {
i = n % 10;
if (digits[i]) { return false; }
digits[i] = true;
n /= 10;
}
return true;
}
int main(void) {
long sum = 0;
for (long i = 100; i < 1000; i++) {
if (diff_digits(i)) { sum++; }
}
printf("%ld\n", sum);
return 0;
}
Объяснение кода листинга программы
В этом коде реализована функция diff_digits, которая проверяет, являются ли все цифры в числе различными. Функция использует массив digits, который инициализируется значением false. Затем, при проверке каждой цифры числа, значение этой переменной устанавливается в true. Если встречается число, у которого все цифры различны, функция возвращает true. В функции main создаётся переменная sum, которая инициализируется нулём. Затем в цикле от 100 до 999 (не включая 999) проверяется каждое трёхзначное число на условие, когда все его цифры различны. Если это так, то к переменной sum прибавляется единица. В конце программы выводится значение переменной sum.