[코딩 자율학습단 17기] 20일차

네버릭스·2025년 11월 4일
post-thumbnail

// 2025년 10월 31일


Day 20 : 마무리

오늘은 코딩 자율학습단 17기, 마지막 날이다.
마지막 날이니, 각 챕터별 셀프체크를 통해 복기하는 시간을 가지려고 한다.

프로그래밍의 기초 : 변수와 상수, 입력과 출력

Q. 경찰 조서 쓰기 프로그램을 활용해 다음과 같이 신발 쇼핑몰의 회원 가입 프로그램을 만들어 보세요.

--- 회원 정보 ---
이름       :
아이디     :
나이       :
생일       :
신발 크기  :

조건대로 반복하기 : 반복문

Q. 별표(*)가 다음과 같이 출력되도록 이중 반복문으로 코드를 작성해 보시오.

*****
****
***
**
*

조건에 따라 다른 일 하기 : 조건문

Q. 카페 메뉴의 가격을 계산하는 프로그램을 조건문으로 만들어 보세요.

<조건>

  1. 커피 1잔의 가격은 4,500원입니다.
  2. 샌드위치 1개의 가격은 6,000원입니다.
  3. 샌드위치 구매 시 커피 가격이 할인되어 잔당 3,500원입니다(수량 제한 없음).
// (예시1) 커피 1잔, 샌드위치 0개 구매 시
주문하신 메뉴의 총 금액은 4500원입니다.

// (예시2) 커피 0잔, 샌드위치 1개 구매 시
주문하신 메뉴의 총 금액은 6000원입니다.

// (예시3) 커피 2잔, 샌드위치 1개 구매 시
주문하신 메뉴의 총 금액은 13000원입니다.

같은 일 한곳에서 처리하기 : 함수

Q. 영화의 상영 시간 정보를 분(minute)에서 시간 + 분으로 변환해 표시하는 프로그램을 함수로 만들어 보세요.

<조건>

  1. 함수의 이름은 convert_time으로 합니다.
  2. 함수는 전달값으로 영화의 상영 시간 정보인 분에 해당하는 정수형 값 1개를 받습니다.
  3. 전달받은 분을 시간 + 분 단위로 변환해 출력합니다.
  4. 함수의 반환값은 없습니다.
// (예시1) 전달값이 118일 때
1시간 58분

// (예시2) 전달값이 138일 때
2시간 18분

// (예시3) 전달값이 60일 때
1시간 0분

// (예시4) 전달값이 30일 때
0시간 30분

여러 데이터 한번에 저장하기 : 배열과 문자열

Q. 어느 학생이 치른 시험의 총점과 평균을 구하는 프로그램을 배열로 만들어 보세요.

<조건>

  1. 배열에는 5과목의 시험 성적이 주어지며 범위는 0~100 사이의 정수입니다.
  2. 총점은 정수로, 평균은 실수로 표현하되 소수점 이하 첫째 자리까지 출력합니다.
// (예시) 시험 성적이 76, 84, 80, 92, 96일 때
총점은 428점, 평균은 85.6점입니다.

메모리 주소 관리하기 : 포인터

Q. 배열의 특정 요소 값을 바꾸는 프로그램을 포인터로 만들어 보세요.

<조건>

  1. square라는 이름의 함수를 정의합니다. 이 함수는 전달값으로 어느 변수의 메모리 주소 1개를 정수형 포인터 변수로 받고, 반환값은 없습니다.
  2. 전달값으로 받은 메모리 주소의 값이 홀수이면 그대로 두고, 짝수이면 그 값의 제곱으로 변경합니다. 예를 들어, 주소의 값이 3일 때는 홀수이므로 그대로 두고, 4일 때는 짝수이므로 4의 제곱인 16으로 변경합니다.
  3. main()함수에 다음과 같이 정수형 배열을 선업합니다. 이 배열을 크기가 10이고, 1부터 10까지의 정수가 순서대로 저장됩니다.
int arr[10] = { 1, 2, 3, 4, 5, 6, 7, 8, 9, 10 };
  1. 반복문을 이용해 배열을 순서대로 순회하면서 배열의 각 요소의 주소를 전달값으로 square()함수를 호출합니다.
  2. 앞의 작업이 완료되면 새로운 반복문을 이용해 배열을 순서대로 순회하면서 각 요소의 값을 출력합니다.
// (예시) 실행결과
1, 4, 3, 16, 5, 36, 7, 64, 9, 100

배열에 배열 더하기 : 다차원 배열

Q. 무인 자판기 프로그램을 다차원 배열을 이용해 만들어 보세요.

<조건>

  1. 무인 자판기에는 상품 총 12개가 각각 세로 3, 가로 4 크게의 공간에 진열되어 있습니다.
  2. 각 상품은 1부터 12까지의 번호로 구성되어 있습니다.
  3. 전체 상품 목록을 출력합니다.
  4. 사용자로부터 1~12의 상품 번호를 입력받습니다.
  5. 입력받은 번호가 유효하다면 해당 상품 정보를 출력하고 프로그램을 종료합니다.
  6. 입력받은 번호가 유효하지 않다면 잘못 입력했다는 문장을 출력하고 프로그램을 종료합니다.

다양한 자료형 하나로 묶기 : 구조체

Q. 구조체를 이용해서 도서 관리 프로그램을 만들어 보세요.

<조건>

  1. 다음과 같은 도서 정보가 담긴 구조체를 정의합니다. 각 도서는 번호(ID), 제목, 대출 가능 여부(0 : 대출 중, 1 : 대출 가능) 정보를 가집니다.
struct book
{
   int id; // 번호(ID)
   char * title; // 제목
   int available; // 0 : 대출 중, 1 : 대출 가능
};
  1. 구조체 배열을 이용해 예시와 같이 도서 4권을 정의합니다. 각 도서의 번호는 순서대로 1, 2, 3, 4입니다.
C 입문편, 파이썬 기본편, 자바 기본편, 파이썬 중급편
  1. 전체 도서 정보를 출력합니다.
  2. 사용자로부터 도서 번호를 입력받습니다.
  3. 해당 도서가 현재 대출 중이면 반납, 대출 가능한 상태면 대출로 처리합니다.
  4. 사용자로부터 -1을 입력받을 때까지 3~5단계를 반복합니다. 사용자가 -1을 입력하면 프로그램을 종료합니다.

파일에 데이터 저장하기 : 파일 입출력

Q. 영어 단어 공부를 위한 퀴즈 프로그램을 만들어 보세요.

<조건>

  1. 메모장을 열고 다음과 같이 영어 단어와 뜻을 띄어쓰기로 구분해 입력합니다.
book 책
price 가격
window 창문
  1. 파일명을 word.txt로 저장합니다. 이때 인코딩은 ANSI로 변경하여 C 프로그램에서 한글이 깨지지 않게 합니다.

💡 인코딩 ANSI
C 프로그램(정확히는 C 프로그램이 실행되는 Windows 콘솔 창)은 'ANSI(CP949)'라는 언어만 알아들을 수 있다.
그런데 메모장(파일)이 자꾸 'UTF-8'이라는 언어로 말을 걸면 서로 의사소통이 안 돼서 글자가 깨지는 것이다.
// 요즘은 UTF-8을 기본값으로 많이 사용한다.
UTF-8 : 영어는 1바이트, 한글은 3바이트로 처리
ANSI : 영어는 1바이트, 한글은 2바이트로 처리

  1. 프로그램에서는 word.txt 파일을 읽어 와서 순서대로 하나씩 뜻을 보여 준 뒤에 사용자로부터 영어 단어를 입력받아 정답 여부를 출력하고 다음 단어로 넘어갑니다. 이 작업은 반복문으로 총 3회 반복합니다.


20일차 후기

셀프체크 코드들을 풀기 전에 각 챕터별 부분을 한번 쭉~ 복습하고 나서 풀어보니, 답지를 보지 않고도 답지랑 완전히 똑같은 코드를 작성했을 때 쾌감이 장난 아니였다.
막히는 부분 없이 술술 풀었던 것 같다. 확실히 성장한 것이 느껴진다!!

20일이라는 시간이 되게 순식간에 지나간 것만 같다.
벌써 책 한 권을 다 완독했다고? 라는 생각이 들면서, 벌써 이만큼이나 했구나! 라는 생각이 같이 든다.
굉장히 뿌듯하다. 그럼 이만 마지막 후기 글을 작성하러 가야겠다!


이미지 출처 : https://cafe.naver.com/gilbutitbook (길벗 코딩 자율학습단 공식 카페)
그 외의 모든 코딩 화면은 직접 작성하고, 실행하였습니다.

profile
도망친 곳에 낙원은 없다.

0개의 댓글