본문 바로가기

분류 전체보기

(26)
문자열 오늘은 문자열에 대해 간단하게 정리하려고 한다. :-) 문자는 프로그램 안에 숫자로 저장한다. 이때 대응되는 숫자는 ASCII코드를 참고한다. 이런 문자들을 배열에 저장하면 문자열이다. 문자 1개는 '작은 따옴표'로 값을 표시하고, 문자열은 "큰 따옴표"로 표시한다. 문자열의 끝을 표시하기 위해 '\0'이나 'NULL'문자를 사용한다. 예를 들어 hello라는 문자를 문자열에 저장한다고 하면, #include int main(void){ char str[6]="hello"; return 0; } str문자열 안에는 다음과 같이 저장된다. 따라서 문자열을 선언할 때는 꼭 '\0'가 들어갈 공간까지 생각해주자. 참고) 한글의 경우 한 글자에 2byte이므로 문자열 크기를 생각할 때 넉넉하게 두배로 생각하면 ..
문자열 예제: strcmp를 이용하여 사전순서로 정리 (오름차순/내림차순 정리) 오늘은 문자열을 오름차순이나 내림차순으로 정리하는 예제를 풀어볼 것이다. 이 예제는 strcmp를 사용하는 것을 익히기 위한 문제였는데 하다가 도저히 감이 안 잡혀서 찾아봤는데 내가 원하는 방법이 안 나와서 꼭꼭 예제와 풀이를 적어두고 싶었다. :-) 문제 -> 풀이 -> 코드 순서로 되어있어요! [ 문제 ] 20보다 작은 양의 정수 n을 입력받고 n개의 문자열을 입력받으세요. 문자열의 사전 순서로 가장 앞에 있는 문자열을 출력하세요. (단 문자열은 모두 소문자로 이루어져 있으며 길이가 20을 넘지 않습니다. 같은 문자열은 없습니다.) [ 풀이 ] 우선 굵은(?) 길을 생각해보자. 이 예제는 strcmp를 사용해야 하기 때문에 #include 를 적어야 한다. n개의 문자열을 받아야 하고 각 문자열은 길..
구조체 선언 / struct / 구조체 멤버 / typedef 오늘은 구조체를 선언하고 사용하는 방법들에 대해 간단히 정리하겠다. :-) 현재까지 사용해 온 기본 자료형으로는 char, int, double 등이 있다. 만약에 우리가 자료형을 만들 수 있다면 기본 자료형을 새롭게 만드는 일은 당연히 불가능하다. 하지만 기본 자료형을 가지고 새로운 자료형을 정의하는 것은 가능하다. 구조체는 하나 이상의 변수 (일반 변수, 포인터, 배열 등)를 그룹 지어서 새로운 자료형을 정의하는 것이다. 이러한 구조체는 왜 사용하는 것일까? 그것은 몇 가지 예시들만 봐도 코드의 이해라던지 관리라던지 등의 이유로 사용하는 것이 편한다는 것을 알게 될 것이다. 예를들어 좌표를 저장하려고 한다면(위도와 경도 등) 두 개의 변수(때에 따라서는 세 개)가 필요하다. 두 개..
369게임 박수치기; while문, if문 문제, 풀이, 답 순서로 되어있어요! :-) [문제] "369! 369! 369!" 벌주를 걸고 369 게임을 하게 되었어요. 틀리면 벌주를 마셔야 해요! 긴장하는 저를 위해 369 힌트를 줄 수 있나요? 차례에 부를 숫자 n을 입력받고, 불러야 할 숫자나 박수를 예시에 맞게 출력하세요.(박수는 clap으로 출력합니다.) [풀이] 369 게임은 부른 숫자에 3이나 6이나 9가 있으면 그 수만큼 박수를 치는 게임이에요. 예를 들어, 13이라는 숫자는 3이 하나 있으니 박수를 한번 치면 되고, 81이라는 숫자에는 3이나 6이나 9가 없기 때문에 81을 그대로 말하면 됩니다. 우선, 변수부터 생각을 해봅시다. 부를 숫자 n을 선언하고, 3이나 6이나 9가 없을 때 숫자를 그대로 불러야 하니까 n값을 복사할 o..
주문한 카페 메뉴 총 금액 출력하기; while문, switch문 문제, 풀이, 답 순서로 되어있어요! :-) [문제] 다음은 카페의 메뉴판이다. 1. 아메리카노 3000원 2. 아이스아메리카노 3500원 3. 카페라떼 3800원 4. 데자와 700원 5. 카라멜마끼아또 4300원 6. 블루레몬에이드 3500원 주문은 번호로 입력 받습니다. 주문의 번호가 0일 때까지 입력 받은 음료의 금액을 모두 더합니다. 주문의 번호가 0이면 반복을 종료하고 총금액을 출력합니다. (단 주문은 번호로 입력 받고 1~6의 정수입니다.) [풀이] 일단은 변수 선언부터 합니다. 주문을 번호로 입력받을 변수 n 선언. 총액을 저장할 변수 sum 선언하고 0으로 초기화 (더해주는 값을 저장하기 때문에 처음 초기화 값은 0) int sum = 0, n; 주문은 번호로 입력을 받으니까 switch..
재귀함수; 팩토리얼 계산, 피보나치 수열 오늘은 재귀 함수에 대해 정리해 볼 것이다. :-) 요즘 기말고사 시즌이던데.. ^-^ 셤 공부 화이팅..! 재귀함수 간단 정리 팩토리얼 계산 함수 피보나치 수열 재귀 함수(recursive function)는?? 재귀적인 (Recursive) 관계를 지닌 문제를 해결하기 위해 사용하는 함수이다. 재귀 함수는 자기 자신을 호출하는 것이 특징이다. 재귀 함수는 무한반복될 수 있으므로 조심해서 프로그래밍 해야 한다. 재귀 함수 안에 자기자신을 호출하는 명령어가 두 개 이상이여도 된다. 대표적인 예제로는 factorial과 fibonacci가 있다. 예제로는 팩토리얼 함수를 만드는 것이 있다. 참고) 팩토리얼이란? 1부터 어떤 양의 정수 n까지의 정수를 모두 곱한 것을 말..
반복문 정리: while문 오늘은 C에서 사용하는 반복문에 대해 정리를 해볼 것이다. :-) 반복문이란? 특정 명령문을 반복적으로 수행하기 위해 필요하다. 반복문을 표한하기 위해 C에서는 while, do-wile, for문을 제공한다. 반복문의 문법은 어렵지 않으나, 실제 활용하는 연습이 필요하다. 조건이 참이면 계속 반복한다. 조건이 거짓인 순간 반복을 종료한다. 실행 순서는 다음과 같다. 조건 체크 -> 참이면 명령문 실행 -> 조건 체크 -> 참이면 명령문 실행... -> 조건 체크 -> 거짓이면 명령문 종료 조건 체크 단계에서 조건이 거짓이면 반복을 중단한다. while문은 조건 체크를 먼저 하기 때문에 반복하고 싶은 명령문이 한 번도 실행되지 않을 수 있다. 이 점을 주의하자. < while문 문법 ..
switch 구문 : switch / case / break / default 오늘은 조건문 중에서 switch 구문을 정리해보자. :-) switch 구문은 if ~ else 구문처럼 조건에 따라 프로그램의 흐름을 분기하는 목적으로 사용된다. 복잡한 if ~ else 문장을 간결하게 보이도록 만들 수도 있다. 만들 수도 있다고 한 것은 사용될 수 있는 영역이 if ~ else에 비해 제한적이기 때문이다. switch 문은 제어식의 값에 따라 실행할 문장을 결정하게 된다. 제어식(control expression)을 계산하여 그 값을 각 case절의 c1, c2, ··· 등과 비교한다. 여기서 c1, c2, ···은 정수여야 한다. case 절 중에서 제어식의 값과 일치하는 값이 있으면 관련된 case 절의 문장들이 차례로 실행되다가 break 문에 도달하면 switch 문은 종료..