Проверка числа на свойство Армстронга на C

CBeginner
Практиковаться сейчас

Введение

В этом лабораторном практикуме мы изучим, как проверить, является ли заданное число числом Армстронга, используя программу на языке C. Сначала мы будем считывать целое число от пользователя, затем вычислять сумму каждой цифры, возведенной в степень, равную общему количеству цифр, и, наконец, выводить, является ли число числом Армстронга или нет.

Программа будет сопровождать пользователя по этому процессу шаг за шагом, от считывания входных данных до определения, является ли число числом Армстронга.

Чтение целого числа

В этом шаге мы изучим, как считать целое число от пользователя в программе на языке C для проверки, является ли оно числом Армстронга.

Сначала создадим новый файл C в каталоге проекта:

cd ~/project
nano armstrong.c

Теперь напишем начальный код для чтения целого числа:

#include <stdio.h>

int main() {
    int number;

    // Запросить у пользователя ввод числа
    printf("Введите число для проверки на число Армстронга: ");

    // Считать целое число со стандартного ввода
    scanf("%d", &number);

    // Вывести введенное число для проверки ввода
    printf("Вы ввели: %d\n", number);

    return 0;
}

Компилируем и запускаем программу:

gcc armstrong.c -o armstrong
./armstrong

Пример вывода:

Введите число для проверки на число Армстронга: 153
Вы ввели: 153

Рассмотрим код подробнее:

  • scanf("%d", &number) считывает целое число из ввода пользователя
  • &number передаёт адрес памяти переменной number
  • printf() используется для запроса ввода у пользователя и отображения введенного числа

Вычисление суммы каждой цифры, возведенной в степень количества цифр

В этом шаге мы изменим нашу предыдущую программу, чтобы вычислить сумму каждой цифры, возведенной в степень, равную общему количеству цифр.

Откройте файл armstrong.c:

cd ~/project
nano armstrong.c

Обновите код для вычисления суммы цифр:

#include <stdio.h>
#include <math.h>

int main() {
    int number, originalNumber, remainder, digitCount = 0;
    long long digitSum = 0;

    // Запросить у пользователя ввод числа
    printf("Введите число для проверки на число Армстронга: ");
    scanf("%d", &number);

    // Сохранить исходное число для последующего сравнения
    originalNumber = number;

    // Подсчитать количество цифр
    while (number != 0) {
        number /= 10;
        digitCount++;
    }

    // Сбросить число к исходному значению
    number = originalNumber;

    // Вычислить сумму каждой цифры, возведенной в степень количества цифр
    while (number != 0) {
        remainder = number % 10;
        digitSum += pow(remainder, digitCount);
        number /= 10;
    }

    // Вывести результаты
    printf("Количество цифр: %d\n", digitCount);
    printf("Сумма цифр, возведенных в степень: %lld\n", digitSum);

    return 0;
}

Скомпилируйте программу с библиотекой математических функций:

gcc armstrong.c -o armstrong -lm
./armstrong

Пример вывода:

Введите число для проверки на число Армстронга: 153
Количество цифр: 3
Сумма цифр, возведенных в степень: 153

Ключевые понятия:

  • digitCount отслеживает количество цифр
  • pow(remainder, digitCount) возводит каждую цифру в степень, равную общему количеству цифр
  • number % 10 извлекает последнюю цифру
  • number /= 10 удаляет последнюю цифру на каждой итерации
  • long long используется для обработки потенциально больших сумм цифр

Вывод, является ли число числом Армстронга

В этом шаге мы завершим проверку числа Армстронга, сравнив исходное число с вычисленной суммой цифр.

Откройте файл armstrong.c:

cd ~/project
nano armstrong.c

Обновите код, чтобы определить и вывести, является ли число числом Армстронга:

#include <stdio.h>
#include <math.h>

int main() {
    int number, originalNumber, remainder, digitCount = 0;
    long long digitSum = 0;

    // Запросить у пользователя ввод числа
    printf("Введите число для проверки на число Армстронга: ");
    scanf("%d", &number);

    // Сохранить исходное число для последующего сравнения
    originalNumber = number;

    // Подсчитать количество цифр
    while (number != 0) {
        number /= 10;
        digitCount++;
    }

    // Сбросить число к исходному значению
    number = originalNumber;

    // Вычислить сумму каждой цифры, возведенной в степень количества цифр
    while (number != 0) {
        remainder = number % 10;
        digitSum += pow(remainder, digitCount);
        number /= 10;
    }

    // Проверить, является ли число числом Армстронга
    if (digitSum == originalNumber) {
        printf("%d — число Армстронга.\n", originalNumber);
    } else {
        printf("%d — не число Армстронга.\n", originalNumber);
    }

    return 0;
}

Скомпилируйте программу:

gcc armstrong.c -o armstrong -lm
./armstrong

Примеры вывода:

Введите число для проверки на число Армстронга: 153
153 — число Армстронга.

Введите число для проверки на число Армстронга: 154
154 — не число Армстронга.

Ключевые понятия:

  • Сравнение digitSum с originalNumber
  • Если они равны, то это число Армстронга
  • Программа обрабатывает различные сценарии ввода

Резюме

В этом лабораторном практикуме вы научитесь вводить целое число с клавиатуры, вычислять сумму каждой цифры, возведенной в степень, равную общему количеству цифр, и определять, является ли число числом Армстронга. Первый шаг включает в себя запрос у пользователя ввода числа и его сохранение в переменной. Второй шаг фокусируется на вычислении суммы каждой цифры, возведенной в степень, равную общему количеству цифр, которая затем сравнивается с исходным числом для проверки, является ли оно числом Армстронга.