Распечатать числа в диапазоне от 1 до N, у которых произведение первой и второй цифры справа равны числу M - C (СИ)
Формулировка задачи:
Решаются две задачи: первая по Вашему варианту, вторая со сдвигом 8. Решение двух задач реализовать в одной программе. В диалоговом режиме вводится некоторое число N (В диапазоне от 1 до 2000). Программа должна вывести числа, определенные заданием в виде нескольких колонок, выровненных по правому краю. Все числа от 1 до N натуральные.
Примечание: первая задача реализуется на основе оператора "for", а вторая – оператора "while". Комментарии в программе обязательны.
.
1) Распечатать числа в диапазоне от 1 до N, у которых произведение первой и второй цифры справа равны числу M.
завтра экзамен нужна эта программапомогите пожалуйста
Решение задачи: «Распечатать числа в диапазоне от 1 до N, у которых произведение первой и второй цифры справа равны числу M»
textual
Листинг программы
#include <stdio.h>
#include <stdlib.h>
#include <wchar.h>
#include <locale.h>
int main(int argc, char *argv[]) {
setlocale(LC_ALL, "ru_RU.UTF-8");
int size;
int num;
fwprintf(stdout, L"Введите размер массива натуральных чисел: ");
fwscanf(stdin, L"%d", &size);
fwprintf(stdout, L"Введите число: ");
fwscanf(stdin, L"%d", &num);
unsigned int array[size];
unsigned int i;
for(i = 0; i < size; ++i) {
array[i] = i + 1;
}
int n1, n2;
unsigned int j;
for(i = 9, j = 1; i < size; ++i) {
n1 = array[i] % 10; // первая цифра справа
n2 = (array[i] / 10) % 10; // вторая цифра справа
if(num == (n1 * n2)) {
if(j % 5) { // печать в 5 столбиков
fwprintf(stdout, L"%6d", array[i]);
} else {
fwprintf(stdout, L"%6d\n", array[i]);
}
++j;
}
}
if(--j % 5)
fwprintf(stdout, L"\n");
return EXIT_SUCCESS;
}
Объяснение кода листинга программы
- Подключение необходимых библиотек для работы с консолью и вводом/выводом данных
- Установка локали на русский язык
- Ввод размера массива натуральных чисел и числа M
- Создание массива натуральных чисел размером введенным пользователем
- Заполнение массива натуральными числами от 1 до N
- Поиск чисел в массиве, у которых произведение первой и второй цифры справа равно числу M
- Печать найденных чисел в 5 столбиков на каждой итерации
- Печать разрыва в виде символа новой строки после каждого пятого числа
- Возвращение успешного завершения программы