챕터3. 실습문제

2025. 3. 27. 23:43Programming Languages/C++

3.5 실습 문제

문제 1: 구구단 출력

사용자로부터 단수를 입력받아 해당 구구단을 출력하는 프로그램을 작성하세요.

#include <iostream>

int main() {
    int dan;
    
    std::cout << "출력할 구구단 단수를 입력하세요 (2-9): ";
    std::cin >> dan;
    
    if (dan < 2 || dan > 9) {
        std::cout << "2에서 9 사이의 숫자를 입력하세요." << std::endl;
        return 1;
    }
    
    std::cout << dan << "단 구구단:" << std::endl;
    
    for (int i = 1; i <= 9; i++) {
        std::cout << dan << " x " << i << " = " << (dan * i) << std::endl;
    }
    
    return 0;
}

문제 2: 소수 판별

사용자로부터 양의 정수를 입력받아 소수(Prime Number)인지 판별하는 프로그램을 작성하세요.

#include <iostream>
#include <cmath>

int main() {
    int number;
    bool isPrime = true;
    
    std::cout << "양의 정수를 입력하세요: ";
    std::cin >> number;
    
    if (number <= 1) {
        isPrime = false;
    } else if (number == 2) {
        isPrime = true;
    } else if (number % 2 == 0) {
        isPrime = false;
    } else {
        // 홀수 약수만 검사 (최적화)
        int sqrtNum = static_cast<int>(std::sqrt(number));
        for (int i = 3; i <= sqrtNum; i += 2) {
            if (number % i == 0) {
                isPrime = false;
                break;
            }
        }
    }
    
    if (isPrime) {
        std::cout << number << "은(는) 소수입니다." << std::endl;
    } else {
        std::cout << number << "은(는) 소수가 아닙니다." << std::endl;
    }
    
    return 0;
}

문제 3: 간단한 계산기

사용자로부터 두 개의 숫자와 연산자(+, -, *, /)를 입력받아 계산 결과를 출력하는 프로그램을 작성하세요. 메뉴를 통해 반복해서 계산할 수 있도록 하고 사용자가 종료를 선택할 때까지 프로그램이 실행되도록 구현하세요.

#include <iostream>

int main() {
    double num1, num2, result;
    char op;
    char choice;
    
    do {
        std::cout << "\n간단한 계산기\n";
        std::cout << "첫 번째 숫자를 입력하세요: ";
        std::cin >> num1;
        
        std::cout << "연산자를 입력하세요 (+, -, *, /): ";
        std::cin >> op;
        
        std::cout << "두 번째 숫자를 입력하세요: ";
        std::cin >> num2;
        
        switch (op) {
            case '+':
                result = num1 + num2;
                std::cout << num1 << " + " << num2 << " = " << result << std::endl;
                break;
            case '-':
                result = num1 - num2;
                std::cout << num1 << " - " << num2 << " = " << result << std::endl;
                break;
            case '*':
                result = num1 * num2;
                std::cout << num1 << " * " << num2 << " = " << result << std::endl;
                break;
            case '/':
                if (num2 != 0) {
                    result = num1 / num2;
                    std::cout << num1 << " / " << num2 << " = " << result << std::endl;
                } else {
                    std::cout << "오류: 0으로 나눌 수 없습니다." << std::endl;
                }
                break;
            default:
                std::cout << "오류: 잘못된 연산자입니다." << std::endl;
        }
        
        std::cout << "\n계속하시겠습니까? (y/n): ";
        std::cin >> choice;
        
    } while (choice == 'y' || choice == 'Y');
    
    std::cout << "프로그램을 종료합니다." << std::endl;
    
    return 0;
}

문제 4: 피보나치 수열

사용자로부터 정수 n을 입력받아 n번째까지의 피보나치 수열을 출력하는 프로그램을 작성하세요.

#include <iostream>

int main() {
    int n;
    
    std::cout << "출력할 피보나치 수열의 항 수를 입력하세요: ";
    std::cin >> n;
    
    if (n <= 0) {
        std::cout << "양의 정수를 입력하세요." << std::endl;
        return 1;
    }
    
    std::cout << "피보나치 수열 (처음 " << n << "항): ";
    
    long long a = 0, b = 1, c;
    
    if (n >= 1) {
        std::cout << a;
    }
    
    if (n >= 2) {
        std::cout << ", " << b;
    }
    
    for (int i = 3; i <= n; i++) {
        c = a + b;
        std::cout << ", " << c;
        a = b;
        b = c;
    }
    
    std::cout << std::endl;
    
    return 0;
}

 

'Programming Languages > C++' 카테고리의 다른 글

함수 포인터와 함수 객체  (0) 2025.03.27
함수와 재귀  (0) 2025.03.27
조건부 컴파일  (0) 2025.03.27
제어 흐름 변경  (0) 2025.03.27
반복문  (0) 2025.03.27