728x90

c언어 125

C언어 오목 예제

출처 : KGCA 게임 아카데미(http://www.kgcaschool.com/). 수업 예제 파일. omok.h #include // gotoxy(), SetConsoleCursorPosition() #include #include #include //kbhit(), _getch() #define RIGHT77 #define LEFT75 #define UP72 #define DOWN80 #define ENTER13 #define WHITEWIN2 #define BLACKWIN3 //함수 포인터 선언 void(*game) (); enum STATE { GAME_INIT = 0, KEY_CHECK, GAME_DRAW, GAME_CHECK }; voidkeyCheck(); voidgotoxy(int x, i..

C언어 마방진 채우기 예제

출처 : KGCA 게임 아카데미(http://www.kgcaschool.com/). 수업 예제 파일. #include #include #include #define USE_ARRAY #undef USE_ARRAY #ifdef USE_ARRAY int Data[20][20]; //크기가 iSize인 마방진을 만든다. void MagicSquare(int iSize); int main() { int iSize; //마방진 입력 while (true) { printf("마방진의 크기를 3~19사이의 홀수로 입력하세요 :"); scanf_s("%d", &iSize); if (iSize >= 3 && iSize < 20) { break; } } //마방진 계산 MagicSquare(iSize); //마방진 출력 ..

C언어 매크로 예제 (beep으로 '학교종' 연주하기)

출처 : KGCA 게임 아카데미(http://www.kgcaschool.com/). 수업 예제 파일. std.h #pragma once #include #include #include ////sound() => Beep() ////delay() => Sleep() // #define DO(t) Beep((DWORD)(131*pow(1.06f,0)),(DWORD)(300*(t)));Sleep(100); // pow(1.06f,0) == 1 / pow(1.06f,12) == 2 // Beep(진동수, 시간) //옥타브 0 1 2 3 4 5 6 7 8 // 도 016 033 065 131 262 523 1047 2093 4186 #define DO(t)Beep((DWORD)523*pow(1.06f, 0),(D..

C언어 재귀함수 예제 (하노이의 탑)

출처 : KGCA 게임 아카데미(http://www.kgcaschool.com/). 수업 예제 파일. #include void HanoiTab(int n, char from, char temp, char to); void HanoiTower(int n, char from, char temp, char to); int main() { int n; printf("원반 갯수를 입력하세요 : "); scanf_s("%d", &n); HanoiTab(n, 'A', 'B', 'C'); } // 1. 디스크는 한번에 하나씩 옮겨야 한다. // 2. 위에 놓인 디스크는 아래쪽의 디스크보다 클 수 없다. void HanoiTab(int n, char from, char temp, char to) { if (n > 0) ..

C언어 제어문 예제 (다이아 그리기)

출처 : KGCA 게임 아카데미(http://www.kgcaschool.com/). 수업 예제 파일. #include void DrawChar(char cValue); void DrawStar(int iMaxRow, int iMaxColumn, int iStartColumn, int iDir); void DrawDiamond(int iNunRow, int iNumCol); int main() { int iNumColumn = 3;//행(가로줄,위에서 아래로 셈) = Column int iNumRow = iNumColumn;//열(세로줄,좌에서 우로 셈 ) = Row //1)직접 제어문을 사용하여 출력 for (int row = 0; row < iNumRow; row++) { for (int col = 0..

C언어 파일처리 주요예제 3 (고수준 파일 입출력3)

1. 구조체 파일이 2진 파일로 저장되어 있는 경우에 읽어들여서 화면에 출력하는 프로그램 #include #include #include struct mydata { char name[10]; int clang, vb, tot; double avg; }; int main() { FILE* inp; mydata person; //파일 쓰기 fopen_s(&inp, "bin1.bin", "wb"); if (inp == NULL) { printf("파일을 열 수 없습니다. \n"); return 0; } strcpy_s(person.name, 10, "son"); person.clang = 10; person.vb = 13; person.tot = person.clang + person.vb; person.a..

C언어 이론 12. 파일처리(고수준의 파일 입출력 3. 블럭 단위 입출력 등)

내용 출처 : YES C (정보공학연구소 /생능출판사) 혼자 연구하는 C/C++ (SoEn.kr /와우북스) Ⅰ. fread()/ fwrite() // 블럭 단위 파일 입출력 함수 ① 텍스트 형식 입출력 함수는 쉽고 유용하지만 부수적인 데이터 변환을 수행해야 하므로 효율적인 방법은 아니다. ② 또한 데이터 크기에서도 텍스트 파일은 이진 파일에 비해 큰편이다. ③ 이진 파일은 저장된 데이터를 확인하기는 어렵지만 속도와 크기면에서 훨씬 유리하다. ④ 원형 int fread (char* buffer, int size, int n, FILE* fp); int fwrite(char* buffer, int size, int n, FILE* fp); ⑤ fread(buffer,size,n,fp)는 파일 포인터 fp가..

volatile 변수

주로 메모리 맵 입출력(MMIO)을 제어할 때, volatile을 선언한 변수를 사용하여 컴파일러의 최적화를 못하게 하는 역할을 한다.static int foo; void bar(void) { foo = 0; while (foo != 255); } foo의 값의 초기값이 0 이후, while 루프 안에서 foo의 값이 변하지 않기 때문에 while의 조건은 항상 true가 나온다. 따라서 컴파일러는 다음과 같이 최적화한다.void bar_optimized(void) { foo = 0; while (true); } 이렇게 되면 while의 무한 루프에 빠지게 된다. 이런 최적화를 방지하기 위해 다음과 같이 volatile을 사용한다.static volatile int foo; void bar (void) ..

C언어 파일처리 주요예제 2 (고수준 파일 입출력2)

8. 데이터 파일에서 정수를 읽은 후, 2진트리에 순서에 맞게 저장한 다음, 전위운행한 다음 정렬한 결과를 다른 파일에 정렬하여 넣는 프로그램. #include #include #include #define LEFT 0 #define RIGHT 1 typedef int DATA; struct node { DATAd; node*left; node*right; }; typedef node* BTREE; BTREE new_node(DATA d1); void add_node(BTREE parent, BTREE r_node, DATA d1, int r_1); void inorder(FILE* ofp, BTREE root); BTREE root = NULL; int main() { DATA a; int size =..

C언어 파일처리 주요예제 1 (고수준 파일 입출력1)

1. c언어로 작성된 프로그램을 읽어서 화면으로 보여주는 프로그램을 작성하세요. #include #include #include void display(FILE* fp); //화면에 출력하는 함수 int main() { char fname[20], cExit; FILE* fp; do { printf("input file name : "); gets_s(fname, 20); fopen_s(&fp,fname,"r"); if (fp == NULL) { fprintf(stderr, "cannot open this file : %s \n", fname); } else { display(fp); } printf("\n\n Any key... or 'q' to exit..."); cExit = getchar(); }..

반응형