Вычисление степеней и показателей в C

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

Введение

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

Чтение Основания и Показателя

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

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

cd ~/project
nano power_calculation.c

Теперь введите следующий код для чтения основания и показателя:

#include <stdio.h>

int main() {
    int base, exponent;

    // Запрос ввода основания
    printf("Enter the base number: ");
    scanf("%d", &base);

    // Запрос ввода показателя
    printf("Enter the exponent: ");
    scanf("%d", &exponent);

    // Вывод введенных значений
    printf("Base: %d\n", base);
    printf("Exponent: %d\n", exponent);

    return 0;
}

Теперь скомпилируем и запустим программу:

gcc power_calculation.c -o power_calculation
./power_calculation

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

Enter the base number: 5
Enter the exponent: 3
Base: 5
Exponent: 3

Описание кода:

  • Функция scanf() используется для чтения целочисленного ввода от пользователя
  • %d — спецификатор формата для целых чисел
  • &base и &exponent передают адреса памяти, где будут храниться введенные значения
  • Программа просто считывает и отображает значения основания и показателя.

Этот шаг закладывает основу для вычисления степеней, сначала получив необходимые данные от пользователя.

Использование Цикла или Функции pow()

В этом шаге вы изучите два метода вычисления степеней в C: с помощью цикла и с использованием встроенной функции pow() из библиотеки math.

Сначала изменим предыдущий файл power_calculation.c, чтобы реализовать вычисление степени:

cd ~/project
nano power_calculation.c

Метод 1: Использование Цикла

#include <stdio.h>

int calculate_power_loop(int base, int exponent) {
    int result = 1;
    for (int i = 0; i < exponent; i++) {
        result *= base;
    }
    return result;
}

int main() {
    int base, exponent;

    printf("Enter the base number: ");
    scanf("%d", &base);

    printf("Enter the exponent: ");
    scanf("%d", &exponent);

    int power_result = calculate_power_loop(base, exponent);

    printf("%d raised to the power of %d is: %d\n", base, exponent, power_result);

    return 0;
}

Метод 2: Использование Функции pow()

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

int main() {
    int base, exponent;

    printf("Enter the base number: ");
    scanf("%d", &base);

    printf("Enter the exponent: ");
    scanf("%d", &exponent);

    // Примечание: pow() возвращает double, поэтому мы приводим к int
    int power_result = (int)pow(base, exponent);

    printf("%d raised to the power of %d is: %d\n", base, exponent, power_result);

    return 0;
}

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

gcc power_calculation.c -o power_calculation -lm

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

Enter the base number: 2
Enter the exponent: 3
2 raised to the power of 3 is: 8

Описание кода:

  • Метод цикла вручную умножает основание на себя exponent раз
  • Функция pow() из math.h предоставляет встроенное вычисление степени
  • Флаг -lm необходим для линковки математической библиотеки при компиляции
  • Мы приводим результат pow() к типу int, чтобы соответствовать нашему целочисленному вычислению.

Вывод Результата

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

Изменим файл power_calculation.c:

cd ~/project
nano power_calculation.c

Добавьте следующий расширенный код:

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

void print_power_result(int base, int exponent, int result) {
    // Базовый формат вывода
    printf("Basic Result: %d^%d = %d\n", base, exponent, result);

    // Отформатированный вывод с выравниванием
    printf("Formatted Result: %2d raised to the power of %2d equals %5d\n",
           base, exponent, result);

    // Научная запись для больших чисел
    printf("Scientific Notation: %d^%d = %.2e\n", base, exponent, pow(base, exponent));
}

int calculate_power_loop(int base, int exponent) {
    int result = 1;
    for (int i = 0; i < exponent; i++) {
        result *= base;
    }
    return result;
}

int main() {
    int base, exponent;

    printf("Enter the base number: ");
    scanf("%d", &base);

    printf("Enter the exponent: ");
    scanf("%d", &exponent);

    int power_result = calculate_power_loop(base, exponent);

    // Вызов функции для вывода результатов
    print_power_result(base, exponent, power_result);

    return 0;
}

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

gcc power_calculation.c -o power_calculation -lm

Запустите программу:

./power_calculation

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

Enter the base number: 5
Enter the exponent: 3
Basic Result: 5^3 = 125
Formatted Result:  5 raised to the power of  3 equals   125
Scientific Notation: 5^3 = 1.25e+02

Описание кода:

  • print_power_result() демонстрирует несколько форматов вывода
  • Базовый вывод показывает простое вычисление
  • Отформатированный вывод использует спецификаторы ширины для выравнивания
  • Научная запись полезна для больших чисел
  • %.2e отображает число в научном формате с 2 десятичными знаками.

Резюме

В этом лабораторном практикуме вы изучили, как считывать значения основания и показателя степени от пользователя, а затем вычислять степень двумя различными методами: с помощью цикла и встроенной функции pow(). Вы реализовали функцию вычисления степени с помощью цикла и вызов функции pow(), а затем сравнили результаты. Это позволило вам понять различные подходы к вычислению степеней и показателей степени в программировании на языке C.