[ 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);
}
[ 결과 화면 ]
Author And Source
이 문제에 관하여([ CS50 코칭스터디 ] 2주차), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다 https://velog.io/@_ddaezi/CS50-코칭스터디-2주차저자 귀속: 원작자 정보가 원작자 URL에 포함되어 있으며 저작권은 원작자 소유입니다.
우수한 개발자 콘텐츠 발견에 전념 (Collection and Share based on the CC Protocol.)