[ CS50 코칭스터디 ] 2주차

[ 기본 개념 ]

stdio.h : c언어의 표준 라이브러리, 핵심 입력과 출력 함수들을 정의, 헤더 파일
cs50.h : CS50 라이브러리
string.h : c언어의 표준 라이브러리로, 메모리 블록이나 문자열 처리 함수들을 정의
strcmp(str1, str2) : str1과 str2를 비교하는 함수

[ 출처 ]

1) [위키백과] C 표준 라이브러리
2) [CS50 Docs] CS50 Library for C
3) [opentutorials.org] c언어 기초


1번 문제

주문 후, 남은 재고량과 매출액을 구하는 프로그램

[ 주어진 조건 ]

기존 수박의 재고량 : 5개
수박 가격 : 10000원
부가세 : 물품 가격의 10%
매출액 : 물품의 가격과 부가세를 합산한 가격으로 구함
주문건수 : 3건

[ 예시 화면 ]

1) 기본 버전

주어진 조건을 가지고 남은 재고량과 매출액을 구하는 방법

[ 소스 코드 ]

// 주문 후, 남은 재고량과 매출액을 구하는 프로그램
#include <stdio.h>

int main(void)
{
    /*
     stock : 재고량
     price : 가격
     vat : 부가세비율(%)
     orders : 주문건수
     sales : 매출액(부가세포함)
    */ 

    // 주어진 조건에 맞춰 값을 각 변수에 저장
    int stock = 5;
    int price = 10000;
    float vat = 10;
    int orders = 3;
    int sales = orders * price * (1 + vat/100);

    // 주어진 조건에 맞춰 값을 출력
    printf("주문건수 : %d건\n", orders);
    printf("기존 재고량 : %d개\n", stock);
    printf("남은 재고량 : %d개\n", stock -= orders);
    printf("매출액(부가세포함) : %d원\n", sales);
}

[ 결과 화면 ]

2) 응용버전 ( 사용자 정의 함수 사용 )

주문량을 입력 받아, 남은 재고량과 매출액을 구하는 방법

[ 소스 코드 ]

// 주문 후, 남은 재고량과 매출액을 구하는 프로그램
#include <cs50.h>
#include <stdio.h>

int get_order(int);
int reset_stock(int, int);
int get_sales(int, int);
void print_order(int, int);
void print_sales(int, int);

int main(void)
{
    /*
     stock : 재고량
     price : 가격
     vat : 부가세비율
     orders : 주문건수
     sales : 매출액(부가세포함)
    */ 

    // 조건에 맞춰 값을 각 변수에 저장

    int stock = 5;
    int price = 10000;
    int sales;

    int orders = get_order(stock);

    stock = reset_stock(stock, orders);
    sales = get_sales(orders, price);

    print_sales(stock, sales);
}

int get_order(int stock)
{
    int orders;

    do
    {
        orders = get_int("주문 수량 입력 : ");
        
        if (orders > stock)
        {
            printf("재고가 부족합니다. (재고량 : %i개)\n", stock);
        }
    }
    while (orders > stock);
    print_order(stock, orders);
    return orders;
}

int reset_stock(int stock, int orders)
{
    return stock - orders;
}

int get_sales(int orders, int price)
{
    return orders * price * 1.1;
}

void print_order(int stock, int orders)
{
    printf("주문건수 : %i건\n", orders);
    printf("기존 재고량 : %i개\n", stock);
}

void print_sales(int stock, int sales)
{
    printf("남은 재고량 : %i개\n", stock);
    printf("매출액(부가세포함) : %i원\n", sales);
}

[ 결과 화면 ]

2번 문제

목표금액 입력 시, 만기 금액을 예측하는 프로그램

[ 주어진 조건 ]

목표금액(원금) : 입력받음
저축기간 : 1년
이율 : 원금의 1.2%

[ 소스 코드 ]

// 목표금액 입력 시, 만기 금액을 예측하는 프로그램
#include <cs50.h>
#include <stdio.h>

// 함수 선언
float result(float, float);

int main(void)
{
    /*
     money : 목표금액(원금)
     intrst : 이자(%)
     result_money : 만기 금액
    */ 

    // 주어진 조건에 맞춰 값을 각 변수에 저장
    float money;
    float intrst = 1.2;
    float result_money;
    char again;
    
    // again이 'y'이면, 반복 수행
    do
    {
        printf("\n");
        money = get_float("목표금액(원금)을 입력해주세요!\n");
        result_money = result(money, intrst);
        printf("\n");
        printf("1년 만기 시, 해당 목표금액(%.0f원)의 만기금액은 %.0f원 입니다.\n", money, result_money);
        again = get_char("다시 알아보시겠습니까? (y/n)\n");
    }
    while (again == 'y');
    return 0;
}

// 원금과 이자를 입력하여 만기금액을 출력하는 함수
float result(float money, float intrst)
{
    return money * (1 + intrst/100);
}

[ 결과 화면 ]

3번 문제

요일 입력 시, 해당 요일의 메뉴를 출력하는 프로그램

[ 주어진 조건 ]

월요일 : 청국장
화요일 : 비빔밥
수요일 : 된장찌개
목요일 : 칼국수
금요일 : 냉면
토요일 : 소불고기
일요일 : 오삼불고기

[ 예시 화면 ]

[ 소스 코드 ]

#include <cs50.h>
#include <stdio.h>
#include <string.h>

// 함수 선언
void print_menu(string);

int main(void)
{
    // 요일을 입력받아 day 변수에 저장
    string day = get_string("요일을 입력하세요 : ");

    // print_menu 함수 수행
    print_menu(day);
}

// 요일을 입력하여 음식 메뉴를 출력하는 함수
void print_menu(string day)
{
    string menu;
    
    // day가 무슨 요일인지 문자열을 비교하여 판단하고, 참인 조건 수행
    if (!strcmp(day, "월요일"))
    {
        menu = "청국장";
    }
    else if (!strcmp(day, "화요일"))
    {
        menu = "비빔밥";
    }
    else if (!strcmp(day, "수요일"))
    {
        menu = "된장찌개";
    }
    else if (!strcmp(day, "목요일"))
    {
        menu = "칼국수";
    }
    else if (!strcmp(day, "금요일"))
    {
        menu = "냉면";
    }
    else if (!strcmp(day, "토요일"))
    {
        menu = "소불고기";
    }
    else if (!strcmp(day, "일요일"))
    {
        menu = "오삼불고기";
    }
    else
    {
        printf("잘못된 입력입니다.\n");
        return;
    }

    printf("%s : %s\n", day, menu);
}

[ 결과 화면 ]

좋은 웹페이지 즐겨찾기