2-1. 여러 점수 입력 후 최고점과 합격자 수 구하기

문제설명

학생 수 N을 입력받고 점수를 입력받아, 최고점과 **합격자 수(60점 이상)**를 함께 출력하는 프로그램을 작성하시오.

 

목표

  • 반복 입력 처리
  • 여러 조건을 동시에 다루기
  • 함수 분리로 역할 나누기

요구사항

  1. input_scores_and_process(int n, int *max_score, int *pass_count) 형태로 구현하거나, 반환 구조를 적절히 설계하시오.
  2. 최고점과 합격자 수를 모두 계산하시오.
  3. 입력 점수는 0~100 범위라고 가정하시오.
출력예시
학생 수 입력: 4
1번 학생 점수: 75
2번 학생 점수: 88
3번 학생 점수: 59
4번 학생 점수: 91
최고점: 91
합격자 수: 3
 
코드예시

 

#include <stdio.h>

void process_scores(int n, int *max_score, int *pass_count);

int main(void)
{
    int n;
    int max_score = 0;
    int pass_count = 0;

    printf("학생 수 입력: ");
    scanf("%d", &n);

    process_scores(n, &max_score, &pass_count);

    printf("최고점: %d\n", max_score);
    printf("합격자 수: %d\n", pass_count);

    return 0;
}

void process_scores(int n, int *max_score, int *pass_count)
{
    int i, score;

    for (i = 1; i <= n; i++)
    {
        printf("%d번 학생 점수: ", i);
        scanf("%d", &score);

        if (i == 1 || score > *max_score)
        {
            *max_score = score;
        }

        if (score >= 60)
        {
            (*pass_count)++;
        }
    }
}

 

2-2. ATM 메뉴 반복 처리 프로그램

 

문제설명

간단한 ATM 프로그램을 작성하시오. 사용자는 메뉴를 반복해서 선택할 수 있으며, 입금, 출금, 잔액 조회를 할 수 있다.

 

목표

  • 반복문 안에서 제어문 처리
  • 함수로 기능 나누기
  • 상태값(잔액) 갱신

요구사항

  1. 메뉴는 다음과 같다.
    • 1: 입금
    • 2: 출금
    • 3: 잔액조회
    • 0: 종료
  2. deposit, withdraw, print_balance 함수를 정의하시오.
  3. 잔액보다 큰 금액 출금 시 "잔액 부족"을 출력하시오.
  4. 종료 전까지 계속 반복하시오.
출력예시
1.입금 2.출금 3.잔액조회 0.종료
선택: 3
현재 잔액: 10000원

1.입금 2.출금 3.잔액조회 0.종료
선택: 2
출금액: 12000
잔액 부족
 
코드예시
#include <stdio.h>

void deposit(int *balance, int amount);
void withdraw(int *balance, int amount);
void print_balance(int balance);

int main(void)
{
    int menu;
    int amount;
    int balance = 10000;

    while (1)
    {
        printf("\n1.입금 2.출금 3.잔액조회 0.종료\n");
        printf("선택: ");
        scanf("%d", &menu);

        if (menu == 0)
        {
            break;
        }

        if (menu == 1)
        {
            printf("입금액: ");
            scanf("%d", &amount);
            deposit(&balance, amount);
        }
        else if (menu == 2)
        {
            printf("출금액: ");
            scanf("%d", &amount);
            withdraw(&balance, amount);
        }
        else if (menu == 3)
        {
            print_balance(balance);
        }
        else
        {
            printf("잘못된 메뉴입니다.\n");
        }
    }

    return 0;
}

void deposit(int *balance, int amount)
{
    *balance += amount;
    printf("%d원이 입금되었습니다.\n", amount);
}

void withdraw(int *balance, int amount)
{
    if (*balance >= amount)
    {
        *balance -= amount;
        printf("%d원이 출금되었습니다.\n", amount);
    }
    else
    {
        printf("잔액 부족\n");
    }
}

void print_balance(int balance)
{
    printf("현재 잔액: %d원\n", balance);
}

 

 

2-3. 숫자 맞히기 게임 (기회 제한)

 

문제설명

정답 숫자를 하나 정해두고, 사용자가 제한된 횟수 안에 숫자를 맞히는 프로그램을 작성하시오.

 

목표

  • 반복 + 조건 분기 + 함수 호출 결합
  • 상태 변화에 따라 다른 메시지 출력

요구사항

  1. 정답은 코드 안에서 미리 정하시오. 예: answer = 37
  2. 사용자는 최대 5번 입력할 수 있다.
  3. 입력값이 정답보다 작으면 "더 큰 수입니다."
  4. 입력값이 정답보다 크면 "더 작은 수입니다."
  5. 맞히면 즉시 종료하시오.
  6. 판정은 check_number(int input, int answer) 함수로 처리하시오.

출력예시

1번째 입력: 20
더 큰 수입니다.
2번째 입력: 50
더 작은 수입니다.
3번째 입력: 37
정답입니다!
 

 

예시코드

더보기
더보기
#include <stdio.h>

int check_number(int input, int answer);

int main(void)
{
    int answer = 37;
    int input;
    int i;
    int result;

    for (i = 1; i <= 5; i++)
    {
        printf("%d번째 입력: ", i);
        scanf("%d", &input);

        result = check_number(input, answer);

        if (result == 0)
        {
            printf("정답입니다!\n");
            break;
        }
        else if (result < 0)
        {
            printf("더 큰 수입니다.\n");
        }
        else
        {
            printf("더 작은 수입니다.\n");
        }
    }

    if (i == 6)
    {
        printf("실패! 정답은 %d입니다.\n", answer);
    }

    return 0;
}

int check_number(int input, int answer)
{
    if (input == answer)
    {
        return 0;
    }
    else if (input < answer)
    {
        return -1;
    }
    else
    {
        return 1;
    }
}

 

+ Recent posts