Сгенерировать 15 случайных чисел, в каждом из которых есть указанная цифра - C (СИ)
Формулировка задачи:
Сгенерировать 15 случайных чисел, в каждом из которых есть указанная цифра из клавы.
Решение задачи: «Сгенерировать 15 случайных чисел, в каждом из которых есть указанная цифра»
textual
Листинг программы
#include <stdio.h> #include <stdlib.h> #include <time.h> #include <math.h> #define MAX_DIGITS (6) #define NUMBERS_NEEDED (15) int main(void) { int digit, number, i, j, power; srand(time(NULL)); printf("Digit: "); if ( scanf("%d", &digit) != 1 || digit < 0 || digit > 9 ) return 1; for ( i = 0; i < NUMBERS_NEEDED; ++i ) { power = (int)pow(10.0, rand() % MAX_DIGITS); number = 0; for ( j = (int)pow(10.0, MAX_DIGITS); j; j /= 10 ) number += ( ( j == power ) ? digit : rand() % 10 ) * j; printf("%d\n", number); } return 0; }
Объяснение кода листинга программы
- Подключение необходимых библиотек для работы со случайными числами и временной меткой
- Определение максимального количества цифр в числе (6), которое будет использоваться в генерации случайных чисел
- Установка количества чисел, которые нужно сгенерировать (15)
- Объявление переменных: digit (цифра), number (число), i (счетчик), j (счетчик), power (мощность)
- Инициализация генератора случайных чисел с помощью текущего времени
- Вывод на экран запроса на ввод цифры
- Проверка корректности ввода. Если ввод некорректен, программа завершается
- Основной цикл, который генерирует и выводит на экран 15 случайных чисел
- Генерация случайной мощности для каждого числа, начиная с 0 и до максимального значения (включительно)
- Инициализация числа, которое будет генерироваться, значением 0
- Основной цикл внутри основного цикла, который генерирует каждую цифру числа, начиная с самой старшей (с наибольшей мощностью) до самой младшей (с наименьшей мощностью)
- Если цифра в текущей позиции равна заданной цифре, то она добавляется в число, умноженная на соответствующую мощность
- После завершения внутреннего цикла, число выводится на экран
- Программа завершается
ИИ поможет Вам:
- решить любую задачу по программированию
- объяснить код
- расставить комментарии в коде
- и т.д