3-1 로그인 실패 3회 시 계정 잠금 프로그램

문제설명

로그인 시스템에서 사용자가 비밀번호를 틀릴 때마다 실패 횟수를 저장해야 합니다. 실패 횟수는 함수가 여러 번 호출되어도 유지되어야 하며, 실패가 3회가 되면 계정을 잠금 처리해야 합니다. 올바른 비밀번호가 입력되면 실패 횟수는 다시 0으로 초기화됩니다.

 

목표

  • static 지역변수를 실제로 활용할 수 있다.
  • 함수가 여러 번 호출될 때 상태를 기억해야 하는 상황을 구현할 수 있다.
  • 단순 카운트가 아니라 조건 분기와 상태 초기화를 함께 사용할 수 있다.

요구사항

  • void login(int password) 함수를 작성하세요.
  • 실제 비밀번호는 1234라고 가정합니다.
  • 비밀번호가 틀리면 "로그인 실패"를 출력합니다. 
  • 실패 횟수가 3회가 되면 "계정이 잠겼습니다."를 출력하세요.
  • 올바른 비밀번호가 입력되면 "로그인 성공"을 출력하고 실패 횟수를 0으로 초기화하세요.
  • 계정이 잠긴 뒤에는 더 이상 로그인할 수 없고 "잠긴 계정입니다."를 출력하세요.

출력예시

 
로그인 실패!(1회)
로그인 실패!(2회)
로그인 성공!
로그인 실패!(1회)
로그인 실패!(2회)
로그인 실패!(3회)
계정이 잠겼습니다.!
잠긴계정입니다.

 

 

코드예시

더보기
#include <stdio.h>

void login(int password){
    const int PW = 1234;
    const int MAX_FAILE_COUNT = 3;
    static int fail_count = 0;
    static int account_locked = 0;

    if (account_locked){
        printf("잠긴계정입니다.\n");
        return;
    }

    if (password == PW){
        printf("로그인 성공!\n");
        fail_count = 0;
    }    
    else {
        if (fail_count < MAX_FAILE_COUNT){
            fail_count++;
            printf("로그인 실패!(%d회)\n", fail_count);
            
            if (fail_count == MAX_FAILE_COUNT){
                printf("계정이 잠겼습니다.!\n");
                account_locked = 1;
            }
        }
    }

}

int main(void){
    login(1111);
    login(1112);
    login(1234);
    login(1113);
    login(1114);
    login(1113);
    login(1114);

    return 0;
}
 
 
 

3-2. 게임 전체 점수와 보너스 계산 프로그램

문제설명

간단한 게임 프로그램을 작성하세요.

  • 게임의 전체 점수는 프로그램 전체에서 공유되어야 합니다.
  • 한 라운드가 실행될 때마다 보너스 점수는 항상 5점부터 시작해야 합니다.
  • play_round() 함수가 호출될 때:
    • 보너스 점수 5점을 출력하고
    • 전체 점수에 10점을 더한 뒤
    • 현재 전체 점수를 출력하세요.

이 기능을 3번 반복하도록 프로그램을 작성하세요.

 

목표

  • 전역변수와 auto 지역변수의 역할 차이를 구분할 수 있다.
  • 문제 설명만 보고 적절한 변수 위치를 설계할 수 있다.

요구사항

  • 전체 점수는 함수 밖에서 선언하세요.
  • 보너스 점수는 함수 안에서 선언하세요.
  • main()에서 play_round()를 3번 호출하세요.

출력예시

bonus = 5
total score = 10
bonus = 5
total score = 20
bonus = 5
total score = 30
 

코드예시

더보기
#include <stdio.h>

int total_score = 0;

void play_round() {
    int bonus = 5;
    total_score += 10;

    printf("bonus = %d\n", bonus);
    printf("total score = %d\n", total_score);
}

int main() {
    play_round();
    play_round();
    play_round();

    return 0;
}
 

 

3-3. 키오스크 주문 누적 및 품절 처리 프로그램

 

문제설명

카페 키오스크에서 음료 주문과 재고 조회를 처리하는 프로그램을 작성하세요. 단, 판매제품은 drink 1개로 제한합니다.

현재 음료의 재고는 3개입니다. 사용자가 주문하면 재고는 1개 감소합니다. 또한 사용자는 언제든지 현재 남은 재고를 확인할 수 있어야 합니다. 따라서 재고는 주문 함수와 재고 조회 함수가 함께 사용할 수 있어야 합니다. 재고가 0개가 되면 더 이상 주문을 받을 수 없으며 "품절되었습니다."를 출력하세요.

 

목표

  • 여러 함수가 함께 사용해야 하는 값은 전역변수로 관리해야 함을 이해한다.
  • 전역변수와 함수의 역할을 구분할 수 있다.

요구사항

  • order_drink() 함수를 작성하세요.
    • 재고가 있으면 재고를 1 감소시키고 "주문 완료"를 출력하세요.
    • 재고가 없으면 "품절되었습니다."를 출력하세요.
  • print_inventory() 함수를 작성하세요.
    • 현재 남은 재고를 출력하세요.
  • main()에서 아래 순서대로 함수를 호출하세요.
    1. 재고 출력
    2. 주문
    3. 재고 출력
    4. 주문
    5. 주문
    6. 재고 출력
    7. 주문

출력예시

현재 재고: 3
주문 완료
현재 재고: 2
주문 완료
주문 완료
현재 재고: 0
품절되었습니다.
 
 
코드예시
더보기
#include <stdio.h>

int stock = 3;

void order_drink() {
    if (stock > 0) {
        stock--;
        printf("주문 완료\n");
    } else {
        printf("품절되었습니다.\n");
    }
}

void print_inventory() {
    printf("현재 재고: %d\n", stock);
}

int main() {
    print_inventory();

    order_drink();
    print_inventory();

    order_drink();
    order_drink();
    print_inventory();

    order_drink();

    return 0;
}​
 
 
 

+ Recent posts