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; }