Contents
- 1. 교/startLine
- 2.
- 2.1. 1-, (2012-03-21)
- 2.2. 1- (2012-03-22)
- 2.3. 2- (2012-03-26)
- 2.4. 3- (2012-3-28)
- 2.5. 3-, (2012-3-28)
- 2.6. 4- (2012-4-2)
- 2.7. 4- (2012-4-3)
- 2.8. 5- (2012-4-4)
- 2.9. 5- (2012-4-5)
- 2.10. 4- (2012-4-5)
- 2.11. 6- (2012-4-9) + 7- (2012-4-9)
- 2.12. 8 (2012-5-1) - ,
- 2.13. 9(2012-5-9) - ,
- 2.14. 10(2012-5-22) - ,
- 2.15. 11(2012-5-23) - ,
- 2.16. 12(2012-7-19)
- 2.17. 13(2012-7-20)
- 2.18. 2012-7-30
- 2.19. 2012-8-2
2.1.3. 기 ¶
- 라 단게 려고 변 대만 말 는데, 단게 려고 까 무 내 단 뭔 모르는 내 다 끝나렸다. 그렇다고 느냐고 면 그것 닌 느낌. 로는 로 면 더 게 까 다. 경 따라는 다른 방법 모르겠만... 든 는 것과 가르는 것 다르다는 것 느낀 다. - 민관
- 매가 기다려 ㅋㅋㅋㅋㅋ -
- 로가 기대대 ㅋㅋㅋㅋㅋㅋㅋㅋㅋㅋㅋㅋㅋㅋㅋ - 박
2.2.3. 기 ¶
- 민관 - 단게 가 C문법 고는 부 보기, 만들보기, 명, gcc 법. 단 문과 단 문법까 고 는 것 같다. 긴 많 는데 그래 각보다 렵는 다. 로는 더 겠다.
- - 는 범를 고 로 방 대 기 다. 다는 모르는 것들 대 배고 는 것 배겠다.
2.3.2. 과 ¶
- 된 반복문로 기 - 당 게 반복문 다. 각 듯

int main()
{
int num1 , num2 = 1, num3, num4 = 2;
printf(" 를 력\n");
scanf("%d", &num1);
num3 = num1 - 1;
while(num2 <= num1){
while(num3 < num1){
printf("*");
num3++;
}
printf("\n");
num3 = num3 - num4;
num2 = num2 + 1;
num4++;
}
return 0;
}
- 달력
2.3.3. 기 ¶
- 박 - 늘 문 대 내 배고 느낌 고 문는 러 류가 다는것 고 로 문법 더 겠다는것 각다.
- 민관 - 문 대 (if문법, switch.. for...) 몇몇 문 들(switch break, 반복문 료..) 그리고 면 가 관 보 부들 대 명( 로그래밍, python, 다른 c들) 각보다 매럽 대 는데 1:1라 그런 교 다. 그리고 가 각보다 다 부 관 가고 문 는 것 같 보기 다. 내기들 C를 배기가 꽤 들 까 는데 로 if문나 for문 문법 가 빠른 것 같 놀랐다. printf, scanf나 기 리기 c 기본문법 고 단 기 다.
2.5.3. 기 ¶
- 단게 , 대 다. 그 swap 를 만들 보고 문 대 기를 다. 가 로 를 그대로 달 고 값 복다는 것 기 대 기로 들갔다. 개로 기 가 고민던 부 를 떤 밍 는가는데, 무래 call-by-value 문 대 기를 면 를 꺼내는 것 가 과 까 다. 그 는 로 그림 로그램 메모리 구가 떻게 되는 대 명 고 변를 값 기는 방법(call-by-reference) 기다. 그리고 malloc 메모리를 당는 것과 배과 관 대 다루다. 개 느낌로는 는 극 것 같 느 내 는 기가 려 느낌 다. 대 메모리 구를 그림로 기 게 다고 각는데, 그래 를 기 는 문 까 다. 는 C 런런 부 문 많는데 무래 C 래 부 미가 는 것 같다. 그리고 무래 를 더 구 까 는 각 든다. - 민관
- 기 를 swap 구, 값 변. 그리고 malloc 기 더 게 는 법 . 다 malloc 로그램 구 보고 다. -
- , 변 , malloc , fflush() , getchar() , 메모리 heap과 stack , (int)a *(*(int a)) , OS 기(DWORD 기를 따라다. 32bit/64bit),
봐 것 - 디깅, 가변 , 복. -
2.6.3. 기 ¶
- 던 swap 대 단게 복 고 swap 문 대 보다. 그리고 개념과 를 는 방법 로 나갔다. 느끼는 만 call-by-value 문 리기 를 들고 나는 것 가 로 느끼게 되는 것 같다. 그리고 개념 명 기 것 같고. 그 는 대 부 단락되고 나 럼 malloc나 가 부 는데 가 대 문 고 그 다른 부 다루다 보 가 늦다. 그래 는 가 가 다고 각는 만 나가는 것 괜다고 본다. 그리고 로 목는 단 둔 목까 무 는 것다. 래 다 것들 담겨는 만 목만 루 괜 C 력 길러 까 다. - 민관
- 대 대략 개념 - 복만 달되면 나듯 다.
.
메모리 구 + - 변 그 변 + 값 기...데 그림로 명 게 다. - 박
2.7.3. 과 ¶
- 배 뒤기 - 배 값 로 뒤는 .
// void reverseArr(int **arr, int arrLen); // int arr[10]; reverseArr(&arr, 10);
2.9.2. 기 ¶
2.10.2. 기 ¶
- 구 맞 를 나갔다. 래 목는 랑 같 ( )까 나가는 것는데, 모랐다. 다 대는 더 다루 까 다 들 다 모 더 다루는 련 각다. - 민관
- 늘 동당(malloc)과 구, 구 , typedef 대 개념리를 고 그 대 단 메모리 그림 게 근 다. 또, 구 구 근 방법 대 고 대 다 많 를 다. 다 다 배과 를 보고 그 대 를 것 같다. -
2.11.2. 기 ¶
- 기 기를 둔 를 로 렸다. ㅠㅠㅠㅠㅠㅠㅠㅠㅠㅠ
- 모 두 , 모 끝나고 두 린 말 긴 다. ;;;; 로는 나 랑 게 구 문법과 대 단게 다룰 각는데 가 구가 대 기를 면 기가 많 다른 방로 러갔. 단 구가 를 관 (구)과 관 () 공기 라고 말 는데 그래 부 닿 떨는 다. 런 부 로 경 보 면 될 것 같. (관 관리 로그램나 ) , 랑 개 만들 보게 나 는 게 괜 까 다. 나 봐. - 민관
2.12.2. 기 ¶
- 경던 : 를 만드는 . 드 리. 구 복.
봐 것 : reverse(number) - 배 뒤는
던 : 때문 ...미...던 기 되 고, 대 가 높 듯 다. 늘 C러 많 느껴 다. 공다 보람 느껴다. -
- 구 문법 대 복과 ' 로그래밍' 대 다루다. 복 끝나고 렸 까 것고 것 뒤 던 로그래밍 부다. 내 로그램 미단()로 개는 드를 고 껍데기를 만든 내물 나가는 방다. 개로 내 꼭 다루고 던 내 반 당는 부라 고민 많 는데, 그래 기는 것 같다. 다로는 가르 나머 반 대 봐 것 같다. - 민관
2.12.3. 과 ¶
- 래 같 를 만듭다.
- 꼭 reverse 나로 만들 는 다.
늘 던 내 각면 를 만드는 다고 각는 부
가로 를 만들 다. 려 더 들로 나는 다.
// 를 로 면 를 뒤 돌려다. // 123 면 321 리. 100 면 1 리. 120 면 21 리. int reverse(int number);
2.13.2. 기 ¶
- Callback(winapi 기면) + winapi.co.kr
문과 관련된 5가. + .
늘 를 봐 그냥 ... 그렇구나 그런 느낌.
배다는 것 보다는 기 가까 느낌다. - 박
- 문과 관련된 들과 CallBack 개념과 구 배다.
려 느낌 들기는 만 볼 만 다.
C가 function 로그래밍라는 더 깊 게 된다.
구 가 면 겠다. -
- 로 문과 문 다루는 만 맞 다. 그런데 무래 못 게 늘던 나 다. 문 들 단 만 들 보고 는 것 다면 보고 긴 데, 그래 다들 그런 것 보나 경 로 는 만 그런 들 는 가는 것 나 까 는데 각보다 늘군. 단 명만 기 때문가. 그래 굳 문과 관련 를 다룬 것 C 문 단 char *가 닌 나 로 보고 그 관련된 () 공다는 것 각봤면 다. - 민관
2.13.3. 과 - 린더 만들기 ¶
- Calender.h - 만들 들. 더 늘려 관 다.
// 달 달력 력는 다.
void printCalender(int nameOfDay, int year, int month);
// 달 날 (nameOfDay)과 막 날 를 1~endDayOfMonth까 력다.
void printDate(int nameOfDay, int endDayOfMonth);
// 달 1 부 만 ('\t') 다.
void printFirstTab(int nameOfDay);
// 달력 머리 부(, , , ) 력다.
void printHeader(int year, int month);
// 다 달 날 반다.
int calculateNameOfNextMonthFirstDay(int nameOfDay, int year, int month);
// 당 달 막 날 반다.
int calculateNameOfLastDay(int nameOfDay, int year, int month);
// 달 .
bool isLeapYear(int year);
// 각 달 막 날 를 반다.
// 단 switch-case문로 루 며, 2 대는 달 를 다.
int endDayOfMonth(int year, int month);
// 각 를 문 값 반다. (ex. 0-"Sun", 1-"Mon" ...)
// 단 switch-case문로 루 다.
char *printMonthName(int i);
- main.cpp
#include <stdio.h>
#include "Calender.h"
int main(int argc, char *args[]) {
// year (nameOfDay) 력는 부.
int year = 0, nameOfDay = 0;
printf("Enter the year : ");
scanf("%d", &year);
printf("Enter the name of day(0:sun ~ 6:sat) : ");
scanf("%d", &nameOfDay);
// 1~12 력는 부.
for ( int month = 1; month <= 12; month++ ) {
printCalender(nameOfDay, year, month);
nameOfDay = calculateNameOfNextMonthFirstDay(nameOfDay, year, month);
}
return 0;
}
- sample output - 1부 12까. 력 게 고 면 ('\t') 면 됩다.
January, 2012
-------------------------------------------------
Sun Mon Tue Wed Thu Fri Sat
1 2 3 4 5 6 7
8 9 10 11 12 13 14
15 16 17 18 19 20 21
22 23 24 25 26 27 28
29 30 31
2.13.4. 기 ¶
- strcat(str1, str2)를 str1 린는데 력 나는가.
People p; strcat 문가 다. p를 기(People p = {0};) 고 면
p.name 기 값로 는 것 같다. 그래 strcat 면 p.name 뒷부(p.name99 뒷부) "길동" 내 붙다.
런 기 는 p를 기 고 나 memset(p.name, 0, sizeof(char)*100); 는 방법 다.
#include <stdio.h>
#include <string.h>
typedef struct People{
char gender;
int age;
char name[100];
char real_name[100];
} People;
int main()
{
char str1[100] = "abc";
char str2[100] = "aaa";
People p;
strcat(p.name, "길동");
strcat(str1, str2);
printf("%s", str1);
getchar();
return 0;
}
2.14.1. 내 ¶
- 를 더 다루 봤면 는 기 구를 보고 다는 기가
구를 만 를 만들 봤다.
- 로 대로 는 로그램 만들 본다는 가 것 같다.
그리고 addAccount() deleteAccount()는 나 가 될 것다.
#include <stdio.h>
typedef struct Account {
char *name;
int money;
} Account;
typedef struct AccountArray {
struct Account **accounts;
int currentAccountNumber;
int maxLength; // 배 때는 길를 관리는 구를 만들 면 다.
} AccountArray;
Account *createAccount(char *name); // Account 깔끔게 당기 는 문 가 것다.
AccountArray *createAccountArray(int maxLength);
void addAccount(AccountArray *accountArray, char *name);
bool isFull(AccountArray *accountArray); // 배 다 면 떻게 면 까??????
AccountArray *extendArray(AccountArray *before); // 다 배 로 다.
void deleteAccount(AccountArray *accountArray, char *name); // 배 ? 구멍만 뻥 뚫두면 되나?
void deposit(AccountArray *accountArray, char *name, int money); // accountArray 내부 로 교 가 겠.
void withdraw(AccountArray *accountArray, char *name, int money);
void addAccountMenu();
void deleteAccountMenu();
void depositMenu();
void withdrawMenu();
main.cpp
#include <stdio.h>
#include "Account.h"
int main(int argc, char *argv[]) {
int select = 0;
// 가 변들 것로 .
while ( true ) {
printf("select menu : ");
printf("1: 가\n");
printf("2: \n");
printf("3: \n");
printf("4: \n");
scanf("%d", &select);
switch ( select ) {
case 1:
addAccountMenu();
break;
case 2:
deleteAccountMenu();
break;
case 3:
depositMenu();
break;
case 4:
withdrawMenu();
break;
default:
break;
}
}
return 0;
}
2.15.1. 내 ¶
////////////////////////////////////// 기본 , 기본 + char a; // a ? 1. 메모리 a 그려보기. a = ?? // 값로 기 보기. int b; // b ? 1. 메모리 b 그려보기. b = ?? // 값로 기 보기. char c[10]; // c ?, 1. 과 동 0로 기 보기., 2. 반복문 다 기 보기., 3. c[0] ? char *d; // d ? char 10개 량 배로 과 동 기 보기. // c d를 각각 메모리 그려보기. . ??? // []를 c 근 보기. ??? // 가능 방법로 d 근 보기. ??? // 가능 방법로 c 근 보기. // array[0] == *(array + 0) 배나 나 당 대 근라는 는 동게 근 다. //////////////////////////////////////// , + Person p; // p ? 1. 메모리 p 모 그려보기. ??? // p 내물 근보기. Person pArr[10]; // pArr ? 1. 메모리 pArr 모 그려보기. ??? // pArr 0 내물 근보기 Person *p2; // p2 ? 1. 메모리 p2 모 그려보기. ??? // p2 기 보기. ??? // p2 내물 근보기. Person *ppa[10] // ppa ? 1. 메모리 ppa 모 그려보기., 2. ppa[0] ? 3. ppa[0] 기 보기. 4. ppa[0] 내물 근 보기. Person **ppb // ppb ? 1. 메모리 ppb 모 그려보기., 2. ppb[0] ? 3. ppb[0] 기 보기., 4. ppb[0] 내물 근 보기.
2.16.1. 내 ¶
- AccountArray 관련된 들 만들기.
- createAccount(char *name) Account *를 반는가.
Account makeAccount(char *name) {
Account account;
account.money = 0;
account.name = (char *)malloc(sizeof(char) * (strlen(name)+1));
strcpy(account.name, name);
return account;
}
void addMoney(Account account, int money) {
account.money += money;
}
그냥 Account를 반게 만든 다 들 보면 를 다.Account를 그냥 겨게 되면 call-by-value로 Account 복본 가고 money를 가기 때문
본 Account는 무런 변가 다.
- extendArray .
2.17.1. 내 ¶
- 복.
- LinkedList 개념.
- ArrayList(Array) LinkedList 교.
- LinkedList 구 들과 구 경 는 부들(경 ).
- LinkedList.h
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
typedef int Data;
typedef struct Node {
Data data;
Node *nextNode;
} Node;
typedef struct LinkedList {
int length;
Node *headNode;
} LinkedList;
LinkedList *createList();
Node *createNode(Data data);
void deleteList(LinkedList *linkedList); // LinkedList까 .
void addData(LinkedList *linkedList, Data data); // LinkedList 맨 뒤 Data를 가 Node 가.
void removeData(LinkedList *linkedList, Data data); // 당는 Data를 가 Node .
Node *getData(LinkedList *linkedList, int position); // 당는 index를 가 Node를 반.
void clearList(LinkedList *linkedList); // LinkedList Node들 .
void printList(LinkedLIst *linkedList);
2.17.2. 드들 ¶
#include "LL.h"
LinkedList *createList(){
LinkedList *res;
res = (LinkedList *)malloc( sizeof(LinkedList) );
(*res).headNode = NULL;
(*res).length = 0;
return res;
}
Node *createNode(Data data){
Node *res;
res = (Node *)malloc( sizeof(Node) );
(*res).data = 0;
(*res).nextNode = NULL;
return res;
}
void deleteList(LinkedList *linkedList){
clearList(linkedList);
free(linkedList);
}
void addData(LinkedList *linkedList, Data data){
Node *node = createNode( data );
Node *temp = linkedList->headNode;
for(;temp->nextNode != NULL;){
temp = temp->nextNode;
}
temp->nextNode = node;
}
void removeData(LinkedList *linkedList, Data data){
int onoff = 0; //for duty of switch
Node *remove = linkedList->headNode;
if( remove->data == data ){
free( remove ); //If the object is headNode
onoff = 1;
}
if( onoff == 0 && remove->nextNode->data == data ){
free( remove->nextNode ); //If the object is the nextNode of headNode
onoff = 1;
}
for(; onoff == 0 && remove->nextNode->data != data;){ //...
remove = remove->nextNode;
}
remove->nextNode = remove->nextNode->nextNode; // remove remove-n remove-n-n
free(remove->nextNode); // remove ~ remove-n-n , free remove-n
}
Node *getData(LinkedList *linkedList, int position){
Node *get = linkedList->headNode;
for( int i = 0 ; i < position ; i++ ){
get = get->nextNode;
}
return get;
}
void clearList(LinkedList *linkedList) {
Node *now = (*linkedList).headNode;
Node *next;
for( ; (*now).nextNode != NULL ; ){ //now 다 는동 반복
next = (*now).nextNode; //next는 now 다
free( now ); //now를 free
now = next; //next를 now로 당김
}
free( now ); //now를 free
}
int lengthOf(LinkedList *linkedList){
int length = 0;
Node *temp = linkedList->headNode;
for( ; temp->nextNode != NULL ; length++ ){
temp = temp->nextNode;
}
return length;
}
void printList(LinkedList *linkedList){
Node *temp = linkedList->headNode;
for( ; temp->nextNode != NULL ; ){
printf("%d\t", temp->data);
temp = temp->nextNode;
}
printf("\n");
}
2.18.1. 드 ¶
int main() {
Stack *stack = createStack();
assert(stack->elementNumber == 0);
assert(stack->head == NULL);
push(stack, 10);
assert(stack->elementNumber == 1);
assert(peek(stack)->data == 10);
push(stack, 20);
assert(stack->elementNumber == 2);
assert(peek(stack)->data == 20);
assert(pop(stack)->data == 20);
assert(stack->elementNumber == 1);
Node *result = pop(stack);
assert(result->data == 10);
assert(isEmpty(stack));
return 0;
}










