본문 바로가기

반응형

학습공간

(76)

[3주차] prinf 함수 scanf 함수 조금 깊게, 반복문 6장 printf 와 scanf 함수에 대한 고찰 printf 함수 이야기 - printf 함수는 문자열을 출력하는 함수이다. 그리고 특수 문자 출력도 가능하다. 이렇게 출력을 하면 앞집 강아지가 말했다. “멍! 멍!” 정말 귀엽다. 라고 출력이 되야 한다. 하지만 컴파일 시켜보면 에러 메시지가 뜨게 된다. 왜냐하면 컴퓨터는 문자열1과 문자열2를 인식 하는데 그 사이에 정체불명의 글귀가 끼어 있기 때문이다. 그렇다면 큰 따옴표 같은 특수문자들의 출력은 어떻게 할까? 출력하고자 하는 특수문자 앞에 \(백 슬래쉬)를 붙여서 출력하게 하면 된다. 다양한 종류의 특수 문자 (외울 필요는 없다. 필요할 때 참고) 특수 문자 의 미 \a 경고음 소리 발생 \b 백스페이스(backspace) \f 폼 피드(form ..
[2주차] 변수와 연산자, 데이터 표현 방식과 자료형 3장 변수와 연산자 - 변수 : 어떠한 데이터를 저장할 수 있는 메모리 공간에 붙여진 이름. 변경이 가능한 수 - 연산자 : ( + - * / %) 처럼 연산을 요구할 때 사용되는 기호 덧셈, 뺄셈, 곱셈, 나눗셈, 나눈 나머지 - 상수 : 변하지 않는 수 변수 - 정수형 변수 : char형, int형, long형 - 실수형 변수 : float형, double형 val 이라는 정수형 메모리 공간을 할당하고 그곳에 20 이란 값을 대입한 것. 변수를 선언 해놓고 아무것도 대입하지 않은 상태에는 쓰레기 값이 저장되어 있음. 보통 0으로 초기화 선언 후 대입연산이 이루어지고 있다. 또는 선언과 동시에 대입연산이 이루어지고 있다. 하지만 연산 후 선언을 하게 되면 컴파일 오류가 발생한다. 그러므로 보통 변수의 ..
[1주차] C언어와 프로그램의 기본 구성 위 자료는 대학시절 "윤성우의 열혈강의 C 프로그래밍" C언어 서적을 정독하고, 새로 입학한 신입생 후배들을 위해 만든 세미나 자료이다. 비전공자나 초급자가 이해하기 쉽도록 기초를 기반으로 만들었으며, 다같이 Microsoft Visual Studio C 프로그램을 키고 천천히 따라오다 보면 C언어개론 파악에 도움이 될 것이다. 첫번째 시간에는 가볍게 C언어가 무엇인지? 자연어를 어떻게 기계가 이해하는지? 간단한 코드로 시작해보자. 1장 C 언어의 개론적 이야기 - C 언어는 프로그래밍 언어로 컴퓨터와 대화를 하기 위한 일종의 대화 수단이다. ex) 한국인 통역사 일본인 한국어, 영어 가능 영어, 일본어 가능 일본어 가능 한국인이 영어로 의사 전달. 통역사는 영어를 받아들이고 일본어로 전달. 한국인 컴파..
[8장] 트리 트리에 대한 문제풀이 내용이다. 트리(Tree)란? - 부모-자식 관계로 정의하고, 부모에서 자식으로 간선이 이어져 있는 유향 그래프이다. (비선형 자료구조) - 부모가 없는 최상위 노드를 루트 노드라고 한다. - 자식 노드가 2개 이상이며 최대 자식 노드가 n개인 트리를 n진 트리라고 부른다. 트리 형태의 자료구조는 일상에서도 자주 쓰이는데, 다항식의 수식을 계산하거나 검색창의 자동완성 기능이 이에 해당한다. 주로 데이터의 좌측과 우측에 자식 노드의 주소를 가리키는 연결 리스트를 이용해 이진 트리를 구현하는데, 연습문제와 함께 트리의 개념과 순회 방법을 익히고 일차원 배열 이진 트리(Binary Tree)를 구현해보자. (배열의 인덱스 값과 이진 트리의 노드 값을 일치 시키고, 부모 노드 값 n 밑에 ..
[7장] 연결 리스트 II 지난 6장에서는 연결 리스트의 구현과 몇 가지 함수를 추가해 보았다. 이번 7장에서는 아래 링크의 가장 하단에 있는 연결 리스트로 구현한 스택과 큐를 리뷰하도록 해보자. #include #include typedef int element; typedef struct ListNode{ element data; struct ListNode *link; } ListNode; void error(char *message){ fprintf(stderr, "%s\n", message); } ListNode *create_node(element data, ListNode *link){ ListNode *new_node; new_node = (ListNode *)malloc(sizeof(ListNode)); if(ne..
[6장] 연결 리스트 I 연결 리스트에 대한 문제풀이 내용이다. 연결 리스트(Linked List)란? - 각 노드가 데이터와 포인터를 가지고 한 줄로 연결되어 있는 방식으로 데이터를 저장하는 자료구조이다. - 메모리를 동적 할당을 기반으로 구현하여 데이터를 효율적으로 관리할 수 있는 장점이 있다. (배열 한계 극복) [데이터 | 다음 노드의 주소] → [데이터 | 다음 노드의 주소] → [데이터 | 마지막 NULL] 구조체 리스트 노드를 생성하고 삽입하고 삭제하는 것부터 연습해보고, 리스트 탐색, 합병, 역순, 대체 및 삽입의 위치를 맨앞, 맨뒤 조정하여 함수를 구현해보자. 연결 리스트(주석과 함께 한줄씩 분석) #include #include typedef int element; typedef struct ListNode{ ..
[5장] 큐 큐에 대한 문제풀이 내용이다. 큐(Queue)란? - 한마디로 표현하면 선입선출, FIFO(First In, First Out) 형태의 자료구조이다. - 자동차로 비유하면 각 지방도로에서 톨게이트를 거쳐서 인라인하게 데이터가 줄지어 지는것이다. (순차적 처리) 앞서 활용한 배열 리스트 형태로 원형 큐를 구현해보자. ※ 연결 리스트 큐는 6장 연결 리스트를 선행한 뒤 참조 (배열의 인덱스 한계가 있기 때문에 마지막 인덱스에 도달하면 첫번째 인덱스를 가리키게 한다.) 원형 배열 큐 #include #include #define MAX_QUEUE_SIZE 100 typedef int element; typedef struct{ element queue[MAX_QUEUE_SIZE]; int front, rear..
[4장] 스택 스택에 대한 문제풀이 내용이다. 스택(Stack)이란? - 한마디로 표현하면 선입후출, FILO(First In, Last Out) 형태의 자료구조이다. - 주로 컴파일러에서 괄호검사를 시행할 때, '{' 중괄호는 '}' 중괄호, '('소괄호는 ')' 소괄호로 닫혀야 한다. (Syntex Check) - 여러 줄의 구문들이 섞여 있을 때 쌍쌍의 짝이 맞아 떨어져서 최종적으로 스택이 공백이 되어있어야 정상일 것이다. 예제를 통해 괄호검사 프로그램을 정적 배열로도 구현해보고, 포인터 변수를 활용한 동적 배열로도 구현해 볼 것이다. 스택을 구현하기에 앞서 사용할 배열 리스트를 학습해보자. 정적 배열 리스트 #include #include #define MAX_LIST_SIZE 100 typedef int el..
반응형