S SmartDocs
Series: C++ cpp 74 lines · Updated 2026-04-03

main.cpp

C++/Part4_現代CPP/Ch19_命名空間與多檔案專案/header_example/main.cpp

// main.cpp — 示範如何使用多檔案專案中的 MathUtils 類別
// 編譯方式(需要與 math_utils.cpp 一起編譯):
//   g++ -std=c++17 -Wall -o program main.cpp math_utils.cpp
// 或使用 Makefile:
//   make

#include <iostream>
#include <string>
#include "math_utils.h"

void printSeparator(const std::string& title) {
    std::cout << "\n" << std::string(50, '=') << "\n";
    std::cout << title << "\n";
    std::cout << std::string(50, '=') << "\n";
}

int main() {
    printSeparator("MathUtils 多檔案專案示範");

    // --- 四則運算 ---
    printSeparator("四則運算");

    double a = 15.5, b = 4.2;
    std::cout << a << " + " << b << " = " << MathUtils::add(a, b) << "\n";
    std::cout << a << " - " << b << " = " << MathUtils::subtract(a, b) << "\n";
    std::cout << a << " * " << b << " = " << MathUtils::multiply(a, b) << "\n";
    std::cout << a << " / " << b << " = " << MathUtils::divide(a, b) << "\n";

    // 測試除以零的例外處理
    try {
        std::cout << "嘗試 10 / 0 = ";
        std::cout << MathUtils::divide(10.0, 0.0) << "\n";
    } catch (const std::invalid_argument& e) {
        std::cout << "捕獲例外:" << e.what() << "\n";
    }

    // --- 階乘 ---
    printSeparator("階乘");

    for (int i = 0; i <= 10; ++i) {
        std::cout << i << "! = " << MathUtils::factorial(i) << "\n";
    }

    // 測試負數的例外處理
    try {
        std::cout << "嘗試 (-1)! = ";
        std::cout << MathUtils::factorial(-1) << "\n";
    } catch (const std::invalid_argument& e) {
        std::cout << "捕獲例外:" << e.what() << "\n";
    }

    // --- 質數判斷 ---
    printSeparator("質數判斷");

    std::cout << "1 到 50 之間的質數:";
    for (int i = 1; i <= 50; ++i) {
        if (MathUtils::isPrime(i))
            std::cout << i << " ";
    }
    std::cout << "\n";

    // --- 最大公因數 ---
    printSeparator("最大公因數 (GCD)");

    std::cout << "gcd(12, 8) = " << MathUtils::gcd(12, 8) << "\n";
    std::cout << "gcd(100, 75) = " << MathUtils::gcd(100, 75) << "\n";
    std::cout << "gcd(17, 13) = " << MathUtils::gcd(17, 13) << "\n";
    std::cout << "gcd(0, 5) = " << MathUtils::gcd(0, 5) << "\n";
    std::cout << "gcd(-24, 18) = " << MathUtils::gcd(-24, 18) << "\n";

    printSeparator("程式結束");

    return 0;
}

Related articles